Skip to content

Commit 1661faa

Browse files
authored
Stable-25-1: Copy table should not check feature flags for columns types (#17313)
1 parent f885a05 commit 1661faa

8 files changed

+46
-20
lines changed

ydb/core/tx/schemeshard/schemeshard__operation_alter_sequence.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ class TAlterSequence: public TSubOperation {
488488

489489
const NScheme::TTypeRegistry* typeRegistry = AppData()->TypeRegistry;
490490
auto description = GetAlterSequenceDescription(
491-
sequenceInfo->Description, sequenceAlter, *typeRegistry, context.SS->EnableTablePgTypes, errStr);
491+
sequenceInfo->Description, sequenceAlter, *typeRegistry, AppData()->FeatureFlags.GetEnableTablePgTypes(), errStr);
492492
if (!description) {
493493
status = NKikimrScheme::StatusInvalidParameter;
494494
result->SetError(status, errStr);

ydb/core/tx/schemeshard/schemeshard__operation_alter_table.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,9 @@ TTableInfo::TAlterDataPtr ParseParams(const TPath& path, TTableInfo::TPtr table,
145145
const TSubDomainInfo& subDomain = *path.DomainInfo();
146146
const TSchemeLimits& limits = subDomain.GetSchemeLimits();
147147
const TTableInfo::TCreateAlterDataFeatureFlags featureFlags = {
148-
.EnableTablePgTypes = context.SS->EnableTablePgTypes,
149-
.EnableTableDatetime64 = context.SS->EnableTableDatetime64,
150-
.EnableParameterizedDecimal = context.SS->EnableParameterizedDecimal,
148+
.EnableTablePgTypes = AppData()->FeatureFlags.GetEnableTablePgTypes(),
149+
.EnableTableDatetime64 = AppData()->FeatureFlags.GetEnableTableDatetime64(),
150+
.EnableParameterizedDecimal = AppData()->FeatureFlags.GetEnableParameterizedDecimal(),
151151
};
152152

153153

ydb/core/tx/schemeshard/schemeshard__operation_copy_table.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -578,10 +578,12 @@ class TCopyTable: public TSubOperation {
578578

579579
const NScheme::TTypeRegistry* typeRegistry = AppData()->TypeRegistry;
580580
const TSchemeLimits& limits = domainInfo->GetSchemeLimits();
581+
// Copy table should not check feature flags for columns types.
582+
// If the types in original table are created then they should be allowed in destination table.
581583
const TTableInfo::TCreateAlterDataFeatureFlags featureFlags = {
582-
.EnableTablePgTypes = context.SS->EnableTablePgTypes,
583-
.EnableTableDatetime64 = context.SS->EnableTableDatetime64,
584-
.EnableParameterizedDecimal = context.SS->EnableParameterizedDecimal,
584+
.EnableTablePgTypes = true,
585+
.EnableTableDatetime64 = true,
586+
.EnableParameterizedDecimal = true,
585587
};
586588
TTableInfo::TAlterDataPtr alterData = TTableInfo::CreateAlterData(nullptr, schema, *typeRegistry,
587589
limits, *domainInfo, featureFlags, errStr, LocalSequences);

ydb/core/tx/schemeshard/schemeshard__operation_create_sequence.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@ class TCreateSequence : public TSubOperation {
508508
TSequenceInfo::TPtr alterData = sequenceInfo->CreateNextVersion();
509509
const NScheme::TTypeRegistry* typeRegistry = AppData()->TypeRegistry;
510510
auto description = FillSequenceDescription(
511-
descr, *typeRegistry, context.SS->EnableTablePgTypes, errStr);
511+
descr, *typeRegistry, AppData()->FeatureFlags.GetEnableTablePgTypes(), errStr);
512512
if (!description) {
513513
status = NKikimrScheme::StatusInvalidParameter;
514514
result->SetError(status, errStr);

ydb/core/tx/schemeshard/schemeshard__operation_create_table.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -578,9 +578,9 @@ class TCreateTable: public TSubOperation {
578578
const NScheme::TTypeRegistry* typeRegistry = AppData()->TypeRegistry;
579579
const TSchemeLimits& limits = domainInfo->GetSchemeLimits();
580580
const TTableInfo::TCreateAlterDataFeatureFlags featureFlags = {
581-
.EnableTablePgTypes = context.SS->EnableTablePgTypes,
582-
.EnableTableDatetime64 = context.SS->EnableTableDatetime64,
583-
.EnableParameterizedDecimal = context.SS->EnableParameterizedDecimal,
581+
.EnableTablePgTypes = AppData()->FeatureFlags.GetEnableTablePgTypes(),
582+
.EnableTableDatetime64 = AppData()->FeatureFlags.GetEnableTableDatetime64(),
583+
.EnableParameterizedDecimal = AppData()->FeatureFlags.GetEnableParameterizedDecimal(),
584584
};
585585
TTableInfo::TAlterDataPtr alterData = TTableInfo::CreateAlterData(
586586
nullptr,

ydb/core/tx/schemeshard/schemeshard_impl.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4648,14 +4648,11 @@ void TSchemeShard::OnActivateExecutor(const TActorContext &ctx) {
46484648
EnableAlterDatabaseCreateHiveFirst = appData->FeatureFlags.GetEnableAlterDatabaseCreateHiveFirst();
46494649
EnablePQConfigTransactionsAtSchemeShard = appData->FeatureFlags.GetEnablePQConfigTransactionsAtSchemeShard();
46504650
EnableStatistics = appData->FeatureFlags.GetEnableStatistics();
4651-
EnableTablePgTypes = appData->FeatureFlags.GetEnableTablePgTypes();
46524651
EnableServerlessExclusiveDynamicNodes = appData->FeatureFlags.GetEnableServerlessExclusiveDynamicNodes();
46534652
EnableAddColumsWithDefaults = appData->FeatureFlags.GetEnableAddColumsWithDefaults();
46544653
EnableReplaceIfExistsForExternalEntities = appData->FeatureFlags.GetEnableReplaceIfExistsForExternalEntities();
46554654
EnableTempTables = appData->FeatureFlags.GetEnableTempTables();
4656-
EnableTableDatetime64 = appData->FeatureFlags.GetEnableTableDatetime64();
46574655
EnableVectorIndex = appData->FeatureFlags.GetEnableVectorIndex();
4658-
EnableParameterizedDecimal = appData->FeatureFlags.GetEnableParameterizedDecimal();
46594656
EnableDataErasure = appData->FeatureFlags.GetEnableDataErasure();
46604657

46614658
ConfigureCompactionQueues(appData->CompactionConfig, ctx);
@@ -7284,16 +7281,13 @@ void TSchemeShard::ApplyConsoleConfigs(const NKikimrConfig::TFeatureFlags& featu
72847281
EnableAlterDatabaseCreateHiveFirst = featureFlags.GetEnableAlterDatabaseCreateHiveFirst();
72857282
EnablePQConfigTransactionsAtSchemeShard = featureFlags.GetEnablePQConfigTransactionsAtSchemeShard();
72867283
EnableStatistics = featureFlags.GetEnableStatistics();
7287-
EnableTablePgTypes = featureFlags.GetEnableTablePgTypes();
72887284
EnableServerlessExclusiveDynamicNodes = featureFlags.GetEnableServerlessExclusiveDynamicNodes();
72897285
EnableAddColumsWithDefaults = featureFlags.GetEnableAddColumsWithDefaults();
72907286
EnableTempTables = featureFlags.GetEnableTempTables();
72917287
EnableReplaceIfExistsForExternalEntities = featureFlags.GetEnableReplaceIfExistsForExternalEntities();
7292-
EnableTableDatetime64 = featureFlags.GetEnableTableDatetime64();
72937288
EnableResourcePoolsOnServerless = featureFlags.GetEnableResourcePoolsOnServerless();
72947289
EnableVectorIndex = featureFlags.GetEnableVectorIndex();
72957290
EnableExternalDataSourcesOnServerless = featureFlags.GetEnableExternalDataSourcesOnServerless();
7296-
EnableParameterizedDecimal = featureFlags.GetEnableParameterizedDecimal();
72977291
EnableDataErasure = featureFlags.GetEnableDataErasure();
72987292
}
72997293

ydb/core/tx/schemeshard/schemeshard_impl.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -334,16 +334,13 @@ class TSchemeShard
334334
bool EnableAlterDatabaseCreateHiveFirst = false;
335335
bool EnablePQConfigTransactionsAtSchemeShard = false;
336336
bool EnableStatistics = false;
337-
bool EnableTablePgTypes = false;
338337
bool EnableServerlessExclusiveDynamicNodes = false;
339338
bool EnableAddColumsWithDefaults = false;
340339
bool EnableReplaceIfExistsForExternalEntities = false;
341340
bool EnableTempTables = false;
342-
bool EnableTableDatetime64 = false;
343341
bool EnableResourcePoolsOnServerless = false;
344342
bool EnableVectorIndex = false;
345343
bool EnableExternalDataSourcesOnServerless = false;
346-
bool EnableParameterizedDecimal = false;
347344
bool EnableDataErasure = false;
348345

349346
TShardDeleter ShardDeleter;

ydb/core/tx/schemeshard/ut_base/ut_table_decimal_types.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,39 @@ Y_UNIT_TEST_SUITE(TSchemeShardDecimalTypesInTables) {
107107
});
108108
}
109109

110+
Y_UNIT_TEST(CopyTableShouldNotFailOnDisabledFeatureFlag) {
111+
TTestBasicRuntime runtime;
112+
TTestEnv env(runtime, TTestEnvOptions().EnableParameterizedDecimal(true));
113+
ui64 txId = 100;
114+
115+
AsyncCreateTable(runtime, ++txId, "/MyRoot", R"_(
116+
Name: "Table1"
117+
Columns { Name: "key" Type: "Decimal(35,6)" }
118+
Columns { Name: "value" Type: "Decimal(35,6)" }
119+
KeyColumnNames: ["key"]
120+
)_");
121+
TestModificationResults(runtime, txId, {TExpectedResult(NKikimrScheme::StatusAccepted)});
122+
env.TestWaitNotification(runtime, txId);
123+
124+
TestDescribeResult(DescribePath(runtime, "/MyRoot/Table1"), {
125+
NLs::PathExist,
126+
NLs::Finished,
127+
NLs::CheckColumnType(0, "Decimal(35,6)")
128+
});
129+
130+
runtime.GetAppData().FeatureFlags.SetEnableParameterizedDecimal(false);
131+
132+
AsyncCopyTable(runtime, ++txId, "/MyRoot", "Copy1", "/MyRoot/Table1");
133+
TestModificationResults(runtime, txId, {TExpectedResult(NKikimrScheme::StatusAccepted)});
134+
env.TestWaitNotification(runtime, txId);
135+
136+
TestDescribeResult(DescribePath(runtime, "/MyRoot/Copy1"), {
137+
NLs::PathExist,
138+
NLs::Finished,
139+
NLs::CheckColumnType(0, "Decimal(35,6)")
140+
});
141+
}
142+
110143
Y_UNIT_TEST(CreateWithWrongParameters) {
111144
TTestBasicRuntime runtime;
112145
TTestEnv env(runtime, TTestEnvOptions().EnableParameterizedDecimal(true));

0 commit comments

Comments
 (0)