Skip to content

Commit 7344f85

Browse files
committed
More post-merge fixes
1 parent b35028d commit 7344f85

File tree

2 files changed

+56
-46
lines changed

2 files changed

+56
-46
lines changed

src/isql/extract.epp

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -335,8 +335,8 @@ int EXTRACT_list_table(const QualifiedMetaString& relation_name,
335335
bool first = true;
336336
string char_sets;
337337
rel_t rel_type = rel_persistent;
338-
char ss[28] = "";
339-
Firebird::string tableSpaceName;
338+
const char* security = nullptr;
339+
MetaString tablespaceName;
340340

341341
// Query to obtain relation detail information
342342

@@ -381,19 +381,15 @@ int EXTRACT_list_table(const QualifiedMetaString& relation_name,
381381

382382
isqlGlob.printf("%s ", IUTILS_name_to_string(new_name.object.hasData() ? new_name : relation_name).c_str());
383383

384-
fb_utils::exact_name(REL.RDB$TABLESPACE_NAME);
385-
if (!REL.RDB$TABLESPACE_NAME.NULL && strcmp(REL.RDB$TABLESPACE_NAME, PRIMARY_TABLESPACE_NAME))
386-
{
387-
IUTILS_copy_SQL_id(REL.RDB$TABLESPACE_NAME, SQL_identifier, DBL_QUOTE);
388-
tableSpaceName.printf(" TABLESPACE %s", SQL_identifier);
389-
}
384+
if (!REL.RDB$TABLESPACE_NAME.NULL)
385+
tablespaceName = REL.RDB$TABLESPACE_NAME;
390386

391387
if (!REL.RDB$SQL_SECURITY.NULL)
392388
{
393389
if (REL.RDB$SQL_SECURITY)
394-
strcpy(ss, "SQL SECURITY DEFINER");
390+
security = "SQL SECURITY DEFINER";
395391
else
396-
strcpy(ss, "SQL SECURITY INVOKER");
392+
security = "SQL SECURITY INVOKER";
397393
}
398394

399395
if (!REL.RDB$EXTERNAL_FILE.NULL)
@@ -628,15 +624,20 @@ int EXTRACT_list_table(const QualifiedMetaString& relation_name,
628624
if (first) // we extracted nothing
629625
return FINI_ERROR;
630626

631-
const char* gtt_scope = (rel_type == rel_global_temp_preserve) ? "ON COMMIT PRESERVE ROWS" :
632-
((rel_type == rel_global_temp_delete) ? "ON COMMIT DELETE ROWS" : "");
627+
isqlGlob.printf(")");
633628

634-
const char* opt_delim = *gtt_scope && *ss ? ", " : "";
629+
if (tablespaceName.hasData() && tablespaceName != PRIMARY_TABLESPACE_NAME)
630+
isqlGlob.printf(" TABLESPACE %s", IUTILS_name_to_string(tablespaceName).c_str());
635631

636-
if (*gtt_scope || *ss)
637-
isqlGlob.printf(")%s %s%s%s%s", tableSpaceName.c_str(), NEWLINE, gtt_scope, opt_delim , ss);
638-
else
639-
isqlGlob.printf(")%s", tableSpaceName.c_str());
632+
const char* gttScope = (rel_type == rel_global_temp_preserve) ? "ON COMMIT PRESERVE ROWS" :
633+
((rel_type == rel_global_temp_delete) ? "ON COMMIT DELETE ROWS" : nullptr);
634+
635+
if (gttScope && security)
636+
isqlGlob.printf(" %s%s, %s", NEWLINE, gttScope, security);
637+
else if (gttScope)
638+
isqlGlob.printf(" %s%s", NEWLINE, gttScope);
639+
else if (security)
640+
isqlGlob.printf(" %s%s", NEWLINE, security);
640641

641642
isqlGlob.printf("%s%s", isqlGlob.global_Term, NEWLINE);
642643
return FINI_OK;
@@ -3170,9 +3171,12 @@ static void list_indexes()
31703171
SHOW_print_metadata_text_blob(isqlGlob.Out, &IDX.RDB$CONDITION_SOURCE, false, true);
31713172
}
31723173

3173-
fb_utils::exact_name(IDX.RDB$TABLESPACE_NAME);
3174-
if (strcmp(IDX.RDB$TABLESPACE_NAME, PRIMARY_TABLESPACE_NAME))
3175-
isqlGlob.printf(" TABLESPACE %s", IDX.RDB$TABLESPACE_NAME);
3174+
if (!IDX.RDB$TABLESPACE_NAME.NULL)
3175+
{
3176+
const MetaString tablespaceName(IDX.RDB$TABLESPACE_NAME);
3177+
if (tablespaceName != PRIMARY_TABLESPACE_NAME)
3178+
isqlGlob.printf(" TABLESPACE %s", IUTILS_name_to_string(tablespaceName).c_str());
3179+
}
31763180

31773181
isqlGlob.printf("%s%s", isqlGlob.global_Term, NEWLINE);
31783182
}
@@ -3452,8 +3456,7 @@ static void list_tablespaces()
34523456

34533457
bool first = true;
34543458

3455-
FOR X IN RDB$TABLESPACES WITH
3456-
(X.RDB$SYSTEM_FLAG NE 1 OR X.RDB$SYSTEM_FLAG MISSING)
3459+
FOR X IN RDB$TABLESPACES WITH X.RDB$SYSTEM_FLAG EQ 0
34573460
SORTED BY X.RDB$TABLESPACE_NAME
34583461

34593462
if (first)
@@ -3462,25 +3465,21 @@ static void list_tablespaces()
34623465
first = false;
34633466
}
34643467

3465-
fb_utils::exact_name(X.RDB$TABLESPACE_NAME);
3466-
fb_utils::exact_name(X.RDB$FILE_NAME);
3467-
fb_utils::exact_name(X.RDB$OWNER_NAME);
3468-
3469-
if (isqlGlob.db_SQL_dialect > SQL_DIALECT_V6_TRANSITION)
3470-
IUTILS_copy_SQL_id (X.RDB$TABLESPACE_NAME, SQL_identifier, DBL_QUOTE);
3471-
else
3472-
strcpy(SQL_identifier, X.RDB$TABLESPACE_NAME);
3468+
const MetaString tablespaceName(X.RDB$TABLESPACE_NAME);
3469+
const MetaString ownerName(X.RDB$OWNER_NAME);
34733470

34743471
isqlGlob.printf("%s/* Tablespace: %s, Owner: %s */%s",
34753472
NEWLINE,
3476-
X.RDB$TABLESPACE_NAME,
3477-
X.RDB$OWNER_NAME,
3473+
IUTILS_name_to_string(tablespaceName).c_str(),
3474+
IUTILS_name_to_string(ownerName).c_str(),
34783475
NEWLINE);
34793476

34803477
const char* offline = X.RDB$OFFLINE.NULL || !X.RDB$OFFLINE ? "ONLINE" : "OFFLINE";
34813478
const char* readonly = X.RDB$READ_ONLY.NULL || !X.RDB$READ_ONLY ? "READ WRITE" : "READ ONLY";
34823479

3483-
isqlGlob.printf("CREATE TABLESPACE %s FILE '%s' %s %s", SQL_identifier, X.RDB$FILE_NAME, offline, readonly);
3480+
fb_utils::exact_name(X.RDB$FILE_NAME);
3481+
isqlGlob.printf("CREATE TABLESPACE %s FILE '%s' %s %s",
3482+
IUTILS_name_to_string(tablespaceName).c_str(), X.RDB$FILE_NAME, offline, readonly);
34843483

34853484
isqlGlob.printf("%s%s", Procterm, NEWLINE);
34863485

src/isql/show.epp

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4741,10 +4741,11 @@ static void show_index(const QualifiedMetaString& relationName,
47414741
"%s%s%s INDEX ON %s",
47424742
IUTILS_name_to_string(indexName).c_str(),
47434743
(unique_flag ? " UNIQUE" : ""),
4744-
(index_type == 1 ? " DESCENDING" : ""), IUTILS_name_to_string(relationName.object).c_str());
4744+
(index_type == 1 ? " DESCENDING" : ""),
4745+
IUTILS_name_to_string(relationName.object).c_str());
47454746

4746-
if (tablespaceName != PRIMARY_TABLESPACE_NAME)
4747-
isqlGlob.printf(" TABLESPACE %s", tablespaceName);
4747+
if (tablespaceName.hasData() && tablespaceName != PRIMARY_TABLESPACE_NAME)
4748+
isqlGlob.printf(" TABLESPACE %s", IUTILS_name_to_string(tablespaceName).c_str());
47484749

47494750
// Get column names
47504751

@@ -4788,7 +4789,10 @@ static processing_state show_indices(const std::optional<QualifiedMetaString>& n
47884789
continue;
47894790

47904791
const QualifiedMetaString relationName(IDX.RDB$RELATION_NAME, IDX.RDB$SCHEMA_NAME);
4791-
const MetaString tablespaceName(IDX.RDB$TABLESPACE_NAME);
4792+
4793+
MetaString tablespaceName;
4794+
if (!IDX.RDB$TABLESPACE_NAME.NULL)
4795+
tablespaceName = IDX.RDB$TABLESPACE_NAME;
47924796

47934797
if (IDX.RDB$INDEX_INACTIVE.NULL)
47944798
IDX.RDB$INDEX_INACTIVE = 0;
@@ -4835,10 +4839,13 @@ static processing_state show_indices(const std::optional<QualifiedMetaString>& n
48354839
{
48364840
const QualifiedMetaString indexName(IDX.RDB$INDEX_NAME, IDX.RDB$SCHEMA_NAME);
48374841
const QualifiedMetaString relationName(IDX.RDB$RELATION_NAME, IDX.RDB$SCHEMA_NAME);
4838-
const MetaString tablespaceName(IDX.RDB$TABLESPACE_NAME);
48394842

48404843
first = false;
48414844

4845+
MetaString tablespaceName;
4846+
if (!IDX.RDB$TABLESPACE_NAME.NULL)
4847+
tablespaceName = IDX.RDB$TABLESPACE_NAME;
4848+
48424849
show_index(relationName, indexName, tablespaceName,
48434850
IDX.RDB$UNIQUE_FLAG, IDX.RDB$INDEX_TYPE, IDX.RDB$INDEX_INACTIVE);
48444851

@@ -4992,12 +4999,13 @@ static processing_state show_tablespaces(const std::optional<MetaString>& name)
49924999
if (!name)
49935000
{
49945001
// List all tablespace names in columns
4995-
FOR X IN RDB$TABLESPACES WITH
4996-
(X.RDB$SYSTEM_FLAG NE 1 OR X.RDB$SYSTEM_FLAG MISSING)
5002+
FOR X IN RDB$TABLESPACES WITH X.RDB$SYSTEM_FLAG EQ 0
49975003
SORTED BY X.RDB$TABLESPACE_NAME
49985004
{
49995005
first = false;
5000-
isqlGlob.printf("%s%s", fb_utils::exact_name(X.RDB$TABLESPACE_NAME), NEWLINE);
5006+
5007+
const MetaString tablespaceName(X.RDB$TABLESPACE_NAME);
5008+
isqlGlob.printf("%s%s", IUTILS_name_to_string(tablespaceName).c_str(), NEWLINE);
50015009
}
50025010
END_FOR
50035011
ON_ERROR
@@ -5016,8 +5024,8 @@ static processing_state show_tablespaces(const std::optional<MetaString>& name)
50165024

50175025
first = false;
50185026

5019-
fb_utils::exact_name(X.RDB$TABLESPACE_NAME);
5020-
isqlGlob.printf("%s", X.RDB$TABLESPACE_NAME);
5027+
const MetaString tablespaceName(X.RDB$TABLESPACE_NAME);
5028+
isqlGlob.printf("%s", IUTILS_name_to_string(tablespaceName).c_str());
50215029

50225030
if (!X.RDB$FILE_NAME.NULL)
50235031
{
@@ -6160,9 +6168,12 @@ static processing_state show_table(const QualifiedMetaString& name, bool isView)
61606168
if (!REL.RDB$EXTERNAL_FILE.NULL)
61616169
isqlGlob.printf("External file: %s%s", REL.RDB$EXTERNAL_FILE, NEWLINE);
61626170

6163-
fb_utils::exact_name(REL.RDB$TABLESPACE_NAME);
6164-
if (!REL.RDB$TABLESPACE_NAME.NULL && strcmp(REL.RDB$TABLESPACE_NAME, PRIMARY_TABLESPACE_NAME))
6165-
isqlGlob.printf("TABLESPACE: %s%s", REL.RDB$TABLESPACE_NAME, NEWLINE);
6171+
if (!REL.RDB$TABLESPACE_NAME.NULL)
6172+
{
6173+
const MetaString tablespaceName(REL.RDB$TABLESPACE_NAME);
6174+
if (tablespaceName != PRIMARY_TABLESPACE_NAME)
6175+
isqlGlob.printf("TABLESPACE: %s%s", IUTILS_name_to_string(tablespaceName).c_str(), NEWLINE);
6176+
}
61666177

61676178
// TODO: indent
61686179

0 commit comments

Comments
 (0)