@@ -127,6 +127,12 @@ class TKiSinkIntentDeterminationTransformer: public TKiSinkVisitorTransformer {
127
127
return TStatus::Ok;
128
128
}
129
129
130
+ TStatus HandleAlterSequence (NNodes::TKiAlterSequence node, TExprContext& ctx) override {
131
+ Y_UNUSED (ctx);
132
+ Y_UNUSED (node);
133
+ return TStatus::Ok;
134
+ }
135
+
130
136
TStatus HandleModifyPermissions (TKiModifyPermissions node, TExprContext& ctx) override {
131
137
ctx.AddError (TIssue (ctx.GetPosition (node.Pos ()), TStringBuilder ()
132
138
<< " ModifyPermissions is not yet implemented for intent determination transformer" ));
@@ -515,7 +521,8 @@ class TKikimrDataSink : public TDataProviderBase
515
521
}
516
522
517
523
if (node.IsCallable (TKiCreateSequence::CallableName ())
518
- || node.IsCallable (TKiDropSequence::CallableName ())) {
524
+ || node.IsCallable (TKiDropSequence::CallableName ())
525
+ || node.IsCallable (TKiAlterSequence::CallableName ())) {
519
526
return true ;
520
527
}
521
528
@@ -707,15 +714,14 @@ class TKikimrDataSink : public TDataProviderBase
707
714
const NCommon::TWriteSequenceSettings& settings, const TKikimrKey& key, TExprContext& ctx)
708
715
{
709
716
YQL_ENSURE (settings.Mode );
710
- auto mode = settings.Mode .Cast ();
711
717
if (node->Child (3 )->Content () != " Void" ) {
712
718
ctx.AddError (TIssue (ctx.GetPosition (node->Pos ()), " Creating sequence with data is not supported." ));
713
719
return nullptr ;
714
720
}
715
721
716
722
auto valueType = settings.ValueType .IsValid ()
717
723
? settings.ValueType .Cast ()
718
- : Build<TCoAtom>(ctx, node->Pos ()).Value (" bigint " ).Done ();
724
+ : Build<TCoAtom>(ctx, node->Pos ()).Value (" int8 " ).Done ();
719
725
720
726
auto temporary = settings.Temporary .IsValid ()
721
727
? settings.Temporary .Cast ()
@@ -755,6 +761,30 @@ class TKikimrDataSink : public TDataProviderBase
755
761
.Ptr ();
756
762
}
757
763
764
+ static TExprNode::TPtr MakeAlterSequence (const TExprNode::TPtr& node,
765
+ const NCommon::TWriteSequenceSettings& settings, const TKikimrKey& key, TExprContext& ctx)
766
+ {
767
+ YQL_ENSURE (settings.Mode );
768
+ bool missingOk = (settings.Mode .Cast ().Value () == " alter_if_exists" );
769
+
770
+ if (node->Child (3 )->Content () != " Void" ) {
771
+ ctx.AddError (TIssue (ctx.GetPosition (node->Pos ()), " Alter sequence with data is not supported." ));
772
+ return nullptr ;
773
+ }
774
+
775
+ return Build<TKiAlterSequence>(ctx, node->Pos ())
776
+ .World (node->Child (0 ))
777
+ .DataSink (node->Child (1 ))
778
+ .Sequence ().Build (key.GetPGObjectId ())
779
+ .SequenceSettings (settings.SequenceSettings .Cast ())
780
+ .Settings (settings.Other )
781
+ .MissingOk <TCoAtom>()
782
+ .Value (missingOk)
783
+ .Build ()
784
+ .Done ()
785
+ .Ptr ();
786
+ }
787
+
758
788
bool RewriteIOExternal (const TKikimrKey& key, const TExprNode::TPtr& node, const TCoAtom& mode, TExprContext& ctx, TExprNode::TPtr& resultNode) {
759
789
TKiDataSink dataSink (node->ChildPtr (1 ));
760
790
auto & tableDesc = SessionCtx->Tables ().GetTable (TString{dataSink.Cluster ()}, key.GetTablePath ());
@@ -1305,6 +1335,8 @@ class TKikimrDataSink : public TDataProviderBase
1305
1335
return MakeCreateSequence (node, settings, key, ctx);
1306
1336
} else if (mode == " drop" || mode == " drop_if_exists" ) {
1307
1337
return MakeDropSequence (node, settings, key, ctx);
1338
+ } else if (mode == " alter" || mode == " alter_if_exists" ) {
1339
+ return MakeAlterSequence (node, settings, key, ctx);
1308
1340
} else {
1309
1341
YQL_ENSURE (false , " unknown Sequence mode \" " << TString (mode) << " \" " );
1310
1342
}
@@ -1544,6 +1576,10 @@ IGraphTransformer::TStatus TKiSinkVisitorTransformer::DoTransform(TExprNode::TPt
1544
1576
return HandleDropSequence (node.Cast (), ctx);
1545
1577
}
1546
1578
1579
+ if (auto node = callable.Maybe <TKiAlterSequence>()) {
1580
+ return HandleAlterSequence (node.Cast (), ctx);
1581
+ }
1582
+
1547
1583
ctx.AddError (TIssue (ctx.GetPosition (input->Pos ()), TStringBuilder () << " (Kikimr DataSink) Unsupported function: "
1548
1584
<< callable.CallableName ()));
1549
1585
return TStatus::Error;
0 commit comments