added sequence-specific code (create, drop and nextval)

This commit is contained in:
2026-02-17 13:31:06 +01:00
parent 80426c5293
commit 5668f1060b
17 changed files with 174 additions and 8 deletions
@@ -11,7 +11,8 @@ public:
query_drop_intermediate();
executable_query table(const table &tab);
// executable_query schema(const std::string &schema_name);
executable_query sequence(const std::string &sequence_name);
executable_query schema(const std::string &schema_name);
};
}
@@ -17,6 +17,8 @@ class query_select_intermediate : public query_intermediate
public:
explicit query_select_intermediate(const std::vector<table_column>& columns);
fetchable_query nextval(const std::string& sequence_name);
template<typename... Tables>
query_from_intermediate from(const Tables&... tables) {
std::vector<table> v { tables... };
@@ -126,6 +126,20 @@ private:
std::vector<table_column> columns_;
};
class query_select_nextval_part final : public query_part {
public:
explicit query_select_nextval_part(std::string sequence_name);
[[nodiscard]] const std::string& sequence_name() const;
private:
void accept(query_part_visitor &visitor) override;
private:
std::string sequence_name_;
};
/**
* Represents the SQL FROM part
*/
@@ -443,6 +457,19 @@ private:
std::list<table_constraint> constraints_;
};
class query_create_sequence_part final : public query_part {
public:
explicit query_create_sequence_part(std::string sequence_name);
[[nodiscard]] const std::string& sequence_name() const;
private:
void accept(query_part_visitor &visitor) override;
private:
std::string sequence_name_;
};
class query_create_schema_part final : public query_part {
public:
explicit query_create_schema_part(std::string schema);
@@ -479,6 +506,19 @@ private:
class table table_;
};
class query_drop_sequence_part final : public query_part {
public:
explicit query_drop_sequence_part(std::string sequence_name);
[[nodiscard]] const std::string& sequence_name() const;
private:
void accept(query_part_visitor &visitor) override;
private:
std::string sequence_name_;
};
class query_drop_schema_part final : public query_part {
public:
explicit query_drop_schema_part(std::string schema_);
+3
View File
@@ -45,6 +45,7 @@ protected:
void visit(internal::query_drop_key_constraint_part_by_constraint &part) override;
void visit(internal::query_select_part &part) override;
void visit(internal::query_select_nextval_part &part) override;
void visit(internal::query_from_part &part) override;
void visit(internal::query_join_table_part &part) override;
void visit(internal::query_join_query_part &part) override;
@@ -72,10 +73,12 @@ protected:
void visit(internal::query_create_table_part &part) override;
void visit(internal::query_create_table_columns_part& part) override;
void visit(internal::query_create_table_constraints_part& part) override;
void visit(internal::query_create_sequence_part &part) override;
void visit(internal::query_create_schema_part& part) override;
void visit(internal::query_drop_part &part) override;
void visit(internal::query_drop_table_part &part) override;
void visit(internal::query_drop_sequence_part &part) override;
void visit(internal::query_drop_schema_part& part) override;
static std::string build_table_name(sql::dialect_token token, const sql::dialect &d, const table& t);
@@ -17,6 +17,7 @@ class query_add_foreign_key_reference_part;
class query_add_primary_key_constraint_part;
// Select
class query_select_part;
class query_select_nextval_part;
class query_from_part;
class query_join_table_part;
class query_join_query_part;
@@ -45,12 +46,16 @@ class query_create_part;
class query_create_table_part;
class query_create_table_columns_part;
class query_create_table_constraints_part;
// Create Sequence
class query_create_sequence_part;
// Create schema
class query_create_schema_part;
// Drop common
class query_drop_part;
// Drop table
class query_drop_table_part;
// Drop sequence
class query_drop_sequence_part;
// Drop schema
class query_drop_schema_part;
}
@@ -70,6 +75,7 @@ public:
virtual void visit(internal::query_drop_key_constraint_part_by_constraint &part) = 0;
virtual void visit(internal::query_select_part &part) = 0;
virtual void visit(internal::query_select_nextval_part &part) = 0;
virtual void visit(internal::query_from_part &part) = 0;
virtual void visit(internal::query_join_table_part &part) = 0;
virtual void visit(internal::query_join_query_part &part) = 0;
@@ -97,10 +103,12 @@ public:
virtual void visit(internal::query_create_table_part &part) = 0;
virtual void visit(internal::query_create_table_columns_part &part) = 0;
virtual void visit(internal::query_create_table_constraints_part &part) = 0;
virtual void visit(internal::query_create_sequence_part &part) = 0;
virtual void visit(internal::query_create_schema_part &part) = 0;
virtual void visit(internal::query_drop_part &part) = 0;
virtual void visit(internal::query_drop_table_part &part) = 0;
virtual void visit(internal::query_drop_sequence_part &part) = 0;
virtual void visit(internal::query_drop_schema_part &part) = 0;
};