From 81cd8eecb257c68acaea403cfa90d45fd06c85c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Fri, 7 Feb 2025 12:52:30 +0100 Subject: [PATCH] fixed join columns --- include/matador/orm/session_query_builder.hpp | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/include/matador/orm/session_query_builder.hpp b/include/matador/orm/session_query_builder.hpp index 9d549b8..3f6a11a 100644 --- a/include/matador/orm/session_query_builder.hpp +++ b/include/matador/orm/session_query_builder.hpp @@ -198,7 +198,10 @@ public: throw query_builder_exception{query_build_error::MissingPrimaryKey}; } - append_join(sql::column{table_info_stack_.top().get().name(), table_info_stack_.top().get().definition().primary_key()->name()}, sql::column{info->get().name(), join_column}); + append_join( + sql::column{std::make_shared(table_info_stack_.top().get().name()), table_info_stack_.top().get().definition().primary_key()->name()}, + sql::column{std::make_shared(info->get().name()), join_column} + ); } } @@ -222,8 +225,14 @@ public: throw query_builder_exception{query_build_error::MissingPrimaryKey}; } - append_join(sql::column{table_info_stack_.top().get().name(), table_info_stack_.top().get().definition().primary_key()->name()}, {id, join_column}); - append_join(sql::column{id, inverse_join_column}, sql::column{info->get().name(), pk->name()}); + append_join( + sql::column{std::make_shared(table_info_stack_.top().get().name()), table_info_stack_.top().get().definition().primary_key()->name()}, + sql::column{std::make_shared(id), join_column} + ); + append_join( + sql::column{std::make_shared(id), inverse_join_column}, + sql::column{std::make_shared(info->get().name()), pk->name()} + ); } template @@ -248,8 +257,14 @@ public: const auto join_columns = join_column_collector_.collect(); - append_join(sql::column{table_info_stack_.top().get().name(), table_info_stack_.top().get().definition().primary_key()->name()}, sql::column{id, join_columns.inverse_join_column}); - append_join(sql::column{id, join_columns.join_column}, sql::column{info->get().name(), pk->name()}); + append_join( + sql::column{std::make_shared(table_info_stack_.top().get().name()), table_info_stack_.top().get().definition().primary_key()->name()}, + sql::column{std::make_shared(id), join_columns.inverse_join_column} + ); + append_join( + sql::column{std::make_shared(id), join_columns.join_column}, + sql::column{std::make_shared(info->get().name()), pk->name()} + ); } private: @@ -292,7 +307,10 @@ void session_query_builder::on_foreign_object(const char *id, Pointer &, const u if (!pk) { throw query_builder_exception{query_build_error::MissingPrimaryKey}; } - append_join(sql::column{table_info_stack_.top().get().name(), id}, sql::column{info->get().name(), pk->name()}); + append_join( + sql::column{std::make_shared(table_info_stack_.top().get().name()), id}, + sql::column{std::make_shared(info->get().name()), pk->name()} + ); } else { push(id); }