Skip to content

Commit

Permalink
Merge 5a909e6 into ed91832
Browse files Browse the repository at this point in the history
  • Loading branch information
shnikd authored Feb 16, 2024
2 parents ed91832 + 5a909e6 commit e5e082e
Show file tree
Hide file tree
Showing 4 changed files with 169 additions and 4 deletions.
66 changes: 64 additions & 2 deletions ydb/core/tx/schemeshard/ut_export/ut_export.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -281,8 +281,42 @@ Y_UNIT_TEST_SUITE(TExportToS3Tests) {

const TVector<TString> tables = {R"(
Name: "Table"
Columns { Name: "key" Type: "Utf8" }
Columns { Name: "value" Type: "Utf8" }
Columns {
Name: "key"
Type: "Utf8"
DefaultFromLiteral {
type {
optional_type {
item {
type_id: UTF8
}
}
}
value {
items {
text_value: "b"
}
}
}
}
Columns {
Name: "value"
Type: "Utf8"
DefaultFromLiteral {
type {
optional_type {
item {
type_id: UTF8
}
}
}
value {
items {
text_value: "a"
}
}
}
}
KeyColumnNames: ["key"]
PartitionConfig {
ColumnFamilies {
Expand Down Expand Up @@ -331,6 +365,20 @@ Y_UNIT_TEST_SUITE(TExportToS3Tests) {
}
}
not_null: false
from_literal {
type {
optional_type {
item {
type_id: UTF8
}
}
}
value {
items {
text_value: "b"
}
}
}
}
columns {
name: "value"
Expand All @@ -342,6 +390,20 @@ columns {
}
}
not_null: false
from_literal {
type {
optional_type {
item {
type_id: UTF8
}
}
}
value {
items {
text_value: "a"
}
}
}
}
primary_key: "key"
storage_settings {
Expand Down
42 changes: 42 additions & 0 deletions ydb/core/tx/schemeshard/ut_restore/ut_restore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <ydb/core/tx/schemeshard/schemeshard_private.h>
#include <ydb/core/tx/schemeshard/schemeshard_billing_helpers.h>
#include <ydb/core/tx/datashard/datashard.h>
#include <ydb/core/tx/datashard/datashard_ut_common_kqp.h>
#include <ydb/core/wrappers/ut_helpers/s3_mock.h>
#include <ydb/core/metering/metering.h>
#include <ydb/core/ydb_convert/table_description.h>
Expand Down Expand Up @@ -373,6 +374,47 @@ Y_UNIT_TEST_SUITE(TRestoreTests) {
NKqp::CompareYson(data.YsonStr, content);
}

Y_UNIT_TEST_WITH_COMPRESSION(ShouldSucceedWithDefaultFromLiteral) {
TTestBasicRuntime runtime;

const auto data = GenerateTestData(Codec, "a", 1);

Restore(runtime, R"(
Name: "Table"
Columns { Name: "key" Type: "Utf8" }
Columns {
Name: "value"
Type: "Utf8"
DefaultFromLiteral {
type {
optional_type {
item {
type_id: UTF8
}
}
}
value {
items {
text_value: "value1"
}
}
}
}
KeyColumnNames: ["key"]
)", {data});

{
TString result = NKikimr::NDataShard::NKqpHelpers::KqpSimpleExec(
runtime, Q_(R"("UPSERT INTO `/MyRoot/Table` (key) VALUES ("a"))"));
UNIT_ASSERT_VALUES_EQUAL(result, "<empty>");
}

{
TString result = NKikimr::NDataShard::NKqpHelpers::KqpSimpleExec(runtime, "SELECT * FROM `/MyRoot/Table`;");
UNIT_ASSERT_C(false, result);
}
}

Y_UNIT_TEST_WITH_COMPRESSION(ShouldSucceedOnMultiShardTable) {
TTestBasicRuntime runtime;

Expand Down
61 changes: 59 additions & 2 deletions ydb/core/ydb_convert/table_description.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,11 @@ bool BuildAlterTableAddIndexRequest(const Ydb::Table::AlterTableRequest* req, NK
if (flags & NKqpProto::TKqpSchemeOperation::FLAG_PG_MODE) {
settings->set_pg_mode(true);
}

if (flags & NKqpProto::TKqpSchemeOperation::FLAG_IF_NOT_EXISTS) {
settings->set_if_not_exist(true);
}

settings->set_source_path(req->path());
auto tableIndex = settings->mutable_index();
tableIndex->CopyFrom(req->add_indexes(0));
Expand Down Expand Up @@ -390,6 +390,54 @@ static Ydb::Type* AddColumn(Ydb::Table::ColumnMeta* newColumn, const TColumn& co
}
}
newColumn->set_not_null(column.GetNotNull());
return columnType;
}

template <>
Ydb::Type* AddColumn<NKikimrSchemeOp::TColumnDescription>(Ydb::Table::ColumnMeta* newColumn, const NKikimrSchemeOp::TColumnDescription& column) {
newColumn->set_name(column.GetName());

Ydb::Type* columnType = nullptr;
auto* typeDesc = NPg::TypeDescFromPgTypeName(column.GetType());
if (typeDesc) {
columnType = newColumn->mutable_type();
auto* pg = columnType->mutable_pg_type();
pg->set_type_name(NPg::PgTypeNameFromTypeDesc(typeDesc));
pg->set_type_modifier(NPg::TypeModFromPgTypeName(column.GetType()));
pg->set_oid(NPg::PgTypeIdFromTypeDesc(typeDesc));
pg->set_typlen(0);
pg->set_typmod(0);
} else {
NYql::NProto::TypeIds protoType;
if (!NYql::NProto::TypeIds_Parse(column.GetType(), &protoType)) {
throw NYql::TErrorException(NKikimrIssues::TIssuesIds::DEFAULT_ERROR)
<< "Got invalid type: " << column.GetType() << " for column: " << column.GetName();
}

if (column.GetNotNull()) {
columnType = newColumn->mutable_type();
} else {
columnType = newColumn->mutable_type()->mutable_optional_type()->mutable_item();
}
Y_ENSURE(columnType);
if (protoType == NYql::NProto::TypeIds::Decimal) {
auto typeParams = columnType->mutable_decimal_type();
// TODO: Change TEvDescribeSchemeResult to return decimal params
typeParams->set_precision(22);
typeParams->set_scale(9);
} else {
NMiniKQL::ExportPrimitiveTypeToProto(protoType, *columnType);
}
}
newColumn->set_not_null(column.GetNotNull());
switch (column.GetDefaultValueCase()) {
case NKikimrSchemeOp::TColumnDescription::kDefaultFromLiteral: {
auto fromLiteral = newColumn->mutable_from_literal();
*fromLiteral = column.GetDefaultFromLiteral();
break;
}
default: break;
}

return columnType;
}
Expand Down Expand Up @@ -607,6 +655,15 @@ bool FillColumnDescription(NKikimrSchemeOp::TTableDescription& out,
if (!column.family().empty()) {
cd->SetFamilyName(column.family());
}

switch (column.default_policy_case()) {
case Ydb::Table::ColumnMeta::kFromLiteral: {
auto fromLiteral = cd->MutableDefaultFromLiteral();
*fromLiteral = column.from_literal();
break;
}
default: break;
}
}

return true;
Expand Down
4 changes: 4 additions & 0 deletions ydb/public/api/protos/ydb_table.proto
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,10 @@ message ColumnMeta {
string family = 3;
// Column nullability
optional bool not_null = 4;
// Default value policy
oneof default_policy {
TypedValue from_literal = 6;
}
}

message DateTypeColumnModeSettings {
Expand Down

0 comments on commit e5e082e

Please sign in to comment.