Skip to content

Commit

Permalink
Merge pull request #102 from project-tsurugi/feature/id_numbering
Browse files Browse the repository at this point in the history
Changed ID numbering method.
  • Loading branch information
koh-okada committed Oct 3, 2023
2 parents 7b3844f + 9ba0e63 commit cedf26f
Show file tree
Hide file tree
Showing 12 changed files with 75 additions and 67 deletions.
2 changes: 1 addition & 1 deletion include/manager/metadata/dao/json/columns_dao_json.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ class ColumnsDaoJson : public DaoJson {
// Name of the column metadata management file.
static constexpr const char* const kTableName = "tables";
// Object ID key name for column ID.
static constexpr const char* const kOidKeyNameColumn = "column";
static constexpr const char* const kOidKeyNameColumn = "global";

/**
* @brief Find metadata object from metadata table.
Expand Down
2 changes: 1 addition & 1 deletion include/manager/metadata/dao/json/constraints_dao_json.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class ConstraintsDaoJson : public DaoJson {
// Name of the constraint metadata management file.
static constexpr const char* const kTableName = "tables";
// Object ID key name for constraint ID.
static constexpr const char* const kOidKeyNameConstraint = "constraint";
static constexpr const char* const kOidKeyNameConstraint = "global";

/**
* @brief Find metadata object from metadata table.
Expand Down
2 changes: 1 addition & 1 deletion include/manager/metadata/dao/json/index_dao_json.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ class IndexDaoJson : public DaoJson {
// Name of the index metadata management file.
static constexpr const char* const kTableName = "indexes";
// Object ID key name for index ID.
static constexpr const char* const kOidKeyNameIndex = "indexes";
static constexpr const char* const kOidKeyNameIndex = "global";

/**
* @brief Find metadata object from metadata table.
Expand Down
6 changes: 3 additions & 3 deletions include/manager/metadata/dao/json/tables_dao_json.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,11 @@ class TablesDaoJson : public DaoJson {
// Name of the table metadata management file.
static constexpr const char* const kTableName = "tables";
// Object ID key name for table ID.
static constexpr const char* const kOidKeyNameTable = "tables";
static constexpr const char* const kOidKeyNameTable = "global";
// Object ID key name for column ID.
static constexpr const char* const kOidKeyNameColumn = "column";
static constexpr const char* const kOidKeyNameColumn = "global";
// Object ID key name for constraint ID.
static constexpr const char* const kOidKeyNameConstraint = "constraint";
static constexpr const char* const kOidKeyNameConstraint = "global";

/**
* @brief Find metadata object from metadata table.
Expand Down
3 changes: 2 additions & 1 deletion include/manager/metadata/dao/postgresql/pg_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ using ResultPtr = std::unique_ptr<PGresult, std::function<void(PGresult*)>>;

static constexpr const char* const kSchemaPublic = "public";
static constexpr const char* const kSchemaTsurugiCatalog = "tg_catalog";
static constexpr const char* const kEmptyStringJson = "{}";
static constexpr const char* const kSequenceId = "tg_catalog.id_sequence";
static constexpr const char* const kEmptyStringJson = "{}";

class PgErrorCode {
public:
Expand Down
2 changes: 2 additions & 0 deletions sql/ddl.sql
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,8 @@ CREATE TABLE tg_catalog.statistics
UNIQUE(column_id)
);

CREATE SEQUENCE tg_catalog.id_sequence MINVALUE 100001;

-- INT32
INSERT INTO tg_catalog.types (format_version, generation, id, name, pg_data_type, pg_data_type_name, pg_data_type_qualified_name) values (1, 1, 23, 'INT32', 23,'integer','int4');
-- INT64
Expand Down
7 changes: 4 additions & 3 deletions src/dao/json/object_id_json.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ using boost::property_tree::ini_parser_error;
using boost::property_tree::ptree;

static ObjectId INVALID_OID = 0;
static ObjectId OID_INITIAL_VALUE = 100001;

/**
* @brief Contractor.
Expand Down Expand Up @@ -90,7 +91,7 @@ ObjectId ObjectIdGenerator::current(std::string_view metadata_name) {

auto oid = oid_data.get_optional<ObjectId>(metadata_name.data());

return oid.value_or(0);
return oid.value_or(OID_INITIAL_VALUE);
}

/**
Expand All @@ -114,7 +115,7 @@ ObjectId ObjectIdGenerator::generate(std::string_view metadata_name) {

boost::optional<ObjectId> oid =
oid_data.get_optional<ObjectId>(metadata_name.data());
ObjectId object_id = oid.value_or(0);
ObjectId object_id = oid.value_or(OID_INITIAL_VALUE);

// Generate next OID.
oid_data.put(metadata_name.data(), ++object_id);
Expand Down Expand Up @@ -150,7 +151,7 @@ ObjectId ObjectIdGenerator::update(std::string_view metadata_name,

boost::optional<ObjectId> oid =
oid_data.get_optional<ObjectId>(metadata_name.data());
ObjectId current_oid = oid.value_or(1);
ObjectId current_oid = oid.value_or(OID_INITIAL_VALUE);

// If the specified OID exceeds the current OID,
// the OID management file is updated.
Expand Down
17 changes: 9 additions & 8 deletions src/dao/postgresql/columns_dao_pg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -319,14 +319,15 @@ std::string ColumnsDaoPg::get_insert_statement() const {
boost::format query =
boost::format(
"INSERT INTO %1%.%2%"
" (%3%, %4%, %5%, %6%, %7%, %8%, %9%, %10%, %11%, %12%, %13%)"
" VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)"
" RETURNING %14%") %
kSchemaTsurugiCatalog % kTableName % ColumnName::kFormatVersion %
ColumnName::kGeneration % ColumnName::kTableId % ColumnName::kName %
ColumnName::kColumnNumber % ColumnName::kDataTypeId %
ColumnName::kDataLength % ColumnName::kVarying % ColumnName::kIsNotNull %
ColumnName::kDefaultExpr % ColumnName::kIsFuncExpr % ColumnName::kId;
" (%4%, %5%, %6%, %7%, %8%, %9%, %10%, %11%, %12%, %13%, %14%, %15%)"
" VALUES ($1, $2, nextval('%3%'), $3, $4, $5, $6, $7, $8, $9, $10, $11)"
" RETURNING %16%") %
kSchemaTsurugiCatalog % kTableName % kSequenceId %
ColumnName::kFormatVersion % ColumnName::kGeneration % ColumnName::kId %
ColumnName::kTableId % ColumnName::kName % ColumnName::kColumnNumber %
ColumnName::kDataTypeId % ColumnName::kDataLength % ColumnName::kVarying %
ColumnName::kIsNotNull % ColumnName::kDefaultExpr %
ColumnName::kIsFuncExpr % ColumnName::kId;

return query.str();
}
Expand Down
25 changes: 13 additions & 12 deletions src/dao/postgresql/constraints_dao_pg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -329,18 +329,19 @@ std::string ConstraintsDaoPg::get_insert_statement() const {
// SQL statement
boost::format query =
boost::format(
"INSERT INTO %1%.%2% (%3%, %4%, %5%, %6%, %7%, %8%, %9%, %10%,"
" %11%, %12%, %13%, %14%, %15%, %16%, %17%)"
" VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13,"
" $14, $15)"
" RETURNING %18%") %
kSchemaTsurugiCatalog % kTableName % ColumnName::kFormatVersion %
ColumnName::kGeneration % ColumnName::kName % ColumnName::kTableId %
ColumnName::kType % ColumnName::kColumns % ColumnName::kColumnsId %
ColumnName::kIndexId % ColumnName::kExpression % ColumnName::kPkTable %
ColumnName::kPkColumns % ColumnName::kPkColumnsId %
ColumnName::kFkMatchType % ColumnName::kFkDeleteAction %
ColumnName::kFkUpdateAction % ColumnName::kId;
"INSERT INTO %1%.%2% (%4%, %5%, %6%, %7%, %8%, %9%, %10%, %11%,"
" %12%, %13%, %14%, %15%, %16%, %17%, %18%, %19%)"
" VALUES ($1, $2, nextval('%3%'), $3, $4, $5, $6, $7, $8, $9, $10,"
" $11, $12, $13, $14, $15)"
" RETURNING %20%") %
kSchemaTsurugiCatalog % kTableName % kSequenceId %
ColumnName::kFormatVersion % ColumnName::kGeneration % ColumnName::kId %
ColumnName::kName % ColumnName::kTableId % ColumnName::kType %
ColumnName::kColumns % ColumnName::kColumnsId % ColumnName::kIndexId %
ColumnName::kExpression % ColumnName::kPkTable % ColumnName::kPkColumns %
ColumnName::kPkColumnsId % ColumnName::kFkMatchType %
ColumnName::kFkDeleteAction % ColumnName::kFkUpdateAction %
ColumnName::kId;

return query.str();
}
Expand Down
24 changes: 12 additions & 12 deletions src/dao/postgresql/index_dao_pg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -424,18 +424,18 @@ std::string IndexDaoPg::get_insert_statement() const {
boost::format query =
boost::format(
"INSERT INTO %1%.%2%"
" (%3%, %4%, %5%, %6%, %7%, %8%, %9%, %10%, %11%, %12%, %13%, %14%,"
" %15%, %16%)"
" VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13,"
" $14)"
" RETURNING %17%") %
kSchemaTsurugiCatalog % kTableName % ColumnName::kFormatVersion %
ColumnName::kGeneration % ColumnName::kName % ColumnName::kNamespace %
ColumnName::kOwnerId % ColumnName::kAcl % ColumnName::kTableId %
ColumnName::kAccessMethod % ColumnName::kIsUnique %
ColumnName::kIsPrimary % ColumnName::kNumKeyColumn %
ColumnName::kColumns % ColumnName::kColumnsId % ColumnName::kOptions %
ColumnName::kId;
" (%4%, %5%, %6%, %7%, %8%, %9%, %10%, %11%, %12%, %13%, %14%,"
" %15%, %16%, %17%, %18%)"
" VALUES ($1, $2, nextval('%3%'), $3, $4, $5, $6, $7, $8, $9, $10,"
" $11, $12, $13, $14)"
" RETURNING %19%") %
kSchemaTsurugiCatalog % kTableName % kSequenceId %
ColumnName::kFormatVersion % ColumnName::kGeneration % ColumnName::kId %
ColumnName::kName % ColumnName::kNamespace % ColumnName::kOwnerId %
ColumnName::kAcl % ColumnName::kTableId % ColumnName::kAccessMethod %
ColumnName::kIsUnique % ColumnName::kIsPrimary %
ColumnName::kNumKeyColumn % ColumnName::kColumns %
ColumnName::kColumnsId % ColumnName::kOptions % ColumnName::kId;

return query.str();
}
Expand Down
39 changes: 20 additions & 19 deletions src/dao/postgresql/statistics_dao_pg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -327,14 +327,15 @@ std::string StatisticsDaoPg::get_insert_statement() const {
// SQL statement
boost::format query =
boost::format(
"INSERT INTO %1%.%2% (%3%, %4%, %5%, %6%, %7%)"
" VALUES ($1, $2, $3, $4, $5)"
" ON CONFLICT (%6%)"
" DO UPDATE SET %3% = $1, %4% = $2, %5% = $3, %7% = $5"
" RETURNING %8%") %
kSchemaTsurugiCatalog % kTableName % ColumnName::kFormatVersion %
ColumnName::kGeneration % ColumnName::kName % ColumnName::kColumnId %
ColumnName::kColumnStatistic % ColumnName::kId;
"INSERT INTO %1%.%2% (%4%, %5%, %6%, %7%, %8%, %9%)"
" VALUES ($1, $2, nextval('%3%'), $3, $4, $5)"
" ON CONFLICT (%8%)"
" DO UPDATE SET %4% = $1, %5% = $2, %7% = $3, %9% = $5"
" RETURNING %10%") %
kSchemaTsurugiCatalog % kTableName % kSequenceId %
ColumnName::kFormatVersion % ColumnName::kGeneration % ColumnName::kId %
ColumnName::kName % ColumnName::kColumnId % ColumnName::kColumnStatistic %
ColumnName::kId;

return query.str();
}
Expand All @@ -344,17 +345,17 @@ std::string StatisticsDaoPg::get_insert_statement_columns(
// SQL statement
boost::format query =
boost::format(
"INSERT INTO %1%.%2% (%3%, %4%, %5%, %6%, %7%)"
" VALUES ($1, $2, $3"
" , (SELECT %9% FROM %1%.%8% WHERE %10%=$4 AND %11%=$5), $6)"
" ON CONFLICT (%6%)"
" DO UPDATE SET %3% = $1, %4% = $2, %5% = $3, %7% = $6"
" RETURNING %12%") %
kSchemaTsurugiCatalog % kTableName % ColumnName::kFormatVersion %
ColumnName::kGeneration % ColumnName::kName % ColumnName::kColumnId %
ColumnName::kColumnStatistic % ColumnsDaoPg::kTableName %
ColumnsDaoPg::ColumnName::kId % ColumnsDaoPg::ColumnName::kTableId % key %
ColumnName::kId;
"INSERT INTO %1%.%2% (%4%, %5%, %6%, %7%, %8%, %9%)"
" VALUES ($1, $2, nextval('%3%'), $3,"
" (SELECT %11% FROM %1%.%10% WHERE %12%=$4 AND %13%=$5), $6)"
" ON CONFLICT (%8%)"
" DO UPDATE SET %4% = $1, %5% = $2, %7% = $3, %9% = $6"
" RETURNING %14%") %
kSchemaTsurugiCatalog % kTableName % kSequenceId %
ColumnName::kFormatVersion % ColumnName::kGeneration % ColumnName::kId %
ColumnName::kName % ColumnName::kColumnId % ColumnName::kColumnStatistic %
ColumnsDaoPg::kTableName % ColumnsDaoPg::ColumnName::kId %
ColumnsDaoPg::ColumnName::kTableId % key % ColumnName::kId;

return query.str();
}
Expand Down
13 changes: 7 additions & 6 deletions src/dao/postgresql/tables_dao_pg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -256,13 +256,14 @@ ErrorCode TablesDaoPg::remove(
std::string TablesDaoPg::get_insert_statement() const {
// SQL statement
boost::format query = boost::format(
"INSERT INTO %1%.%2% (%3%, %4%, %5%, %6%, %7%)"
" VALUES ($1, $2, $3, $4, $5)"
" RETURNING %8%") %
kSchemaTsurugiCatalog % kTableName %
"INSERT INTO %1%.%2% (%4%, %5%, %6%, %7%, %8%, %9%)"
" VALUES ($1, $2, nextval('%3%'), $3, $4, $5)"
" RETURNING %10%") %
kSchemaTsurugiCatalog % kTableName % kSequenceId %
ColumnName::kFormatVersion % ColumnName::kGeneration %
ColumnName::kName % ColumnName::kNamespace %
ColumnName::kTuples % ColumnName::kId;
ColumnName::kId % ColumnName::kName %
ColumnName::kNamespace % ColumnName::kTuples %
ColumnName::kId;

return query.str();
}
Expand Down

0 comments on commit cedf26f

Please sign in to comment.