■ ■ ■ ■ ■ ■
go/libraries/doltcore/sqle/sqlddl_test.go
| skipped 1193 lines |
1194 | 1194 | | panic(err) |
1195 | 1195 | | } |
1196 | 1196 | | // setup |
1197 | | - | root, err = ExecuteSql(dEnv, root, "create table parent (i int, index (i));") |
| 1197 | + | root, err = ExecuteSql(dEnv, root, "create table parent (i int, j int, index (i, j));") |
1198 | 1198 | | require.NoError(t, err) |
1199 | | - | root, err = ExecuteSql(dEnv, root, "create table child (j int, constraint fk_child foreign key (j) references parent (i));") |
| 1199 | + | root, err = ExecuteSql(dEnv, root, "create table child (k int, constraint fk_child foreign key (k) references parent (i));") |
1200 | 1200 | | require.NoError(t, err) |
1201 | 1201 | | |
1202 | 1202 | | // check foreign keys for updated index (or verify they weren't updated) |
| skipped 1 lines |
1204 | 1204 | | require.NoError(t, err) |
1205 | 1205 | | fkChild, ok := fkc.GetByNameCaseInsensitive("fk_child") |
1206 | 1206 | | require.True(t, ok) |
1207 | | - | require.Equal(t, "j", fkChild.TableIndex) |
1208 | | - | require.Equal(t, "i", fkChild.ReferencedTableIndex) |
| 1207 | + | require.Equal(t, "k", fkChild.TableIndex) |
| 1208 | + | require.Equal(t, "ij", fkChild.ReferencedTableIndex) |
1209 | 1209 | | |
1210 | 1210 | | // add primary key |
1211 | 1211 | | root, err = ExecuteSql(dEnv, root, "alter table parent add primary key (i);") |
1212 | 1212 | | require.NoError(t, err) |
1213 | 1213 | | |
1214 | 1214 | | // dropping secondary index, should switch to primary key |
1215 | | - | root, err = ExecuteSql(dEnv, root, "alter table parent drop index i;") |
| 1215 | + | root, err = ExecuteSql(dEnv, root, "alter table parent drop index ij;") |
1216 | 1216 | | require.NoError(t, err) |
1217 | 1217 | | |
1218 | 1218 | | // check foreign keys for updated index (or verify they weren't updated) |
| skipped 1 lines |
1220 | 1220 | | require.NoError(t, err) |
1221 | 1221 | | fkChild, ok = fkc.GetByNameCaseInsensitive("fk_child") |
1222 | 1222 | | require.True(t, ok) |
1223 | | - | require.Equal(t, "j", fkChild.TableIndex) |
| 1223 | + | require.Equal(t, "k", fkChild.TableIndex) |
1224 | 1224 | | require.Equal(t, "", fkChild.ReferencedTableIndex) |
1225 | 1225 | | |
1226 | 1226 | | // drop tables |
| skipped 22 lines |
1249 | 1249 | | require.Equal(t, "j", fkChild.TableIndex) |
1250 | 1250 | | require.Equal(t, "i", fkChild.ReferencedTableIndex) |
1251 | 1251 | | |
1252 | | - | // dropping secondary index, should switch to primary key |
| 1252 | + | // dropping secondary index, should switch to existing index |
1253 | 1253 | | root, err = ExecuteSql(dEnv, root, "alter table parent drop index i;") |
1254 | 1254 | | require.NoError(t, err) |
1255 | 1255 | | fkc, err = root.GetForeignKeyCollection(ctx) |
| skipped 3 lines |
1259 | 1259 | | require.Equal(t, "j", fkChild.TableIndex) |
1260 | 1260 | | require.Equal(t, "i_0", fkChild.ReferencedTableIndex) |
1261 | 1261 | | |
1262 | | - | // dropping secondary index, should switch to primary key |
| 1262 | + | // dropping secondary index, should switch to existing index |
1263 | 1263 | | root, err = ExecuteSql(dEnv, root, "alter table parent drop index i_0;") |
1264 | 1264 | | require.NoError(t, err) |
1265 | 1265 | | fkc, err = root.GetForeignKeyCollection(ctx) |
| skipped 2 lines |
1268 | 1268 | | require.True(t, ok) |
1269 | 1269 | | require.Equal(t, "j", fkChild.TableIndex) |
1270 | 1270 | | require.Equal(t, "i_1", fkChild.ReferencedTableIndex) |
| 1271 | + | |
| 1272 | + | // dropping secondary index, should fail since there are no indexes to replace it |
| 1273 | + | root, err = ExecuteSql(dEnv, root, "alter table parent drop index i_1;") |
| 1274 | + | require.Error(t, err) |
1271 | 1275 | | } |
1272 | 1276 | | |
1273 | 1277 | | func TestCreateIndexUnique(t *testing.T) { |
| skipped 43 lines |