pk generator progress and sequence test progress

This commit is contained in:
2026-03-18 15:54:08 +01:00
parent 7996608f62
commit 6423bd505b
25 changed files with 152 additions and 30 deletions
@@ -15,6 +15,7 @@ class abstract_pk_generator {
public:
virtual ~abstract_pk_generator() = default;
virtual utils::result<int64_t, utils::error> next_id(const sql::executor& exec) = 0;
virtual utils::result<int64_t, utils::error> current_id(const sql::executor& exec) = 0;
[[nodiscard]] utils::generator_type type() const;
@@ -18,6 +18,7 @@ public:
explicit query_select_intermediate(const std::vector<table_column>& columns);
fetchable_query nextval(const std::string& sequence_name);
fetchable_query currval(const std::string& sequence_name);
template<typename... Tables>
query_from_intermediate from(const Tables&... tables) {
@@ -139,6 +139,19 @@ private:
std::string sequence_name_;
};
class query_select_currval_part final : public query_part {
public:
explicit query_select_currval_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
@@ -8,6 +8,7 @@ class manual_pk_generator : public abstract_pk_generator {
public:
manual_pk_generator();
[[nodiscard]] utils::result<int64_t, utils::error> next_id(const sql::executor& exec) override;
[[nodiscard]] utils::result<int64_t, utils::error> current_id(const sql::executor& exec) override;
};
}
#endif //MATADOR_MANUAL_PK_GENERATOR_HPP
+1
View File
@@ -46,6 +46,7 @@ protected:
void visit(internal::query_select_part &part) override;
void visit(internal::query_select_nextval_part &part) override;
void visit(internal::query_select_currval_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;
@@ -18,6 +18,7 @@ class query_add_primary_key_constraint_part;
// Select
class query_select_part;
class query_select_nextval_part;
class query_select_currval_part;
class query_from_part;
class query_join_table_part;
class query_join_query_part;
@@ -76,6 +77,7 @@ public:
virtual void visit(internal::query_select_part &part) = 0;
virtual void visit(internal::query_select_nextval_part &part) = 0;
virtual void visit(internal::query_select_currval_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;
@@ -12,9 +12,11 @@ public:
explicit sequence_pk_generator(const std::string& sequence_name);
utils::result<int64_t, utils::error> next_id(const sql::executor& exec) override;
utils::result<int64_t, utils::error> current_id(const sql::executor& exec) override;
private:
fetchable_query query_;
fetchable_query next_id_query_;
fetchable_query current_id_query_;
};
}
#endif //MATADOR_SEQUENCE_PK_GENERATOR_H
+4 -1
View File
@@ -2,15 +2,18 @@
#define MATADOR_TABLE_PK_GENERATOR_HPP
#include "matador/query/abstract_pk_generator.hpp"
#include "matador/query/intermediates/fetchable_query.hpp"
namespace matador::query {
class table_pk_generator : public abstract_pk_generator {
public:
table_pk_generator(const std::string& table_name, const std::string& sequence_name);
[[nodiscard]] utils::result<int64_t, utils::error> next_id(const sql::executor& exec) override;
[[nodiscard]] utils::result<int64_t, utils::error> current_id(const sql::executor& exec) override;
private:
std::string table_name;
fetchable_query next_id_query_;
fetchable_query current_id_query_;
};
}
#endif //MATADOR_TABLE_PK_GENERATOR_HPP