Projects STRLCPY dolt Commits 26030512
🤬
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    go/libraries/doltcore/doltdb/foreign_key_coll.go
    skipped 185 lines
    186 186   }
    187 187   }
    188 188   
    189  - pkStr := ""
    190  - for _, col := range sch.GetPKCols().GetColumns() {
    191  - pkStr += col.Name
    192  - }
     189 + //pkStr := ""
     190 + //for _, col := range sch.GetPKCols().GetColumns() {
     191 + // pkStr += col.Name
     192 + //}
     193 + // !strings.HasPrefix(strings.ToLower(pkStr), strings.ToLower(fk.ReferencedTableIndex)) &&
    193 194   
    194  - if !strings.HasPrefix(strings.ToLower(pkStr), strings.ToLower(fk.ReferencedTableIndex)) && (fk.ReferencedTableIndex != "" && !sch.Indexes().Contains(fk.ReferencedTableIndex)) || (fk.ReferencedTableIndex == "" && sch.GetPKCols().Size() < len(fk.ReferencedTableColumns)) {
     195 + if (fk.ReferencedTableIndex != "" && !sch.Indexes().Contains(fk.ReferencedTableIndex)) || (fk.ReferencedTableIndex == "" && sch.GetPKCols().Size() < len(fk.ReferencedTableColumns)) {
    195 196   return fmt.Errorf("foreign key `%s` has entered an invalid state, referenced table `%s` is missing the index `%s`",
    196 197   fk.Name, fk.ReferencedTableName, fk.ReferencedTableIndex)
    197 198   }
    skipped 511 lines
  • ■ ■ ■ ■ ■ ■
    go/libraries/doltcore/sqle/enginetest/dolt_engine_test.go
    skipped 107 lines
    108 108   
    109 109  // Convenience test for debugging a single query. Unskip and set to the desired query.
    110 110  func TestSingleScript(t *testing.T) {
    111  - t.Skip()
    112 111   var scripts = []queries.ScriptTest{
    113 112   {
    114  - Name: "trigger before update, with indexed update",
     113 + Name: "DELETE ME",
    115 114   SetUpScript: []string{
    116  - "create table a (x int primary key, y int, unique key (y))",
    117  - "create table b (z int primary key)",
    118  - "insert into a values (1,3), (10,20)",
    119  - "create trigger insert_b before update on a for each row insert into b values (old.x * 10)",
    120  - "update a set x = x + 1 where y = 20",
     115 + "create table parent (i int, index (i))",
     116 + "create table child (j int, foreign key (j) references parent (i))",
     117 + "alter table parent add primary key (i)",
    121 118   },
    122 119   Assertions: []queries.ScriptTestAssertion{
    123 120   {
    124  - Query: "select x, y from a order by 1",
    125  - Expected: []sql.Row{
    126  - {1, 3},
    127  - {11, 20},
    128  - },
    129  - },
    130  - {
    131  - Query: "select z from b",
    132  - Expected: []sql.Row{
    133  - {100},
    134  - },
     121 + Query: "alter table parent drop index i",
     122 + Expected: []sql.Row{},
    135 123   },
    136 124   },
    137 125   },
    skipped 3 lines
    141 129   for _, test := range scripts {
    142 130   enginetest.TestScript(t, harness, test)
    143 131   }
     132 + //t.Skip()
     133 + //var scripts = []queries.ScriptTest{
     134 + // {
     135 + // Name: "trigger before update, with indexed update",
     136 + // SetUpScript: []string{
     137 + // "create table a (x int primary key, y int, unique key (y))",
     138 + // "create table b (z int primary key)",
     139 + // "insert into a values (1,3), (10,20)",
     140 + // "create trigger insert_b before update on a for each row insert into b values (old.x * 10)",
     141 + // "update a set x = x + 1 where y = 20",
     142 + // },
     143 + // Assertions: []queries.ScriptTestAssertion{
     144 + // {
     145 + // Query: "select x, y from a order by 1",
     146 + // Expected: []sql.Row{
     147 + // {1, 3},
     148 + // {11, 20},
     149 + // },
     150 + // },
     151 + // {
     152 + // Query: "select z from b",
     153 + // Expected: []sql.Row{
     154 + // {100},
     155 + // },
     156 + // },
     157 + // },
     158 + // },
     159 + //}
     160 + //
     161 + //harness := newDoltHarness(t)
     162 + //for _, test := range scripts {
     163 + // enginetest.TestScript(t, harness, test)
     164 + //}
    144 165  }
    145 166   
    146 167  func TestSingleQueryPrepared(t *testing.T) {
    skipped 1552 lines
  • ■ ■ ■ ■ ■
    go/libraries/doltcore/sqle/tables.go
    skipped 1866 lines
    1867 1867   if strings.HasPrefix(indexName, "dolt_") {
    1868 1868   return fmt.Errorf("dolt internal indexes may not be dropped")
    1869 1869   }
    1870  - root, err := t.getRoot(ctx)
     1870 + newTable, _, err := t.dropIndex(ctx, indexName)
    1871 1871   if err != nil {
    1872 1872   return err
    1873 1873   }
    1874  - 
    1875  - newTable, _, err := t.dropIndex(ctx, indexName)
     1874 + root, err := t.getRoot(ctx)
    1876 1875   if err != nil {
    1877 1876   return err
    1878 1877   }
    skipped 529 lines
    2408 2407  // dropIndex drops the given index on the given table with the given schema. Returns the updated table and updated schema.
    2409 2408  func (t *AlterableDoltTable) dropIndex(ctx *sql.Context, indexName string) (*doltdb.Table, schema.Schema, error) {
    2410 2409   // RemoveIndex returns an error if the index does not exist, no need to do twice
    2411  - _, err := t.sch.Indexes().RemoveIndex(indexName)
     2410 + oldIdx, err := t.sch.Indexes().RemoveIndex(indexName)
     2411 + if err != nil {
     2412 + return nil, nil, err
     2413 + }
     2414 + 
     2415 + // any foreign keys that used this underlying index need to find another one
     2416 + root, err := t.getRoot(ctx)
     2417 + if err != nil {
     2418 + return nil, nil, err
     2419 + }
     2420 + fkc, err := root.GetForeignKeyCollection(ctx)
     2421 + if err != nil {
     2422 + return nil, nil, err
     2423 + }
     2424 + for _, fk := range fkc.AllKeys() {
     2425 + newIdx, ok, err := findIndexWithPrefix(t.sch, oldIdx.ColumnNames())
     2426 + if err != nil {
     2427 + return nil, nil, err
     2428 + }
     2429 + newFk := fk
     2430 + if ok {
     2431 + newFk.ReferencedTableIndex = newIdx.Name()
     2432 + } else {
     2433 + // if a replacement index wasn't found; it matched on primary key, so use empty string
     2434 + newFk.ReferencedTableIndex = ""
     2435 + }
     2436 + fkc.RemoveKeys(fk)
     2437 + err = fkc.AddKeys(newFk)
     2438 + if err != nil {
     2439 + return nil, nil, err
     2440 + }
     2441 + }
     2442 + root, err = root.PutForeignKeyCollection(ctx, fkc)
     2443 + if err != nil {
     2444 + return nil, nil, err
     2445 + }
     2446 + err = t.setRoot(ctx, root)
    2412 2447   if err != nil {
    2413 2448   return nil, nil, err
    2414 2449   }
    skipped 298 lines
Please wait...
Page is in error, reload to recover