@@ -49,6 +49,7 @@ use databend_common_meta_app::schema::index_id_ident::IndexId;
49
49
use databend_common_meta_app:: schema:: index_id_ident:: IndexIdIdent ;
50
50
use databend_common_meta_app:: schema:: index_id_to_name_ident:: IndexIdToNameIdent ;
51
51
use databend_common_meta_app:: schema:: least_visible_time_ident:: LeastVisibleTimeIdent ;
52
+ use databend_common_meta_app:: schema:: sequence_storage:: SequenceStorageIdent ;
52
53
use databend_common_meta_app:: schema:: table_niv:: TableNIV ;
53
54
use databend_common_meta_app:: schema:: CatalogMeta ;
54
55
use databend_common_meta_app:: schema:: CatalogNameIdent ;
@@ -346,7 +347,9 @@ impl SchemaApiTestSuite {
346
347
347
348
suite. get_table_name_by_id ( & b. build ( ) . await ) . await ?;
348
349
suite. get_db_name_by_id ( & b. build ( ) . await ) . await ?;
349
- suite. test_sequence ( & b. build ( ) . await ) . await ?;
350
+
351
+ suite. test_sequence_0 ( & b. build ( ) . await ) . await ?;
352
+ suite. test_sequence_1 ( & b. build ( ) . await ) . await ?;
350
353
351
354
suite. dictionary_create_list_drop ( & b. build ( ) . await ) . await ?;
352
355
Ok ( ( ) )
@@ -5764,9 +5767,28 @@ impl SchemaApiTestSuite {
5764
5767
}
5765
5768
5766
5769
#[ fastrace:: trace]
5767
- async fn test_sequence < MT : SchemaApi + SequenceApi + kvapi:: AsKVApi < Error = MetaError > > (
5770
+ async fn test_sequence_0 < MT : SchemaApi + SequenceApi + kvapi:: AsKVApi < Error = MetaError > > (
5771
+ & self ,
5772
+ mt : & MT ,
5773
+ ) -> anyhow:: Result < ( ) > {
5774
+ self . test_sequence_with_version ( mt, 0 ) . await
5775
+ }
5776
+
5777
+ #[ fastrace:: trace]
5778
+ async fn test_sequence_1 < MT : SchemaApi + SequenceApi + kvapi:: AsKVApi < Error = MetaError > > (
5768
5779
& self ,
5769
5780
mt : & MT ,
5781
+ ) -> anyhow:: Result < ( ) > {
5782
+ self . test_sequence_with_version ( mt, 1 ) . await
5783
+ }
5784
+
5785
+ #[ fastrace:: trace]
5786
+ async fn test_sequence_with_version <
5787
+ MT : SchemaApi + SequenceApi + kvapi:: AsKVApi < Error = MetaError > ,
5788
+ > (
5789
+ & self ,
5790
+ mt : & MT ,
5791
+ storage_version : u64 ,
5770
5792
) -> anyhow:: Result < ( ) > {
5771
5793
let tenant = Tenant {
5772
5794
tenant : "tenant1" . to_string ( ) ,
@@ -5782,6 +5804,7 @@ impl SchemaApiTestSuite {
5782
5804
ident : SequenceIdent :: new ( & tenant, sequence_name) ,
5783
5805
create_on,
5784
5806
comment : Some ( "seq" . to_string ( ) ) ,
5807
+ storage_version,
5785
5808
} ;
5786
5809
5787
5810
let _resp = mt. create_sequence ( req) . await ?;
@@ -5803,14 +5826,16 @@ impl SchemaApiTestSuite {
5803
5826
ident : SequenceIdent :: new ( & tenant, "seq1" ) ,
5804
5827
create_on,
5805
5828
comment : Some ( "seq1" . to_string ( ) ) ,
5829
+ storage_version,
5806
5830
} ;
5807
5831
5808
- let seqs = [ "seq" , "seq1" ] ;
5809
5832
let _resp = mt. create_sequence ( req) . await ?;
5810
5833
let values = mt. list_sequences ( & tenant) . await ?;
5811
- for ( i, ( name, _) ) in values. iter ( ) . enumerate ( ) {
5812
- assert_eq ! ( name, seqs[ i] ) ;
5813
- }
5834
+ assert_eq ! ( values. len( ) , 2 ) ;
5835
+ assert_eq ! ( values[ 0 ] . 0 , sequence_name) ;
5836
+ assert_eq ! ( values[ 0 ] . 1 . current, 1 ) ;
5837
+ assert_eq ! ( values[ 1 ] . 0 , "seq1" ) ;
5838
+ assert_eq ! ( values[ 1 ] . 1 . current, 1 ) ;
5814
5839
}
5815
5840
5816
5841
info ! ( "--- get sequence nextval" ) ;
@@ -5821,7 +5846,7 @@ impl SchemaApiTestSuite {
5821
5846
} ;
5822
5847
let resp = mt. get_sequence_next_value ( req) . await ?;
5823
5848
assert_eq ! ( resp. start, 1 ) ;
5824
- assert_eq ! ( resp. end, 10 ) ;
5849
+ assert_eq ! ( resp. end, 11 ) ;
5825
5850
}
5826
5851
5827
5852
info ! ( "--- get sequence after nextval" ) ;
@@ -5833,13 +5858,24 @@ impl SchemaApiTestSuite {
5833
5858
assert_eq ! ( resp. current, 11 ) ;
5834
5859
}
5835
5860
5861
+ info ! ( "--- list sequence after nextval" ) ;
5862
+ {
5863
+ let values = mt. list_sequences ( & tenant) . await ?;
5864
+ assert_eq ! ( values. len( ) , 2 ) ;
5865
+ assert_eq ! ( values[ 0 ] . 0 , sequence_name) ;
5866
+ assert_eq ! ( values[ 0 ] . 1 . current, 11 ) ;
5867
+ assert_eq ! ( values[ 1 ] . 0 , "seq1" ) ;
5868
+ assert_eq ! ( values[ 1 ] . 1 . current, 1 ) ;
5869
+ }
5870
+
5836
5871
info ! ( "--- replace sequence" ) ;
5837
5872
{
5838
5873
let req = CreateSequenceReq {
5839
5874
create_option : CreateOption :: CreateOrReplace ,
5840
5875
ident : SequenceIdent :: new ( & tenant, sequence_name) ,
5841
5876
create_on,
5842
5877
comment : Some ( "seq1" . to_string ( ) ) ,
5878
+ storage_version,
5843
5879
} ;
5844
5880
5845
5881
let _resp = mt. create_sequence ( req) . await ?;
@@ -5852,6 +5888,7 @@ impl SchemaApiTestSuite {
5852
5888
assert_eq ! ( resp. current, 1 ) ;
5853
5889
}
5854
5890
5891
+ info ! ( "--- drop sequence" ) ;
5855
5892
{
5856
5893
let req = DropSequenceReq {
5857
5894
ident : SequenceIdent :: new ( & tenant, sequence_name) ,
@@ -5863,6 +5900,24 @@ impl SchemaApiTestSuite {
5863
5900
let req = SequenceIdent :: new ( & tenant, sequence_name) ;
5864
5901
let resp = mt. get_sequence ( & req) . await ?;
5865
5902
assert ! ( resp. is_none( ) ) ;
5903
+
5904
+ let storage_ident = SequenceStorageIdent :: new_from ( req) ;
5905
+ let got = mt
5906
+ . as_kv_api ( )
5907
+ . get_kv ( & storage_ident. to_string_key ( ) )
5908
+ . await ?;
5909
+ assert ! (
5910
+ got. is_none( ) ,
5911
+ "storage_version==1 storage should be removed too"
5912
+ ) ;
5913
+ }
5914
+
5915
+ info ! ( "--- list sequence after drop" ) ;
5916
+ {
5917
+ let values = mt. list_sequences ( & tenant) . await ?;
5918
+ assert_eq ! ( values. len( ) , 1 ) ;
5919
+ assert_eq ! ( values[ 0 ] . 0 , "seq1" ) ;
5920
+ assert_eq ! ( values[ 0 ] . 1 . current, 1 ) ;
5866
5921
}
5867
5922
5868
5923
Ok ( ( ) )
0 commit comments