From 049546f5762c78cf7cfd9bd6c0705ca8bf526a9b Mon Sep 17 00:00:00 2001 From: Jochen Topf Date: Wed, 4 Jan 2023 09:47:55 +0100 Subject: [PATCH] Refactor: Use util::string_joiner_t to assemble columns for SQL --- src/flex-table-column.cpp | 2 +- src/flex-table.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/flex-table-column.cpp b/src/flex-table-column.cpp index 570bf9cef..4af22e7d6 100644 --- a/src/flex-table-column.cpp +++ b/src/flex-table-column.cpp @@ -181,5 +181,5 @@ std::string flex_table_column_t::sql_modifiers() const std::string flex_table_column_t::sql_create() const { - return R"("{}" {} {},)"_format(m_name, sql_type_name(), sql_modifiers()); + return R"("{}" {} {})"_format(m_name, sql_type_name(), sql_modifiers()); } diff --git a/src/flex-table.cpp b/src/flex-table.cpp index 21cd16022..8beac623c 100644 --- a/src/flex-table.cpp +++ b/src/flex-table.cpp @@ -178,16 +178,17 @@ flex_table_t::build_sql_create_table(table_type ttype, std::string sql = "CREATE {} TABLE IF NOT EXISTS {} ("_format( ttype == table_type::interim ? "UNLOGGED" : "", table_name); + util::string_joiner_t joiner{','}; for (auto const &column : m_columns) { // create_only columns are only created in permanent, not in the // interim tables if (ttype == table_type::permanent || !column.create_only()) { - sql += column.sql_create(); + joiner.add(column.sql_create()); } } - assert(sql.back() == ','); - sql.back() = ')'; + sql += joiner(); + sql += ')'; if (ttype == table_type::interim) { sql += " WITH (autovacuum_enabled = off)";