Skip to content

Commit 46a0f52

Browse files
authored
check supported store types (#12568)
1 parent 4270124 commit 46a0f52

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

ydb/core/kqp/provider/yql_kikimr_type_ann.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1256,9 +1256,17 @@ virtual TStatus HandleCreateTable(TKiCreateTable create, TExprContext& ctx) over
12561256
"Can't reset TTL settings"));
12571257
return TStatus::Error;
12581258
} else if (name == "storeType") {
1259-
TMaybe<TString> storeType = TString(setting.Value().Cast<TCoAtom>().Value());
1260-
if (storeType && to_lower(storeType.GetRef()) == "column") {
1261-
meta->StoreType = EStoreType::Column;
1259+
if (const TMaybe<TString> storeType = TString(setting.Value().Cast<TCoAtom>().Value())) {
1260+
const auto& val = to_lower(storeType.GetRef());
1261+
if (val == "column") {
1262+
meta->StoreType = EStoreType::Column;
1263+
} else if (val == "row") {
1264+
//pass
1265+
} else {
1266+
ctx.AddError(TIssue(ctx.GetPosition(setting.Name().Pos()),
1267+
TStringBuilder() << "Unsupported table store type: " << storeType.GetRef()));
1268+
return TStatus::Error;
1269+
}
12621270
}
12631271
} else if (name == "partitionByHashFunction") {
12641272
meta->TableSettings.PartitionByHashFunction = TString(

ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4993,6 +4993,30 @@ Y_UNIT_TEST_SUITE(KqpScheme) {
49934993
}
49944994
}
49954995

4996+
Y_UNIT_TEST(NEG_CreateTableWithUnsupportedStoreType) {
4997+
TKikimrSettings runnerSettings;
4998+
runnerSettings.WithSampleTables = false;
4999+
TKikimrRunner kikimr(runnerSettings);
5000+
auto db = kikimr.GetTableClient();
5001+
auto session = db.CreateSession().GetValueSync().GetSession();
5002+
TString tableStoreName = "/Root/TableStoreTest";
5003+
auto query = TStringBuilder() << R"(
5004+
--!syntax_v1
5005+
CREATE TABLE SomeTable (
5006+
Key Timestamp NOT NULL,
5007+
Value1 String,
5008+
Value2 Int64 NOT NULL,
5009+
PRIMARY KEY (Key)
5010+
)
5011+
WITH (
5012+
STORE = UNSUPPORTED
5013+
);
5014+
)";
5015+
auto result = session.ExecuteSchemeQuery(query).GetValueSync();
5016+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::GENERIC_ERROR, result.GetIssues().ToString());
5017+
}
5018+
5019+
49965020
Y_UNIT_TEST(CreateAlterDropTableStore) {
49975021
TKikimrSettings runnerSettings;
49985022
runnerSettings.WithSampleTables = false;

0 commit comments

Comments
 (0)