query compiler progress

This commit is contained in:
2024-02-18 18:12:00 +01:00
parent b966a7a1a7
commit a3f467a5a8
62 changed files with 1934 additions and 641 deletions
+8 -8
View File
@@ -5,13 +5,13 @@
namespace matador::sql {
record::record(std::initializer_list<column> columns)
record::record(std::initializer_list<column_definition> columns)
: columns_(columns)
{
init();
}
record::record(const std::vector<column> &columns)
record::record(const std::vector<column_definition> &columns)
: columns_(columns)
{
init();
@@ -41,7 +41,7 @@ record &record::operator=(const record &x)
return *this;
}
const std::vector<column> &record::columns() const
const std::vector<column_definition> &record::columns() const
{
return columns_;
}
@@ -51,7 +51,7 @@ bool record::has_primary_key() const
return pk_index_ > -1;
}
const column &record::primary_key() const
const column_definition &record::primary_key() const
{
if (!has_primary_key()) {
throw std::logic_error("record has no primary key");
@@ -60,13 +60,13 @@ const column &record::primary_key() const
return columns_[pk_index_];
}
const column &record::at(const std::string &name) const
const column_definition &record::at(const std::string &name) const
{
auto ref = columns_by_name_.at(name).first;
return columns_by_name_.at(name).first;
}
const column &record::at(size_t index) const
const column_definition &record::at(size_t index) const
{
return columns_.at(index);
}
@@ -82,7 +82,7 @@ record::const_iterator record::find(const std::string &column_name) const {
return it != columns_by_name_.end() ? columns_.begin() + it->second.second : columns_.end();
}
void record::append(column col)
void record::append(column_definition col)
{
auto &ref = columns_.emplace_back(std::move(col));
add_to_map(ref, columns_.size()-1);
@@ -149,7 +149,7 @@ void record::init()
}
}
void record::add_to_map(column &col, size_t index)
void record::add_to_map(column_definition &col, size_t index)
{
columns_by_name_.emplace(col.name(), column_index_pair {std::ref(col), index});
if (utils::is_constraint_set(col.attributes().options(), utils::constraints::PRIMARY_KEY)) {