From 5ed24cdbe1bac9e8beec778593bc215829be69c6 Mon Sep 17 00:00:00 2001 From: Aaron Son Date: Mon, 2 Dec 2019 10:50:38 -0800 Subject: [PATCH 1/6] go/go.mod: Pick up view changes in go-mysql-server. --- go/go.mod | 2 +- go/go.sum | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/go/go.mod b/go/go.mod index 766d6c07c1a..fa8b3ddd6a8 100644 --- a/go/go.mod +++ b/go/go.mod @@ -59,7 +59,7 @@ require ( replace github.com/liquidata-inc/dolt/go/gen/proto/dolt/services/eventsapi => ./gen/proto/dolt/services/eventsapi -replace github.com/src-d/go-mysql-server => github.com/liquidata-inc/go-mysql-server v0.4.1-0.20191125230736-ebf9aee2fe67 +replace github.com/src-d/go-mysql-server => github.com/liquidata-inc/go-mysql-server v0.5.1-0.20191202184422-e88d41a9df51 replace vitess.io/vitess => github.com/liquidata-inc/vitess v0.0.0-20191125220844-c7181e70ee98 diff --git a/go/go.sum b/go/go.sum index c0fbb5ec3f1..9a25023573a 100644 --- a/go/go.sum +++ b/go/go.sum @@ -29,8 +29,10 @@ github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpH github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/araddon/dateparse v0.0.0-20190622164848-0fb0a474d195 h1:c4mLfegoDw6OhSJXTd2jUEQgZUQuJWtocudb97Qn9EM= github.com/araddon/dateparse v0.0.0-20190622164848-0fb0a474d195/go.mod h1:SLqhdZcd+dF3TEVL2RMoob5bBP5R1P1qkox+HtCBgGI= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= @@ -203,8 +205,8 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/liquidata-inc/go-mysql-server v0.4.1-0.20191125230736-ebf9aee2fe67 h1:8ZDcYhWV0/yC9ATVsxJXbaFPsR4s2b2VSb83vTYobGs= -github.com/liquidata-inc/go-mysql-server v0.4.1-0.20191125230736-ebf9aee2fe67/go.mod h1:hzni/QFitaMZ9H7hbZ3K+C4BEl75iDKqTIY+Hbvj6VQ= +github.com/liquidata-inc/go-mysql-server v0.5.1-0.20191202184422-e88d41a9df51 h1:6fu7bGpgH+vkpP96t452iBgvMw6cohHlscDSwsptcco= +github.com/liquidata-inc/go-mysql-server v0.5.1-0.20191202184422-e88d41a9df51/go.mod h1:hzni/QFitaMZ9H7hbZ3K+C4BEl75iDKqTIY+Hbvj6VQ= github.com/liquidata-inc/ishell v0.0.0-20190514193646-693241f1f2a0 h1:phMgajKClMUiIr+hF2LGt8KRuUa2Vd2GI1sNgHgSXoU= github.com/liquidata-inc/ishell v0.0.0-20190514193646-693241f1f2a0/go.mod h1:YC1rI9k5gx8D02ljlbxDfZe80s/iq8bGvaaQsvR+qxs= github.com/liquidata-inc/mmap-go v1.0.3 h1:2LndAeAtup9rpvUmu4wZSYCsjCQ0Zpc+NqE+6+PnT7g= From 0aeebb1b1c8f04bae1c809bc5ab89e9557a80f38 Mon Sep 17 00:00:00 2001 From: Aaron Son Date: Tue, 3 Dec 2019 15:13:50 -0800 Subject: [PATCH 2/6] bats/create-views.bats: First pass at create view bats tests. --- bats/create-views.bats | 101 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 bats/create-views.bats diff --git a/bats/create-views.bats b/bats/create-views.bats new file mode 100644 index 00000000000..defdd525b2a --- /dev/null +++ b/bats/create-views.bats @@ -0,0 +1,101 @@ +#!/usr/bin/env bats +load $BATS_TEST_DIRNAME/helper/common.bash + +setup() { + setup_common +} + +teardown() { + teardown_common +} + +@test "create a single view" { + run dolt sql <<< ' +create view four as select 2+2 as res from dual; +select * from four' + [ "$status" -eq 0 ] + [ "${#lines[@]}" -eq 5 ] + [[ "${lines[1]}" =~ ' res ' ]] || false + [[ "${lines[3]}" =~ ' 4 ' ]] || false +} + +@test "drop a single view" { + run dolt sql <<< ' +create view four as select 2+2 as res from dual; +drop view four' + [ "$status" -eq 0 ] +} + +@test "join two views" { + run dolt sql <<< ' +create view four as select 2+2 as res from dual; +create view now as select now() from dual; +select * from four, now' + [ "$status" -eq 0 ] + [ "${#lines[@]}" -eq 5 ] + [[ "${lines[1]}" =~ ' res ' ]] || false + [[ "${lines[3]}" =~ ' 4 ' ]] || false +} + +@test "cannot create view referencing non-existant table" { + run dolt sql <<< ' +create view broken as select id from my_users' + [ "$status" -eq 1 ] + [[ "$output" =~ "table not found: my_users" ]] || false +} + +@test "can create view referencing table" { + run dolt sql <<< ' +create table my_users (id int primary key); +create view will_be_broken as select id from my_users' + [ "$status" -eq 0 ] +} + +@test "can drop table with view referencing it" { + run dolt sql <<< ' +create table my_users (id int primary key); +create view will_be_broken as select id from my_users; +drop table my_users' + [ "$status" -eq 0 ] +} + +@test "view referencing table selects values present when it was created" { + run dolt sql <<< ' +create table my_users (id int primary key); +insert into my_users values (1), (2), (3); +create view my_users_view as select id from my_users order by id asc; +select * from my_users_view' + [ "$status" -eq 0 ] + [ "${#lines[@]}" -eq 7 ] + [[ "${lines[1]}" =~ ' id ' ]] || false + [[ "${lines[3]}" =~ ' 1 ' ]] || false + [[ "${lines[4]}" =~ ' 2 ' ]] || false + [[ "${lines[5]}" =~ ' 3 ' ]] || false +} + +@test "view referencing table selects values inserted after it was created" { + run dolt sql <<< ' +create table my_users (id int primary key); +insert into my_users values (1), (2), (3); +create view my_users_view as select id from my_users order by id asc; +insert into my_users values (4), (5), (6); +select * from my_users_view' + [ "$status" -eq 0 ] + [ "${#lines[@]}" -eq 10 ] + [[ "${lines[1]}" =~ ' id ' ]] || false + [[ "${lines[3]}" =~ ' 1 ' ]] || false + [[ "${lines[4]}" =~ ' 2 ' ]] || false + [[ "${lines[5]}" =~ ' 3 ' ]] || false + [[ "${lines[6]}" =~ ' 4 ' ]] || false + [[ "${lines[7]}" =~ ' 5 ' ]] || false + [[ "${lines[8]}" =~ ' 6 ' ]] || false +} + +@test "selecting from broken view fails" { + run dolt sql <<< ' +create table my_users (id int primary key); +create view will_be_broken as select id from my_users; +drop table my_users; +select * from will_be_broken' + [ "$status" -eq 1 ] +} From f8aacfcb6386ce57824b3d83bfcf878058d6c246 Mon Sep 17 00:00:00 2001 From: Aaron Son Date: Mon, 9 Dec 2019 11:22:18 -0800 Subject: [PATCH 3/6] go/go.mod: Pick up view changes in go-mysql-server. --- go/go.mod | 2 +- go/go.sum | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/go/go.mod b/go/go.mod index fa8b3ddd6a8..5ef70e8dd74 100644 --- a/go/go.mod +++ b/go/go.mod @@ -59,7 +59,7 @@ require ( replace github.com/liquidata-inc/dolt/go/gen/proto/dolt/services/eventsapi => ./gen/proto/dolt/services/eventsapi -replace github.com/src-d/go-mysql-server => github.com/liquidata-inc/go-mysql-server v0.5.1-0.20191202184422-e88d41a9df51 +replace github.com/src-d/go-mysql-server => github.com/liquidata-inc/go-mysql-server v0.5.1-0.20191209191907-fc599b342cf8 replace vitess.io/vitess => github.com/liquidata-inc/vitess v0.0.0-20191125220844-c7181e70ee98 diff --git a/go/go.sum b/go/go.sum index 9a25023573a..b55a0dc49c2 100644 --- a/go/go.sum +++ b/go/go.sum @@ -201,12 +201,19 @@ github.com/klauspost/crc32 v1.2.0/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3H github.com/klauspost/pgzip v1.2.0/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/liquidata-inc/go-mysql-server v0.5.1-0.20191202184422-e88d41a9df51 h1:6fu7bGpgH+vkpP96t452iBgvMw6cohHlscDSwsptcco= -github.com/liquidata-inc/go-mysql-server v0.5.1-0.20191202184422-e88d41a9df51/go.mod h1:hzni/QFitaMZ9H7hbZ3K+C4BEl75iDKqTIY+Hbvj6VQ= +github.com/liquidata-inc/go-mysql-server v0.5.1-0.20191209191907-fc599b342cf8 h1:A+yJuYxjdl9/ptn1+q/Oedf4uLi9vryzXiEjyojDS6A= +github.com/liquidata-inc/go-mysql-server v0.5.1-0.20191209191907-fc599b342cf8/go.mod h1:iARqujLmSiUBBGmGgsAdmRymFm38D+5bIbrOqYjUIi0= github.com/liquidata-inc/ishell v0.0.0-20190514193646-693241f1f2a0 h1:phMgajKClMUiIr+hF2LGt8KRuUa2Vd2GI1sNgHgSXoU= github.com/liquidata-inc/ishell v0.0.0-20190514193646-693241f1f2a0/go.mod h1:YC1rI9k5gx8D02ljlbxDfZe80s/iq8bGvaaQsvR+qxs= github.com/liquidata-inc/mmap-go v1.0.3 h1:2LndAeAtup9rpvUmu4wZSYCsjCQ0Zpc+NqE+6+PnT7g= @@ -468,6 +475,8 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/asn1-ber.v1 v1.0.0-20150924051756-4e86f4367175/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/ini.v1 v1.41.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ldap.v2 v2.5.0/go.mod h1:oI0cpe/D7HRtBQl8aTg+ZmzFUAvu4lsv3eLXMLGFxWk= gopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4= From 6bca0c9be5a082d408f3fc330e91051efc3b6e32 Mon Sep 17 00:00:00 2001 From: Aaron Son Date: Mon, 9 Dec 2019 11:27:54 -0800 Subject: [PATCH 4/6] bats/create-views.bats: Update line number assertions for new output format. --- bats/create-views.bats | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bats/create-views.bats b/bats/create-views.bats index defdd525b2a..1a6ea43c002 100644 --- a/bats/create-views.bats +++ b/bats/create-views.bats @@ -14,7 +14,7 @@ teardown() { create view four as select 2+2 as res from dual; select * from four' [ "$status" -eq 0 ] - [ "${#lines[@]}" -eq 5 ] + [ "${#lines[@]}" -eq 6 ] [[ "${lines[1]}" =~ ' res ' ]] || false [[ "${lines[3]}" =~ ' 4 ' ]] || false } @@ -32,7 +32,7 @@ create view four as select 2+2 as res from dual; create view now as select now() from dual; select * from four, now' [ "$status" -eq 0 ] - [ "${#lines[@]}" -eq 5 ] + [ "${#lines[@]}" -eq 6 ] [[ "${lines[1]}" =~ ' res ' ]] || false [[ "${lines[3]}" =~ ' 4 ' ]] || false } @@ -66,7 +66,7 @@ insert into my_users values (1), (2), (3); create view my_users_view as select id from my_users order by id asc; select * from my_users_view' [ "$status" -eq 0 ] - [ "${#lines[@]}" -eq 7 ] + [ "${#lines[@]}" -eq 8 ] [[ "${lines[1]}" =~ ' id ' ]] || false [[ "${lines[3]}" =~ ' 1 ' ]] || false [[ "${lines[4]}" =~ ' 2 ' ]] || false @@ -81,7 +81,7 @@ create view my_users_view as select id from my_users order by id asc; insert into my_users values (4), (5), (6); select * from my_users_view' [ "$status" -eq 0 ] - [ "${#lines[@]}" -eq 10 ] + [ "${#lines[@]}" -eq 11 ] [[ "${lines[1]}" =~ ' id ' ]] || false [[ "${lines[3]}" =~ ' 1 ' ]] || false [[ "${lines[4]}" =~ ' 2 ' ]] || false From 7f9406b1b2e2f9182985dbc61ad837a087a01492 Mon Sep 17 00:00:00 2001 From: Aaron Son Date: Mon, 9 Dec 2019 12:56:04 -0800 Subject: [PATCH 5/6] bats/create-views.bats: Adopt here-docs. --- bats/create-views.bats | 45 +++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/bats/create-views.bats b/bats/create-views.bats index 1a6ea43c002..c76803fcfe9 100644 --- a/bats/create-views.bats +++ b/bats/create-views.bats @@ -10,9 +10,10 @@ teardown() { } @test "create a single view" { - run dolt sql <<< ' + run dolt sql < Date: Mon, 9 Dec 2019 13:09:29 -0800 Subject: [PATCH 6/6] bats/create-views.bats: PR feedback; rename will_be_broken view. --- bats/create-views.bats | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bats/create-views.bats b/bats/create-views.bats index c76803fcfe9..e835567ebff 100644 --- a/bats/create-views.bats +++ b/bats/create-views.bats @@ -51,7 +51,7 @@ SQL @test "can create view referencing table" { run dolt sql <