@@ -79,11 +79,11 @@ public void alterTableTest() {
7979 Assert .assertEquals (DEFAULT_FAMILY , description .getColumnFamilies ().get (0 ).getName ());
8080
8181 Assert .assertEquals (5 , description .getColumns ().size ());
82- assertColumn (description .getColumns ().get (0 ), "id" , PrimitiveType .Uint64 );
83- assertColumn (description .getColumns ().get (1 ), "code" , PrimitiveType .Text . makeOptional () );
84- assertColumn (description .getColumns ().get (2 ), "size" , PrimitiveType .Float . makeOptional () );
85- assertColumn (description .getColumns ().get (3 ), "created" , PrimitiveType .Timestamp . makeOptional () );
86- assertColumn (description .getColumns ().get (4 ), "data" , PrimitiveType .Text . makeOptional () );
82+ assertColumn (description .getColumns ().get (0 ), "id" , PrimitiveType .Uint64 , true , false );
83+ assertColumn (description .getColumns ().get (1 ), "code" , PrimitiveType .Text );
84+ assertColumn (description .getColumns ().get (2 ), "size" , PrimitiveType .Float );
85+ assertColumn (description .getColumns ().get (3 ), "created" , PrimitiveType .Timestamp );
86+ assertColumn (description .getColumns ().get (4 ), "data" , PrimitiveType .Text );
8787
8888 Assert .assertEquals (2 , description .getIndexes ().size ());
8989 assertIndexSync (description .getIndexes ().get (0 ), "idx1" , Arrays .asList ("id" , "code" ), Collections .emptyList ());
@@ -108,11 +108,11 @@ public void alterTableTest() {
108108 Assert .assertEquals (DEFAULT_FAMILY , description .getColumnFamilies ().get (0 ).getName ());
109109
110110 Assert .assertEquals (5 , description .getColumns ().size ());
111- assertColumn (description .getColumns ().get (0 ), "id" , PrimitiveType .Uint64 );
112- assertColumn (description .getColumns ().get (1 ), "code" , PrimitiveType .Text . makeOptional () );
113- assertColumn (description .getColumns ().get (2 ), "size" , PrimitiveType .Float . makeOptional () );
114- assertColumn (description .getColumns ().get (3 ), "data" , PrimitiveType .Text . makeOptional () );
115- assertColumn (description .getColumns ().get (4 ), "data2" , PrimitiveType .Bytes . makeOptional () );
111+ assertColumn (description .getColumns ().get (0 ), "id" , PrimitiveType .Uint64 , true , false );
112+ assertColumn (description .getColumns ().get (1 ), "code" , PrimitiveType .Text );
113+ assertColumn (description .getColumns ().get (2 ), "size" , PrimitiveType .Float );
114+ assertColumn (description .getColumns ().get (3 ), "data" , PrimitiveType .Text );
115+ assertColumn (description .getColumns ().get (4 ), "data2" , PrimitiveType .Bytes );
116116
117117 Assert .assertEquals (2 , description .getIndexes ().size ());
118118 assertIndexSync (description .getIndexes ().get (0 ), "idx1" , Arrays .asList ("id" , "code" ), Collections .emptyList ());
@@ -135,20 +135,120 @@ public void alterTableTest() {
135135 Assert .assertEquals (DEFAULT_FAMILY , description .getColumnFamilies ().get (0 ).getName ());
136136
137137 Assert .assertEquals (5 , description .getColumns ().size ());
138- assertColumn (description .getColumns ().get (0 ), "id" , PrimitiveType .Uint64 );
139- assertColumn (description .getColumns ().get (1 ), "code" , PrimitiveType .Text .makeOptional ());
140- assertColumn (description .getColumns ().get (2 ), "size" , PrimitiveType .Float .makeOptional ());
141- assertColumn (description .getColumns ().get (3 ), "data" , PrimitiveType .Text .makeOptional ());
142- assertColumn (description .getColumns ().get (4 ), "data2" , PrimitiveType .Bytes .makeOptional ());
138+ assertColumn (description .getColumns ().get (0 ), "id" , PrimitiveType .Uint64 , true , false );
139+ assertColumn (description .getColumns ().get (1 ), "code" , PrimitiveType .Text );
140+ assertColumn (description .getColumns ().get (2 ), "size" , PrimitiveType .Float );
141+ assertColumn (description .getColumns ().get (3 ), "data" , PrimitiveType .Text );
142+ assertColumn (description .getColumns ().get (4 ), "data2" , PrimitiveType .Bytes );
143+
144+ Assert .assertEquals (1 , description .getIndexes ().size ());
145+ assertIndexAsync (description .getIndexes ().get (0 ), "idx2" , Arrays .asList ("data" ), Arrays .asList ("code" ));
146+ }
147+
148+ @ Test
149+ public void alterTableWithSerialTest () {
150+ // --------------------- craete table -----------------------------
151+ Status createStatus = ctx .supplyStatus (session -> session .executeSchemeQuery (""
152+ + "CREATE TABLE alter_table_test ("
153+ + " id BigSerial NOT NULL,"
154+ + " code Text NOT NULL,"
155+ + " size Float,"
156+ + " created Timestamp,"
157+ + " data Text,"
158+ + " PRIMARY KEY(id),"
159+ + " INDEX idx1 GLOBAL ON (id, code),"
160+ + " INDEX idx2 GLOBAL ASYNC ON (data) COVER (code)"
161+ + ")"
162+ )).join ();
163+ Assert .assertTrue ("Create table with indexes " + createStatus , createStatus .isSuccess ());
164+
165+ // --------------------- describe table after creating -----------------------------
166+ Result <TableDescription > describeResult = ctx .supplyResult (session ->session .describeTable (tablePath )).join ();
167+ Assert .assertTrue ("Describe table with indexes " + describeResult .getStatus (), describeResult .isSuccess ());
168+
169+ TableDescription description = describeResult .getValue ();
170+
171+ Assert .assertEquals (TableDescription .StoreType .ROW , description .getStoreType ());
172+ Assert .assertEquals (1 , description .getColumnFamilies ().size ());
173+ Assert .assertEquals (DEFAULT_FAMILY , description .getColumnFamilies ().get (0 ).getName ());
174+
175+ Assert .assertEquals (5 , description .getColumns ().size ());
176+ assertColumn (description .getColumns ().get (0 ), "id" , PrimitiveType .Int64 , true , true );
177+ assertColumn (description .getColumns ().get (1 ), "code" , PrimitiveType .Text , true , false );
178+ assertColumn (description .getColumns ().get (2 ), "size" , PrimitiveType .Float );
179+ assertColumn (description .getColumns ().get (3 ), "created" , PrimitiveType .Timestamp );
180+ assertColumn (description .getColumns ().get (4 ), "data" , PrimitiveType .Text );
181+
182+ Assert .assertEquals (2 , description .getIndexes ().size ());
183+ assertIndexSync (description .getIndexes ().get (0 ), "idx1" , Arrays .asList ("id" , "code" ), Collections .emptyList ());
184+ assertIndexAsync (description .getIndexes ().get (1 ), "idx2" , Arrays .asList ("data" ), Arrays .asList ("code" ));
185+
186+ // --------------------- alter table with changing columns -----------------------------
187+
188+ Status alterStatus = ctx .supplyStatus (
189+ session -> session .alterTable (tablePath , new AlterTableSettings ()
190+ .addNullableColumn ("data2" , PrimitiveType .Bytes )
191+ .dropColumn ("created" ))
192+ ).join ();
193+ Assert .assertTrue ("Alter table with column " + alterStatus , alterStatus .isSuccess ());
194+
195+ // --------------------- describe table after first altering -----------------------------
196+ describeResult = ctx .supplyResult (session ->session .describeTable (tablePath )).join ();
197+ Assert .assertTrue ("Describe table after altering " + describeResult .getStatus (), describeResult .isSuccess ());
198+
199+ description = describeResult .getValue ();
200+
201+ Assert .assertEquals (1 , description .getColumnFamilies ().size ());
202+ Assert .assertEquals (DEFAULT_FAMILY , description .getColumnFamilies ().get (0 ).getName ());
203+
204+ Assert .assertEquals (5 , description .getColumns ().size ());
205+ assertColumn (description .getColumns ().get (0 ), "id" , PrimitiveType .Int64 , true , true );
206+ assertColumn (description .getColumns ().get (1 ), "code" , PrimitiveType .Text , true , false );
207+ assertColumn (description .getColumns ().get (2 ), "size" , PrimitiveType .Float );
208+ assertColumn (description .getColumns ().get (3 ), "data" , PrimitiveType .Text );
209+ assertColumn (description .getColumns ().get (4 ), "data2" , PrimitiveType .Bytes );
210+
211+ Assert .assertEquals (2 , description .getIndexes ().size ());
212+ assertIndexSync (description .getIndexes ().get (0 ), "idx1" , Arrays .asList ("id" , "code" ), Collections .emptyList ());
213+ assertIndexAsync (description .getIndexes ().get (1 ), "idx2" , Arrays .asList ("data" ), Arrays .asList ("code" ));
214+
215+ // --------------------- alter table with changing indexes -----------------------------
216+ alterStatus = ctx .supplyStatus (
217+ session -> session .alterTable (tablePath , new AlterTableSettings ()
218+ .dropIndex ("idx1" ))
219+ ).join ();
220+ Assert .assertTrue ("Alter table with indexes " + alterStatus , alterStatus .isSuccess ());
221+
222+ // --------------------- describe table after first altering -----------------------------
223+ describeResult = ctx .supplyResult (session ->session .describeTable (tablePath )).join ();
224+ Assert .assertTrue ("Describe table after altering " + describeResult .getStatus (), describeResult .isSuccess ());
225+
226+ description = describeResult .getValue ();
227+
228+ Assert .assertEquals (1 , description .getColumnFamilies ().size ());
229+ Assert .assertEquals (DEFAULT_FAMILY , description .getColumnFamilies ().get (0 ).getName ());
230+
231+ Assert .assertEquals (5 , description .getColumns ().size ());
232+ assertColumn (description .getColumns ().get (0 ), "id" , PrimitiveType .Int64 , true , true );
233+ assertColumn (description .getColumns ().get (1 ), "code" , PrimitiveType .Text , true , false );
234+ assertColumn (description .getColumns ().get (2 ), "size" , PrimitiveType .Float );
235+ assertColumn (description .getColumns ().get (3 ), "data" , PrimitiveType .Text );
236+ assertColumn (description .getColumns ().get (4 ), "data2" , PrimitiveType .Bytes );
143237
144238 Assert .assertEquals (1 , description .getIndexes ().size ());
145239 assertIndexAsync (description .getIndexes ().get (0 ), "idx2" , Arrays .asList ("data" ), Arrays .asList ("code" ));
146240 }
147241
148242 private void assertColumn (TableColumn column , String name , Type type ) {
243+ assertColumn (column , name , type , false , false );
244+ }
245+
246+ private void assertColumn (TableColumn column , String name , Type type , boolean isNotNull , boolean hasDefaultValue ) {
149247 Assert .assertEquals (name , column .getName ());
150- Assert .assertEquals (type , column .getType ());
248+ Assert .assertEquals (isNotNull ? type : type . makeOptional () , column .getType ());
151249 Assert .assertEquals (EMPTY_FAMILY , column .getFamily ());
250+ // Assert.assertEquals(isNotNull, column.isNotNull());
251+ Assert .assertEquals (hasDefaultValue , column .hasDefaultValue ());
152252 }
153253
154254 private void assertIndexSync (TableIndex index , String name , List <String > columns , List <String > dataColumns ) {
0 commit comments