Skip to content

Commit

Permalink
add test
Browse files Browse the repository at this point in the history
Signed-off-by: zhangqiang <[email protected]>
  • Loading branch information
sevev committed Mar 28, 2024
1 parent d680b77 commit 8d2947f
Show file tree
Hide file tree
Showing 4 changed files with 205 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -861,7 +861,8 @@ public void readFields(DataInput in) throws IOException {
case OperationType.OP_MODIFY_ENABLE_PERSISTENT_INDEX:
case OperationType.OP_MODIFY_PRIMARY_INDEX_CACHE_EXPIRE_SEC:
case OperationType.OP_ALTER_TABLE_PROPERTIES:
case OperationType.OP_MODIFY_TABLE_CONSTRAINT_PROPERTY: {
case OperationType.OP_MODIFY_TABLE_CONSTRAINT_PROPERTY:
case OperationType.OP_MODIFY_FAST_SCHEMA_EVOLUTION: {
data = ModifyTablePropertyOperationLog.read(in);
isRead = true;
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,13 @@ protected void runBeforeAll() throws Exception {

createTable(createPKTblStmtStr);

String createDupTbl3StmtStr = "CREATE TABLE IF NOT EXISTS test.sc_dup3 (\n" + "timestamp DATETIME,\n"
+ "type INT,\n" + "error_code INT,\n" + "error_msg VARCHAR(1024),\n" + "op_id BIGINT,\n"
+ "op_time DATETIME)\n" + "DUPLICATE KEY(timestamp, type)\n" + "DISTRIBUTED BY HASH(type) BUCKETS 1\n"
+ "PROPERTIES ('replication_num' = '1', 'fast_schema_evolution' = 'true');";

createTable(createDupTbl3StmtStr);

}

private void waitAlterJobDone(Map<Long, AlterJobV2> alterJobs) throws Exception {
Expand Down Expand Up @@ -437,4 +444,66 @@ public void testSetPrimaryIndexCacheExpireSec() throws Exception {
Assert.assertTrue(e.getMessage().contains("Property primary_index_cache_expire_sec must be integer"));
}
}

@Test
public void testModifyTableFastSchemaEvolution() throws Exception {
LOG.info("dbName: {}", GlobalStateMgr.getCurrentState().getLocalMetastore().listDbNames());

Database db = GlobalStateMgr.getCurrentState().getDb("test");
OlapTable tbl = (OlapTable) db.getTable("sc_dup3");
Locker locker = new Locker();
locker.lockDatabase(db, LockType.READ);
try {
Assertions.assertNotNull(tbl);
System.out.println(tbl.getName());
Assertions.assertEquals("StarRocks", tbl.getEngine());
Assertions.assertEquals(6, tbl.getBaseSchema().size());
} finally {
locker.unLockDatabase(db, LockType.READ);
}

Assertions.assertTrue(tbl.canUseFastSchemaEvolution());
Assertions.assertTrue(tbl.enableFastSchemaEvolution());
// process set property
String modifyStmtStr = "alter table test.sc_dup3 set ('fast_schema_evolution' = 'false');";
AlterTableStmt modifyStmt = (AlterTableStmt) parseAndAnalyzeStmt(modifyStmtStr);
GlobalStateMgr.getCurrentState().getAlterJobMgr().processAlterTable(modifyStmt);
Assertions.assertTrue(tbl.canUseFastSchemaEvolution());
Assertions.assertFalse(tbl.enableFastSchemaEvolution());

int maxColUniqueId = tbl.getMaxColUniqueId();
tbl.setMaxColUniqueId(-1);

Assertions.assertFalse(tbl.canUseFastSchemaEvolution());
Assertions.assertFalse(tbl.enableFastSchemaEvolution());
try {
String modifyStmtStr2 = "alter table test.sc_dup3 set ('fast_schema_evolution' = 'true');";
AlterTableStmt modifyStmt2 = (AlterTableStmt) parseAndAnalyzeStmt(modifyStmtStr2);
GlobalStateMgr.getCurrentState().getAlterJobMgr().processAlterTable(modifyStmt);
} catch (Exception e) {
LOG.warn(e.getMessage());
Assert.assertTrue(e.getMessage().contains("not support modify meta: FAST_SCHEMA_EVOLUTION"));
}

tbl.setMaxColUniqueId(maxColUniqueId);

String addValColStmtStr = "alter table test.sc_dup3 add column new_v1 int default '0'";
AlterTableStmt addValColStmt = (AlterTableStmt) parseAndAnalyzeStmt(addValColStmtStr);
GlobalStateMgr.getCurrentState().getAlterJobMgr().processAlterTable(addValColStmt);
jobSize++;
Map<Long, AlterJobV2> alterJobs = GlobalStateMgr.getCurrentState().getSchemaChangeHandler().getAlterJobsV2();

waitAlterJobDone(alterJobs);
locker.lockDatabase(db, LockType.READ);
try {
Assertions.assertEquals(7, tbl.getBaseSchema().size());
String baseIndexName = tbl.getIndexNameById(tbl.getBaseIndexId());
Assertions.assertEquals(baseIndexName, tbl.getName());
MaterializedIndexMeta indexMeta = tbl.getIndexMetaByIndexId(tbl.getBaseIndexId());
Assertions.assertNotNull(indexMeta);
Assertions.assertEquals(maxColUniqueId + 1, tbl.getMaxColUniqueId());
} finally {
locker.unLockDatabase(db, LockType.READ);
}
}
}
102 changes: 102 additions & 0 deletions test/sql/test_fast_schema_evolution/R/test_fast_schema_evolution
Original file line number Diff line number Diff line change
Expand Up @@ -808,3 +808,105 @@ drop table tab1;
drop database test_alter_with_rollup;
-- result:
-- !result
-- name: test_alter_fast_schema_evolution
create database test_alter_fast_schema_evolution;
-- result:
-- !result
use test_alter_fast_schema_evolution;
-- result:
-- !result
CREATE table tab1 (
k1 INTEGER,
k2 VARCHAR(50),
v1 INTEGER,
v2 INTEGER,
v3 INTEGER,
v4 varchar(50),
v5 varchar(50)
)
ENGINE=OLAP
DUPLICATE KEY(`k1`,`k2`)
DISTRIBUTED BY HASH(`k1`) BUCKETS 1
PROPERTIES (
"replication_num" = "1",
"fast_schema_evolution" = "true"
);
-- result:
-- !result
show create table tab1;
-- result:
tab1 CREATE TABLE `tab1` (
`k1` int(11) NULL COMMENT "",
`k2` varchar(50) NULL COMMENT "",
`v1` int(11) NULL COMMENT "",
`v2` int(11) NULL COMMENT "",
`v3` int(11) NULL COMMENT "",
`v4` varchar(50) NULL COMMENT "",
`v5` varchar(50) NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(`k1`, `k2`)
DISTRIBUTED BY HASH(`k1`) BUCKETS 1
PROPERTIES (
"replication_num" = "1",
"in_memory" = "false",
"enable_persistent_index" = "false",
"replicated_storage" = "true",
"fast_schema_evolution" = "true",
"compression" = "LZ4"
);
-- !result
alter table tab1 set ("fast_schema_evolution" = "false");
-- result:
-- !result
show create table tab1;
-- result:
tab1 CREATE TABLE `tab1` (
`k1` int(11) NULL COMMENT "",
`k2` varchar(50) NULL COMMENT "",
`v1` int(11) NULL COMMENT "",
`v2` int(11) NULL COMMENT "",
`v3` int(11) NULL COMMENT "",
`v4` varchar(50) NULL COMMENT "",
`v5` varchar(50) NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(`k1`, `k2`)
DISTRIBUTED BY HASH(`k1`) BUCKETS 1
PROPERTIES (
"replication_num" = "1",
"in_memory" = "false",
"enable_persistent_index" = "false",
"replicated_storage" = "true",
"compression" = "LZ4"
);
-- !result
alter table tab1 set ("fast_schema_evolution" = "true");
-- result:
-- !result
show create table tab1;
-- result:
tab1 CREATE TABLE `tab1` (
`k1` int(11) NULL COMMENT "",
`k2` varchar(50) NULL COMMENT "",
`v1` int(11) NULL COMMENT "",
`v2` int(11) NULL COMMENT "",
`v3` int(11) NULL COMMENT "",
`v4` varchar(50) NULL COMMENT "",
`v5` varchar(50) NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(`k1`, `k2`)
DISTRIBUTED BY HASH(`k1`) BUCKETS 1
PROPERTIES (
"replication_num" = "1",
"in_memory" = "false",
"enable_persistent_index" = "false",
"replicated_storage" = "true",
"fast_schema_evolution" = "true",
"compression" = "LZ4"
);
-- !result
drop table tab1;
-- result:
-- !result
drop database test_alter_fast_schema_evolution;
-- result:
-- !result
32 changes: 32 additions & 0 deletions test/sql/test_fast_schema_evolution/T/test_fast_schema_evolution
Original file line number Diff line number Diff line change
Expand Up @@ -360,3 +360,35 @@ select * from tab1;

drop table tab1;
drop database test_alter_with_rollup;

-- name: test_alter_fast_schema_evolution
create database test_alter_fast_schema_evolution;
use test_alter_fast_schema_evolution;

CREATE table tab1 (
k1 INTEGER,
k2 VARCHAR(50),
v1 INTEGER,
v2 INTEGER,
v3 INTEGER,
v4 varchar(50),
v5 varchar(50)
)
ENGINE=OLAP
DUPLICATE KEY(`k1`,`k2`)
DISTRIBUTED BY HASH(`k1`) BUCKETS 1
PROPERTIES (
"replication_num" = "1",
"fast_schema_evolution" = "true"
);

show create table tab1;

alter table tab1 set ("fast_schema_evolution" = "false");
show create table tab1;

alter table tab1 set ("fast_schema_evolution" = "true");
show create table tab1;

drop table tab1;
drop database test_alter_fast_schema_evolution;

0 comments on commit 8d2947f

Please sign in to comment.