@@ -796,15 +796,18 @@ Y_UNIT_TEST_SUITE(KqpParams) {
796
796
--!syntax_v1
797
797
CREATE TABLE Table (
798
798
Key Int32,
799
+ Key1 Decimal(1,0),
800
+ Key22 Decimal(22,9),
801
+ Key35 Decimal(35,10),
799
802
Value1 Decimal(1,0),
800
803
Value22 Decimal(22,9),
801
804
Value35 Decimal(35,10),
802
- PRIMARY KEY (Key)
805
+ PRIMARY KEY (Key, Key1, Key22, Key35 )
803
806
);
804
807
)" ).GetValueSync ();
805
808
UNIT_ASSERT_C (schemeResult.IsSuccess (), schemeResult.GetIssues ().ToString ());
806
809
807
- auto execUpsertQuery = [&] (const TString& query, const NYdb::TParams& params) -> std::tuple<NYdb::EStatus, TString> {
810
+ auto execModifyQuery = [&] (const TString& query, const NYdb::TParams& params) -> std::tuple<NYdb::EStatus, TString> {
808
811
if (QueryService) {
809
812
auto result = queryClient.ExecuteQuery (query, NYdb::NQuery::TTxControl::BeginTx ().CommitTx (), params).ExtractValueSync ();
810
813
return {result.GetStatus (), result.GetIssues ().ToString ()};
@@ -830,28 +833,37 @@ Y_UNIT_TEST_SUITE(KqpParams) {
830
833
{
831
834
auto upsertParams = tableClient.GetParamsBuilder ()
832
835
.AddParam (" $key" ).Int32 (1 ).Build ()
836
+ .AddParam (" $key1" ).Decimal (TDecimalValue (" 2" , 1 , 0 )).Build ()
837
+ .AddParam (" $key22" ).Decimal (TDecimalValue (" 1234.4321" , 22 , 9 )).Build ()
838
+ .AddParam (" $key35" ).Decimal (TDecimalValue (" 1555555555555555.1234567890" , 35 , 10 )).Build ()
833
839
.AddParam (" $value1" ).Decimal (TDecimalValue (" 9" , 1 , 0 )).Build ()
834
840
.AddParam (" $value22" ).Decimal (TDecimalValue (" 123.321" , 22 , 9 )).Build ()
835
841
.AddParam (" $value35" ).Decimal (TDecimalValue (" 555555555555555.1234567890" , 35 , 10 )).Build ()
836
842
.Build ();
837
843
838
844
// All upsert parameters are declared
839
845
{
840
- auto [status, issues] = execUpsertQuery (Q1_ (R"(
846
+ auto [status, issues] = execModifyQuery (Q1_ (R"(
841
847
DECLARE $key AS Int32;
848
+ DECLARE $key1 AS Decimal(1,0);
849
+ DECLARE $key22 AS Decimal(22,9);
850
+ DECLARE $key35 AS Decimal(35,10);
842
851
DECLARE $value1 AS Decimal(1,0);
843
852
DECLARE $value22 AS Decimal(22,9);
844
853
DECLARE $value35 AS Decimal(35,10);
845
854
846
- UPSERT INTO Table (Key, Value1, Value22, Value35) VALUES
847
- ($key, $value1, $value22, $value35);
855
+ UPSERT INTO Table (Key, Key1, Key22, Key35, Value1, Value22, Value35) VALUES
856
+ ($key, $key1, $key22, $key35, $ value1, $value22, $value35);
848
857
)" ), upsertParams);
849
858
UNIT_ASSERT_VALUES_EQUAL_C (status, EStatus::SUCCESS, issues);
850
859
}
851
860
852
- TString expected = R"( [[[1];["9"];["123.321"];["555555555555555.123456789"]]])" ;
861
+ TString expected = R"( [[[1];["2"];["1234.4321"];["1555555555555555.123456789"];[" 9"];["123.321"];["555555555555555.123456789"]]])" ;
853
862
auto selectParams = tableClient.GetParamsBuilder ()
854
863
.AddParam (" $key" ).Int32 (1 ).Build ()
864
+ .AddParam (" $key1" ).Decimal (TDecimalValue (" 2" , 1 , 0 )).Build ()
865
+ .AddParam (" $key22" ).Decimal (TDecimalValue (" 1234.4321" , 22 , 9 )).Build ()
866
+ .AddParam (" $key35" ).Decimal (TDecimalValue (" 1555555555555555.1234567890" , 35 , 10 )).Build ()
855
867
.AddParam (" $value1" ).Decimal (TDecimalValue (" 9" , 1 , 0 )).Build ()
856
868
.AddParam (" $value22" ).Decimal (TDecimalValue (" 123.321" , 22 , 9 )).Build ()
857
869
.AddParam (" $value35" ).Decimal (TDecimalValue (" 555555555555555.1234567890" , 35 , 10 )).Build ()
@@ -861,17 +873,52 @@ Y_UNIT_TEST_SUITE(KqpParams) {
861
873
{
862
874
auto [status, issues, resultSet] = execSelectQuery (Q1_ (R"(
863
875
DECLARE $key AS Int32;
876
+ DECLARE $key1 AS Decimal(1,0);
877
+ DECLARE $key22 AS Decimal(22,9);
878
+ DECLARE $key35 AS Decimal(35,10);
864
879
DECLARE $value1 AS Decimal(1,0);
865
880
DECLARE $value22 AS Decimal(22,9);
866
881
DECLARE $value35 AS Decimal(35,10);
867
882
868
- SELECT * FROM Table WHERE Key = $key AND Value1 = $value1 AND Value22 = $value22 AND Value35 = $value35;
883
+ SELECT * FROM Table WHERE Key = $key AND Key1 = $key1 AND Key22 = $key22 AND Key35 = $key35 AND Value1 = $value1 AND Value22 = $value22 AND Value35 = $value35;
869
884
)" ), selectParams);
870
885
UNIT_ASSERT_VALUES_EQUAL_C (status, EStatus::SUCCESS, issues);
871
886
CompareYson (expected, FormatResultSetYson (resultSet));
872
887
}
873
888
}
874
889
890
+ // Delete
891
+ {
892
+ auto deleteParams = tableClient.GetParamsBuilder ()
893
+ .AddParam (" $key" ).Int32 (1 ).Build ()
894
+ .AddParam (" $key1" ).Decimal (TDecimalValue (" 2" , 1 , 0 )).Build ()
895
+ .AddParam (" $key22" ).Decimal (TDecimalValue (" 1234.4321" , 22 , 9 )).Build ()
896
+ .AddParam (" $key35" ).Decimal (TDecimalValue (" 1555555555555555.1234567890" , 35 , 10 )).Build ()
897
+ .Build ();
898
+
899
+ {
900
+ auto [status, issues] = execModifyQuery (Q1_ (R"(
901
+ DECLARE $key AS Int32;
902
+ DECLARE $key1 AS Decimal(1,0);
903
+ DECLARE $key22 AS Decimal(22,9);
904
+ DECLARE $key35 AS Decimal(35,10);
905
+
906
+ DELETE FROM Table WHERE Key = $key AND Key1 = $key1 AND Key22 = $key22 AND Key35 = $key35;
907
+ )" ), deleteParams);
908
+ UNIT_ASSERT_VALUES_EQUAL_C (status, EStatus::SUCCESS, issues);
909
+ }
910
+
911
+ TString expected = R"( [])" ;
912
+ auto selectParams = tableClient.GetParamsBuilder ().Build ();
913
+ {
914
+ auto [status, issues, resultSet] = execSelectQuery (Q1_ (R"(
915
+ SELECT * FROM Table;
916
+ )" ), selectParams);
917
+ UNIT_ASSERT_VALUES_EQUAL_C (status, EStatus::SUCCESS, issues);
918
+ CompareYson (expected, FormatResultSetYson (resultSet));
919
+ }
920
+ }
921
+
875
922
// Declare wrong decimal params
876
923
{
877
924
auto params = tableClient.GetParamsBuilder ()
@@ -890,17 +937,23 @@ Y_UNIT_TEST_SUITE(KqpParams) {
890
937
{
891
938
auto upsertParams = tableClient.GetParamsBuilder ()
892
939
.AddParam (" $key" ).Int32 (1 ).Build ()
940
+ .AddParam (" $key1" ).Decimal (TDecimalValue (" 2" , 1 , 0 )).Build ()
941
+ .AddParam (" $key22" ).Decimal (TDecimalValue (" 1234.4321" , 22 , 9 )).Build ()
942
+ .AddParam (" $key35" ).Decimal (TDecimalValue (" 1555555555555555.1234567890" , 35 , 10 )).Build ()
893
943
.AddParam (" $value22" ).Decimal (TDecimalValue (" 123.321" , 35 , 10 )).Build ()
894
944
.AddParam (" $value35" ).Decimal (TDecimalValue (" 555555555555555.1234567890" , 35 , 10 )).Build ()
895
945
.Build ();
896
946
897
- auto [status, issues] = execUpsertQuery (Q1_ (R"(
947
+ auto [status, issues] = execModifyQuery (Q1_ (R"(
898
948
DECLARE $key AS Int32;
949
+ DECLARE $key1 AS Decimal(1,0);
950
+ DECLARE $key22 AS Decimal(22,9);
951
+ DECLARE $key35 AS Decimal(35,10);
899
952
DECLARE $value22 AS Decimal(22,9);
900
953
DECLARE $value35 AS Decimal(35,10);
901
954
902
- UPSERT INTO Table (Key, Value22, Value35) VALUES
903
- ($key, $value22, $value35);
955
+ UPSERT INTO Table (Key, Key1, Key22, Key35, Value22, Value35) VALUES
956
+ ($key, $key1, $key22, $key35, $ value22, $value35);
904
957
)" ), upsertParams);
905
958
UNIT_ASSERT_VALUES_EQUAL (status, EStatus::BAD_REQUEST);
906
959
UNIT_ASSERT_STRING_CONTAINS (issues, " Parameter $value22 type mismatch" );
@@ -914,7 +967,7 @@ Y_UNIT_TEST_SUITE(KqpParams) {
914
967
.AddParam (" $value35" ).Decimal (TDecimalValue (" 555555555555555.1234567890" , 35 , 10 )).Build ()
915
968
.Build ();
916
969
917
- auto [status, issues] = execUpsertQuery (Q1_ (R"(
970
+ auto [status, issues] = execModifyQuery (Q1_ (R"(
918
971
DECLARE $key AS Int32;
919
972
DECLARE $value22 AS Decimal(35,10);
920
973
DECLARE $value35 AS Decimal(35,10);
@@ -930,39 +983,51 @@ Y_UNIT_TEST_SUITE(KqpParams) {
930
983
{
931
984
auto upsertParams = tableClient.GetParamsBuilder ()
932
985
.AddParam (" $key" ).Int32 (1001 ).Build ()
986
+ .AddParam (" $key1" ).Decimal (TDecimalValue (" 20" , 1 , 0 )).Build ()
987
+ .AddParam (" $key22" ).Decimal (TDecimalValue (" 212345678901234567890.1234567891" , 22 , 9 )).Build ()
988
+ .AddParam (" $key35" ).Decimal (TDecimalValue (" 21234567890123456789012345678901234567890.1234567891" , 35 , 10 )).Build ()
933
989
.AddParam (" $value1" ).Decimal (TDecimalValue (" 10" , 1 , 0 )).Build ()
934
990
.AddParam (" $value22" ).Decimal (TDecimalValue (" 12345678901234567890.1234567891" , 22 , 9 )).Build ()
935
991
.AddParam (" $value35" ).Decimal (TDecimalValue (" 1234567890123456789012345678901234567890.1234567891" , 35 , 10 )).Build ()
936
992
.Build ();
937
993
938
- auto [status, issues] = execUpsertQuery (Q1_ (R"(
994
+ auto [status, issues] = execModifyQuery (Q1_ (R"(
939
995
DECLARE $key AS Int32;
996
+ DECLARE $key1 AS Decimal(1,0);
997
+ DECLARE $key22 AS Decimal(22,9);
998
+ DECLARE $key35 AS Decimal(35,10);
940
999
DECLARE $value1 AS Decimal(1,0);
941
1000
DECLARE $value22 AS Decimal(22,9);
942
1001
DECLARE $value35 AS Decimal(35,10);
943
1002
944
- UPSERT INTO Table (Key, Value1, Value22, Value35) VALUES
945
- ($key, $value1, $value22, $value35);
1003
+ UPSERT INTO Table (Key, Key1, Key22, Key35, Value1, Value22, Value35) VALUES
1004
+ ($key, $key1, $key22, $key35, $ value1, $value22, $value35);
946
1005
)" ), upsertParams);
947
1006
UNIT_ASSERT_VALUES_EQUAL_C (status, EStatus::SUCCESS, issues);
948
1007
}
949
1008
// Good case: Upsert inf Decimal
950
1009
{
951
1010
auto upsertParams = tableClient.GetParamsBuilder ()
952
1011
.AddParam (" $key" ).Int32 (1002 ).Build ()
1012
+ .AddParam (" $key1" ).Decimal (TDecimalValue (" inf" , 1 , 0 )).Build ()
1013
+ .AddParam (" $key22" ).Decimal (TDecimalValue (" inf" , 22 , 9 )).Build ()
1014
+ .AddParam (" $key35" ).Decimal (TDecimalValue (" inf" , 35 , 10 )).Build ()
953
1015
.AddParam (" $value1" ).Decimal (TDecimalValue (" inf" , 1 , 0 )).Build ()
954
1016
.AddParam (" $value22" ).Decimal (TDecimalValue (" inf" , 22 , 9 )).Build ()
955
1017
.AddParam (" $value35" ).Decimal (TDecimalValue (" inf" , 35 , 10 )).Build ()
956
1018
.Build ();
957
1019
958
- auto [status, issues] = execUpsertQuery (Q1_ (R"(
1020
+ auto [status, issues] = execModifyQuery (Q1_ (R"(
959
1021
DECLARE $key AS Int32;
1022
+ DECLARE $key1 AS Decimal(1,0);
1023
+ DECLARE $key22 AS Decimal(22,9);
1024
+ DECLARE $key35 AS Decimal(35,10);
960
1025
DECLARE $value1 AS Decimal(1,0);
961
1026
DECLARE $value22 AS Decimal(22,9);
962
1027
DECLARE $value35 AS Decimal(35,10);
963
1028
964
- UPSERT INTO Table (Key, Value1, Value22, Value35) VALUES
965
- ($key, $value1, $value22, $value35);
1029
+ UPSERT INTO Table (Key, Key1, Key22, Key35, Value1, Value22, Value35) VALUES
1030
+ ($key, $key1, $key22, $key35, $ value1, $value22, $value35);
966
1031
)" ), upsertParams);
967
1032
UNIT_ASSERT_VALUES_EQUAL_C (status, EStatus::SUCCESS, issues);
968
1033
}
@@ -974,8 +1039,8 @@ Y_UNIT_TEST_SUITE(KqpParams) {
974
1039
)" ), emptyParams);
975
1040
UNIT_ASSERT_VALUES_EQUAL_C (status, EStatus::SUCCESS, issues);
976
1041
TString expected = R"( [
977
- [[1001];["inf"];["inf"];["inf"]];
978
- [[1002];["inf"];["inf"];["inf"]]
1042
+ [[1001];["inf"];["inf"];["inf"];["inf"];["inf"];["inf"] ];
1043
+ [[1002];["inf"];["inf"];["inf"];["inf"];["inf"];["inf"] ]
979
1044
])" ;
980
1045
TString actual = FormatResultSetYson (resultSet);
981
1046
CompareYson (expected, actual);
0 commit comments