Projects STRLCPY dolt Commits 1af36245
🤬
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    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
  • ■ ■ ■ ■ ■
    go/libraries/doltcore/sqle/tables.go
    skipped 2452 lines
    2453 2453   return nil, nil, err
    2454 2454   }
    2455 2455   for _, fk := range fkc.AllKeys() {
    2456  - newIdx, ok, err := findIndexWithPrefix(t.sch, oldIdx.ColumnNames())
     2456 + if fk.ReferencedTableIndex != oldIdx.Name() {
     2457 + continue
     2458 + }
     2459 + // get column names from tags in foreign key
     2460 + fkParentCols := make([]string, len(fk.ReferencedTableColumns))
     2461 + for i, colName := range fk.ReferencedTableColumns {
     2462 + col, _ := oldIdx.GetColumn(colName)
     2463 + fkParentCols[i] = col.Name
     2464 + }
     2465 + newIdx, ok, err := findIndexWithPrefix(t.sch, fkParentCols)
    2457 2466   if err != nil {
    2458 2467   return nil, nil, err
    2459 2468   }
    skipped 319 lines
Please wait...
Page is in error, reload to recover