aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraidarsamer <aidarsamer@ydb.tech>2023-04-12 11:53:09 +0300
committeraidarsamer <aidarsamer@ydb.tech>2023-04-12 11:53:09 +0300
commitd4a79b34585ee4e26f1de7a9b9614ac2012a28c6 (patch)
tree4d372fa9780a47146b8919237c984aa7925d498b
parentaa0f4daea45136f6cf6a92e1398a20f090592c31 (diff)
downloadydb-d4a79b34585ee4e26f1de7a9b9614ac2012a28c6.tar.gz
Add fail on insert to column shard through data query.
-rw-r--r--ydb/core/kqp/executer_actor/kqp_data_executer.cpp16
-rw-r--r--ydb/core/kqp/ut/olap/kqp_olap_ut.cpp26
2 files changed, 32 insertions, 10 deletions
diff --git a/ydb/core/kqp/executer_actor/kqp_data_executer.cpp b/ydb/core/kqp/executer_actor/kqp_data_executer.cpp
index 5169d48cfee..fbb8e0b6116 100644
--- a/ydb/core/kqp/executer_actor/kqp_data_executer.cpp
+++ b/ydb/core/kqp/executer_actor/kqp_data_executer.cpp
@@ -1681,16 +1681,12 @@ private:
}
}
- for (auto& op : stage.GetTableOps()) {
- if (op.GetTypeCase() == NKqpProto::TKqpPhyTableOperation::kReadOlapRange
- && tx.Body->GetType() == NKqpProto::TKqpPhyTx::TYPE_DATA)
- {
- auto error = TStringBuilder() << "Data query read does not support column shard tables.";
- LOG_E(error);
- ReplyErrorAndDie(Ydb::StatusIds::PRECONDITION_FAILED,
- YqlIssue({}, NYql::TIssuesIds::KIKIMR_PRECONDITION_FAILED, error));
- return;
- }
+ if (stageInfo.Meta.IsOlap() && tx.Body->GetType() == NKqpProto::TKqpPhyTx::TYPE_DATA) {
+ auto error = TStringBuilder() << "Data manipulation queries do not support column shard tables.";
+ LOG_E(error);
+ ReplyErrorAndDie(Ydb::StatusIds::PRECONDITION_FAILED,
+ YqlIssue({}, NYql::TIssuesIds::KIKIMR_PRECONDITION_FAILED, error));
+ return;
}
LOG_D("Stage " << stageInfo.Id << " AST: " << stage.GetProgramAst());
diff --git a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp
index 683fec54d88..21c8b052c97 100644
--- a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp
+++ b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp
@@ -3879,10 +3879,16 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
}
Y_UNIT_TEST(OlapUpsertImmediate) {
+ // Should be fixed in KIKIMR-17646
+ return;
+
TestOlapUpsert(1);
}
Y_UNIT_TEST(OlapUpsert) {
+ // Should be fixed in KIKIMR-17646
+ return;
+
TestOlapUpsert(2);
}
@@ -4248,6 +4254,26 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TestTableWithNulls({ testCase });
}
+ Y_UNIT_TEST(Olap_InsertFails) {
+ auto settings = TKikimrSettings()
+ .SetWithSampleTables(false)
+ .SetEnableOlapSchemaOperations(true);
+ TKikimrRunner kikimr(settings);
+
+ EnableDebugLogging(kikimr);
+ TTableWithNullsHelper(kikimr).CreateTableWithNulls();
+
+ auto tableClient = kikimr.GetTableClient();
+
+ auto session = tableClient.CreateSession().GetValueSync().GetSession();
+
+ auto result = session.ExecuteDataQuery(R"(
+ INSERT INTO `/Root/tableWithNulls`(id, resource_id, level) VALUES(1, "1", 1);
+ )", TTxControl::BeginTx().CommitTx()).GetValueSync();
+
+ UNIT_ASSERT_C(!result.IsSuccess(), result.GetIssues().ToString());
+ }
+
Y_UNIT_TEST(OlapRead_FailsOnDataQuery) {
auto settings = TKikimrSettings()
.SetWithSampleTables(false)