Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
bfd2e29
Stubbing out virtual col read and write
zachmu Oct 2, 2023
ca512f9
Replacing buildTableScan with buildResolveTable in DML / DDL operations
zachmu Oct 2, 2023
79e072a
oops
zachmu Oct 2, 2023
c95444f
First working insert and select of virtual columns
zachmu Oct 2, 2023
7e4e5cf
Fixed bug for basic read / write
zachmu Oct 2, 2023
02fa04e
Out of order column tests
zachmu Oct 2, 2023
61eb433
Bug fix in column projections
zachmu Oct 3, 2023
994e058
checkpoint
zachmu Oct 3, 2023
e833ea0
fixed bug in storage row normalization
zachmu Oct 3, 2023
a37b6b5
Bug fix for assign indexes altering node in place
zachmu Oct 3, 2023
3055c29
Bug fix for subqueries
zachmu Oct 3, 2023
4ee61b0
Added TODO about missed names in fix indexes
zachmu Oct 3, 2023
27d81f2
Deleted obsolete rule file
zachmu Oct 4, 2023
8294ef2
New approach to virtual columns
zachmu Oct 4, 2023
cbfd130
Fixed bug in projectrow for aliased col default exprs
zachmu Oct 4, 2023
21cba08
Fix for projecting full rows of virtual columns
zachmu Oct 4, 2023
13d05b9
Bug fixes for deletes
zachmu Oct 4, 2023
9a7f001
Removed defunct deferred column type
zachmu Oct 4, 2023
547fc2b
Skipped wire tests except in CI
zachmu Oct 4, 2023
e017758
Remove unused interface, created VirtualColumnTable
zachmu Oct 4, 2023
3468bbe
More cleanup, fleshing out virtual column table node
zachmu Oct 4, 2023
54f9ff9
Added debug info and missing methods
zachmu Oct 5, 2023
d2784b9
Checkpoint
zachmu Oct 5, 2023
89ce3a5
Merge branch 'main' into zachmu/virtual
zachmu Oct 5, 2023
ec227dd
starting a new tack for virtual table reads
zachmu Oct 5, 2023
9864e45
getting projection to work
zachmu Oct 9, 2023
9285ab6
Added WithWrappedTable to ResolvedTable, cleaned up some dead code
zachmu Oct 10, 2023
82d4637
Added debug string to process table
zachmu Oct 10, 2023
fd30c19
Fixed virtual column table iteration
zachmu Oct 10, 2023
59a432d
First working version
zachmu Oct 10, 2023
774f73e
Removed unnecessary alias
zachmu Oct 10, 2023
f936cd5
Exported FindVirtualColumnTable
zachmu Oct 10, 2023
90cf9c7
Table wrapping for indexed lookups
zachmu Oct 10, 2023
57ce731
Fixed another hole in index lookups
zachmu Oct 10, 2023
991da70
Bug fix for iteration
zachmu Oct 10, 2023
1b8ca0a
Added index fixes for indexed table access, this breaks everything else
zachmu Oct 10, 2023
92e5a4c
Fixed bug in assign indexes
zachmu Oct 10, 2023
da1cd9d
more big fixing in index setting
zachmu Oct 11, 2023
da40e79
One more bug fix
zachmu Oct 11, 2023
0e080be
Merge branch 'main' into zachmu/virtual
zachmu Oct 11, 2023
cb8fdb3
Fixed printing of process table
zachmu Oct 11, 2023
224eb41
Updated plans, fixed output for processindexable table
zachmu Oct 11, 2023
c462a2a
[ga-format-pr] Run ./format_repo.sh to fix formatting
zachmu Oct 11, 2023
e8051f7
Revert fix index changes
zachmu Oct 11, 2023
65f7281
Fix column indexes for virtual tables at plan building time
zachmu Oct 11, 2023
61b88d8
[ga-format-pr] Run ./format_repo.sh to fix formatting
zachmu Oct 11, 2023
f3a2d9e
PR feedback. Notably, simplified the new table node interfaces
zachmu Oct 11, 2023
bd1d4e0
Better docs for Tablenode and friends
zachmu Oct 11, 2023
5539142
Merge branch 'zachmu/virtual' of github.com:dolthub/go-mysql-server i…
zachmu Oct 11, 2023
fa9ff1c
Reskip single test
zachmu Oct 11, 2023
0d4c8d3
[ga-format-pr] Run ./format_repo.sh to fix formatting
zachmu Oct 11, 2023
6f010cb
Make ProcessIndexableTable print as ProcessTable in the query plans t…
zachmu Oct 11, 2023
d40234b
[ga-format-pr] Run ./format_repo.sh to fix formatting
zachmu Oct 11, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ jobs:
- name: Test
if: ${{ matrix.platform != 'ubuntu-latest' }}
run: go test ./...
env:
CI_TEST: "true"
- name: Test
if: ${{ matrix.platform == 'ubuntu-latest' }}
run: go test -race ./...
env:
CI_TEST: "true"
100 changes: 94 additions & 6 deletions enginetest/memory_engine_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package enginetest_test
import (
"fmt"
"log"
"os"
"testing"

"github.com/stretchr/testify/require"
Expand Down Expand Up @@ -195,19 +196,97 @@ func TestSingleScript(t *testing.T) {
t.Skip()
var scripts = []queries.ScriptTest{
{
Name: "add new generated column",
Name: "virtual column inserts, updates, deletes",
SetUpScript: []string{
"create table t1 (a int primary key, b int)",
"insert into t1 values (1,2), (2,3), (3,4)",
"create table t1 (a int primary key, b int generated always as (a + 1) virtual)",
},
Assertions: []queries.ScriptTestAssertion{
{
Query: "alter table t1 add column c int as (a + b) stored",
Expected: []sql.Row{{types.NewOkResult(0)}},
Query: "insert into t1 (a) values (1), (2), (3)",
Expected: []sql.Row{{types.NewOkResult(3)}},
},
{
Query: "select * from t1 order by a",
Expected: []sql.Row{{1, 2, 3}, {2, 3, 5}, {3, 4, 7}},
Expected: []sql.Row{{1, 2}, {2, 3}, {3, 4}},
},
{
Query: "update t1 set a = 4 where a = 3",
Expected: []sql.Row{{types.OkResult{
RowsAffected: 1,
Info: plan.UpdateInfo{
Matched: 1,
Updated: 1,
}},
}},
},
{
Query: "select * from t1 order by a",
Expected: []sql.Row{{1, 2}, {2, 3}, {4, 5}},
},
{
Query: "delete from t1 where a = 2",
Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}},
},
{
Query: "select * from t1 order by a",
Expected: []sql.Row{{1, 2}, {4, 5}},
},
},
},
{
Name: "virtual column ordering",
SetUpScript: []string{
// virtual is the default for generated columns
"create table t1 (v1 int generated always as (2), a int, v2 int generated always as (a + v1), c int)",
},
Assertions: []queries.ScriptTestAssertion{
{
Query: "insert into t1 (a, c) values (1,5), (3,7)",
Expected: []sql.Row{{types.NewOkResult(2)}},
},
{
Query: "insert into t1 (c, a) values (5,6), (7,8)",
Expected: []sql.Row{{types.NewOkResult(2)}},
},
{
Query: "select * from t1 order by a",
Expected: []sql.Row{
{2, 1, 3, 5},
{2, 3, 5, 7},
{2, 6, 8, 5},
{2, 8, 10, 7},
},
},
{
Query: "update t1 set a = 4 where a = 3",
Expected: []sql.Row{{types.OkResult{
RowsAffected: 1,
Info: plan.UpdateInfo{
Matched: 1,
Updated: 1,
}},
}},
},
{
Query: "select * from t1 order by a",
Expected: []sql.Row{
{2, 1, 3, 5},
{2, 4, 6, 7},
{2, 6, 8, 5},
{2, 8, 10, 7},
},
},
{
Query: "delete from t1 where v2 = 6",
Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}},
},
{
Query: "select * from t1 order by a",
Expected: []sql.Row{
{2, 1, 3, 5},
{2, 6, 8, 5},
{2, 8, 10, 7},
},
},
},
},
Expand Down Expand Up @@ -827,16 +906,25 @@ func TestCharsetCollationEngine(t *testing.T) {
}

func TestCharsetCollationWire(t *testing.T) {
if _, ok := os.LookupEnv("CI_TEST"); !ok {
t.Skip("Skipping test that requires CI_TEST=true")
}
harness := enginetest.NewDefaultMemoryHarness()
enginetest.TestCharsetCollationWire(t, harness, harness.SessionBuilder())
}

func TestDatabaseCollationWire(t *testing.T) {
if _, ok := os.LookupEnv("CI_TEST"); !ok {
t.Skip("Skipping test that requires CI_TEST=true")
}
harness := enginetest.NewDefaultMemoryHarness()
enginetest.TestDatabaseCollationWire(t, harness, harness.SessionBuilder())
}

func TestTypesOverWire(t *testing.T) {
if _, ok := os.LookupEnv("CI_TEST"); !ok {
t.Skip("Skipping test that requires CI_TEST=true")
}
harness := enginetest.NewDefaultMemoryHarness()
enginetest.TestTypesOverWire(t, harness, harness.SessionBuilder())
}
Expand Down
Empty file modified enginetest/queries/alter_table_queries.go
100755 → 100644
Empty file.
Empty file modified enginetest/queries/column_defaults.go
100755 → 100644
Empty file.
96 changes: 96 additions & 0 deletions enginetest/queries/generated_columns.go
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package queries

import (
"github.com/dolthub/go-mysql-server/sql"
"github.com/dolthub/go-mysql-server/sql/plan"
"github.com/dolthub/go-mysql-server/sql/types"
)

Expand Down Expand Up @@ -175,4 +176,99 @@ var GeneratedColumnTests = []ScriptTest{
},
},
},
{
Name: "virtual column inserts, updates, deletes",
SetUpScript: []string{
"create table t1 (a int primary key, b int generated always as (a + 1) virtual)",
},
Assertions: []ScriptTestAssertion{
{
Query: "insert into t1 (a) values (1), (2), (3)",
Expected: []sql.Row{{types.NewOkResult(3)}},
},
{
Query: "select * from t1 order by a",
Expected: []sql.Row{{1, 2}, {2, 3}, {3, 4}},
},
{
Query: "update t1 set a = 4 where a = 3",
Expected: []sql.Row{{types.OkResult{
RowsAffected: 1,
Info: plan.UpdateInfo{
Matched: 1,
Updated: 1,
}},
}},
},
{
Query: "select * from t1 order by a",
Expected: []sql.Row{{1, 2}, {2, 3}, {4, 5}},
},
{
Query: "delete from t1 where a = 2",
Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}},
},
{
Query: "select * from t1 order by a",
Expected: []sql.Row{{1, 2}, {4, 5}},
},
},
},
{
Name: "virtual column ordering",
SetUpScript: []string{
// virtual is the default for generated columns
"create table t1 (v1 int generated always as (2), a int, v2 int generated always as (a + v1), c int)",
},
Assertions: []ScriptTestAssertion{
{
Query: "insert into t1 (a, c) values (1,5), (3,7)",
Expected: []sql.Row{{types.NewOkResult(2)}},
},
{
Query: "insert into t1 (c, a) values (5,6), (7,8)",
Expected: []sql.Row{{types.NewOkResult(2)}},
},
{
Query: "select * from t1 order by a",
Expected: []sql.Row{
{2, 1, 3, 5},
{2, 3, 5, 7},
{2, 6, 8, 5},
{2, 8, 10, 7},
},
},
{
Query: "update t1 set a = 4 where a = 3",
Expected: []sql.Row{{types.OkResult{
RowsAffected: 1,
Info: plan.UpdateInfo{
Matched: 1,
Updated: 1,
}},
}},
},
{
Query: "select * from t1 order by a",
Expected: []sql.Row{
{2, 1, 3, 5},
{2, 4, 6, 7},
{2, 6, 8, 5},
{2, 8, 10, 7},
},
},
{
Query: "delete from t1 where v2 = 6",
Expected: []sql.Row{{types.OkResult{RowsAffected: 1}}},
},
{
Query: "select * from t1 order by a",
Expected: []sql.Row{
{2, 1, 3, 5},
{2, 6, 8, 5},
{2, 8, 10, 7},
},
},
},
},
}
Loading