@@ -52,6 +52,7 @@ use spacetimedb_lib::{metrics::METRICS, Address};
5252use spacetimedb_primitives:: * ;
5353use spacetimedb_sats:: data_key:: { DataKey , ToDataKey } ;
5454use spacetimedb_sats:: db:: def:: * ;
55+ use spacetimedb_sats:: db:: error:: SchemaErrors ;
5556use spacetimedb_sats:: hash:: Hash ;
5657use spacetimedb_sats:: relation:: RelValue ;
5758use spacetimedb_sats:: {
@@ -993,7 +994,11 @@ impl MutTxId {
993994 return Err ( TableError :: System ( table_schema. table_name . clone ( ) ) . into ( ) ) ;
994995 }
995996
996- table_schema. clone ( ) . into_schema ( 0 . into ( ) ) . validated ( ) ?;
997+ table_schema
998+ . clone ( )
999+ . into_schema ( 0 . into ( ) )
1000+ . validated ( )
1001+ . map_err ( |err| DBError :: Schema ( SchemaErrors ( err) ) ) ?;
9971002
9981003 Ok ( ( ) )
9991004 }
@@ -2968,12 +2973,11 @@ mod tests {
29682973 IndexDef {
29692974 columns: NonEmpty :: new( 1 . into( ) ) ,
29702975 index_name: "name_idx" . into( ) ,
2971- is_unique: false ,
2976+ is_unique: true ,
29722977 index_type: IndexType :: BTree ,
29732978 } ,
29742979 ] )
29752980 . with_column_sequence ( ColId ( 0 ) )
2976- . unwrap ( )
29772981 }
29782982
29792983 #[ rustfmt:: skip]
@@ -2984,11 +2988,11 @@ mod tests {
29842988 map_array ( basic_table_schema_cols ( ) ) ,
29852989 map_array ( [
29862990 IdxSchema { id : 6 , table : 6 , col : 0 , name : "id_idx" , unique : true } ,
2987- IdxSchema { id : 7 , table : 6 , col : 1 , name : "name_idx" , unique : false } ,
2991+ IdxSchema { id : 7 , table : 6 , col : 1 , name : "name_idx" , unique : true } ,
29882992 ] ) ,
29892993 map_array ( [
29902994 ConstraintRow { constraint_id : 6 , table_id : 6 , columns : col ( 0 ) , constraints : Constraints :: unique ( ) , constraint_name : "ct_Foo_id_idx_unique" } ,
2991- ConstraintRow { constraint_id : 7 , table_id : 6 , columns : col ( 1 ) , constraints : Constraints :: indexed ( ) , constraint_name : "ct_Foo_name_idx_indexed " }
2995+ ConstraintRow { constraint_id : 7 , table_id : 6 , columns : col ( 1 ) , constraints : Constraints :: unique ( ) , constraint_name : "ct_Foo_name_idx_unique " }
29922996 ] ) ,
29932997 map_array ( [
29942998 SequenceRow { id : 4 , table : 6 , col_pos : 0 , name : "seq_Foo_id" , start : 1 }
@@ -3072,7 +3076,7 @@ mod tests {
30723076 assert_eq ! ( query. scan_st_indexes( ) ?, map_array( [
30733077 IndexRow { id: 0 , table: 0 , col: col( 0 ) , name: "idx_st_table_table_id_primary_key_auto_unique" , unique: true } ,
30743078 IndexRow { id: 1 , table: 0 , col: col( 1 ) , name: "idx_st_table_table_name_unique" , unique: true } ,
3075- IndexRow { id: 2 , table: 1 , col: cols( 0 , vec![ 1 ] ) , name: "idx_st_columns_table_id_col_pos_unique_unique " , unique: true } ,
3079+ IndexRow { id: 2 , table: 1 , col: cols( 0 , vec![ 1 ] ) , name: "idx_st_columns_table_id_col_pos_unique " , unique: true } ,
30763080 IndexRow { id: 3 , table: 2 , col: col( 0 ) , name: "idx_st_sequence_sequence_id_primary_key_auto_unique" , unique: true } ,
30773081 IndexRow { id: 4 , table: 3 , col: col( 0 ) , name: "idx_st_indexes_index_id_primary_key_auto_unique" , unique: true } ,
30783082 IndexRow { id: 5 , table: 4 , col: col( 0 ) , name: "idx_st_constraints_constraint_id_primary_key_auto_unique" , unique: true } ,
@@ -3393,7 +3397,7 @@ mod tests {
33933397 assert_eq ! ( index_rows, [
33943398 IndexRow { id: 0 , table: 0 , col: col( 0 ) , name: "idx_st_table_table_id_primary_key_auto_unique" , unique: true } ,
33953399 IndexRow { id: 1 , table: 0 , col: col( 1 ) , name: "idx_st_table_table_name_unique" , unique: true } ,
3396- IndexRow { id: 2 , table: 1 , col: cols( 0 , vec![ 1 ] ) , name: "idx_st_columns_table_id_col_pos_unique_unique " , unique: true } ,
3400+ IndexRow { id: 2 , table: 1 , col: cols( 0 , vec![ 1 ] ) , name: "idx_st_columns_table_id_col_pos_unique " , unique: true } ,
33973401 IndexRow { id: 3 , table: 2 , col: col( 0 ) , name: "idx_st_sequence_sequence_id_primary_key_auto_unique" , unique: true } ,
33983402 IndexRow { id: 4 , table: 3 , col: col( 0 ) , name: "idx_st_indexes_index_id_primary_key_auto_unique" , unique: true } ,
33993403 IndexRow { id: 5 , table: 4 , col: col( 0 ) , name: "idx_st_constraints_constraint_id_primary_key_auto_unique" , unique: true } ,
@@ -3436,7 +3440,7 @@ mod tests {
34363440 assert_eq ! ( index_rows, [
34373441 IndexRow { id: 0 , table: 0 , col: col( 0 ) , name: "idx_st_table_table_id_primary_key_auto_unique" , unique: true } ,
34383442 IndexRow { id: 1 , table: 0 , col: col( 1 ) , name: "idx_st_table_table_name_unique" , unique: true } ,
3439- IndexRow { id: 2 , table: 1 , col: cols( 0 , vec![ 1 ] ) , name: "idx_st_columns_table_id_col_pos_unique_unique " , unique: true } ,
3443+ IndexRow { id: 2 , table: 1 , col: cols( 0 , vec![ 1 ] ) , name: "idx_st_columns_table_id_col_pos_unique " , unique: true } ,
34403444 IndexRow { id: 3 , table: 2 , col: col( 0 ) , name: "idx_st_sequence_sequence_id_primary_key_auto_unique" , unique: true } ,
34413445 IndexRow { id: 4 , table: 3 , col: col( 0 ) , name: "idx_st_indexes_index_id_primary_key_auto_unique" , unique: true } ,
34423446 IndexRow { id: 5 , table: 4 , col: col( 0 ) , name: "idx_st_constraints_constraint_id_primary_key_auto_unique" , unique: true } ,
@@ -3479,7 +3483,7 @@ mod tests {
34793483 assert_eq ! ( index_rows, [
34803484 IndexRow { id: 0 , table: 0 , col: col( 0 ) , name: "idx_st_table_table_id_primary_key_auto_unique" , unique: true } ,
34813485 IndexRow { id: 1 , table: 0 , col: col( 1 ) , name: "idx_st_table_table_name_unique" , unique: true } ,
3482- IndexRow { id: 2 , table: 1 , col: cols( 0 , vec![ 1 ] ) , name: "idx_st_columns_table_id_col_pos_unique_unique " , unique: true } ,
3486+ IndexRow { id: 2 , table: 1 , col: cols( 0 , vec![ 1 ] ) , name: "idx_st_columns_table_id_col_pos_unique " , unique: true } ,
34833487 IndexRow { id: 3 , table: 2 , col: col( 0 ) , name: "idx_st_sequence_sequence_id_primary_key_auto_unique" , unique: true } ,
34843488 IndexRow { id: 4 , table: 3 , col: col( 0 ) , name: "idx_st_indexes_index_id_primary_key_auto_unique" , unique: true } ,
34853489 IndexRow { id: 5 , table: 4 , col: col( 0 ) , name: "idx_st_constraints_constraint_id_primary_key_auto_unique" , unique: true } ,
0 commit comments