Skip to content

Commit d2c0af2

Browse files
authored
Merge pull request #2865 from dolthub/angela/splitconjunction
[no-release-notes] Use new single override point for `SplitConjunction`
2 parents f035ce6 + c389a2b commit d2c0af2

6 files changed

Lines changed: 64 additions & 55 deletions

File tree

go.mod

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ require (
99
github.com/dolthub/dolt/go v0.40.5-0.20260615194251-a16fe3baf64b
1010
github.com/dolthub/eventsapi_schema v0.0.0-20260310172945-37a9265ade69
1111
github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2
12-
github.com/dolthub/go-mysql-server v0.20.1-0.20260615190047-8d437133a8e6
12+
github.com/dolthub/go-mysql-server v0.20.1-0.20260623211023-73b94872e61c
1313
github.com/dolthub/pg_query_go/v6 v6.0.0-20251215122834-fb20be4254d1
1414
github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216
15-
github.com/dolthub/vitess v0.0.0-20260604210335-0893abc80542
15+
github.com/dolthub/vitess v0.0.0-20260617012411-2f308f6cdc23
1616
github.com/fatih/color v1.13.0
1717
github.com/goccy/go-json v0.10.2
1818
github.com/gogo/protobuf v1.3.2
@@ -37,12 +37,12 @@ require (
3737
github.com/twpayne/go-geom v1.3.6
3838
github.com/xdg-go/scram v1.2.0
3939
github.com/xdg-go/stringprep v1.0.4
40-
golang.org/x/crypto v0.48.0
40+
golang.org/x/crypto v0.51.0
4141
golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1
42-
golang.org/x/net v0.50.0
42+
golang.org/x/net v0.54.0
4343
golang.org/x/sync v0.20.0
4444
golang.org/x/sys v0.45.0
45-
golang.org/x/text v0.35.0
45+
golang.org/x/text v0.37.0
4646
gopkg.in/src-d/go-errors.v1 v1.0.0
4747
gopkg.in/yaml.v2 v2.4.0
4848
)
@@ -203,12 +203,12 @@ require (
203203
go.uber.org/multierr v1.10.0 // indirect
204204
go.uber.org/zap v1.27.0 // indirect
205205
go.yaml.in/yaml/v2 v2.4.2 // indirect
206-
golang.org/x/mod v0.33.0 // indirect
206+
golang.org/x/mod v0.36.0 // indirect
207207
golang.org/x/oauth2 v0.34.0 // indirect
208-
golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect
209-
golang.org/x/term v0.40.0 // indirect
208+
golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6 // indirect
209+
golang.org/x/term v0.43.0 // indirect
210210
golang.org/x/time v0.12.0 // indirect
211-
golang.org/x/tools v0.42.0 // indirect
211+
golang.org/x/tools v0.45.0 // indirect
212212
google.golang.org/api v0.241.0 // indirect
213213
google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 // indirect
214214
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect

go.sum

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,8 @@ github.com/dolthub/fslock v0.0.5 h1:QoXhBhgY1oumHE26qyE7tgmXUT8qjJwxsIzo54O/B/k=
256256
github.com/dolthub/fslock v0.0.5/go.mod h1:sdofYYqE0D79zNZyB4/kmlnsQOVap1C2yByjGKSirEM=
257257
github.com/dolthub/go-icu-regex v0.0.0-20260610153742-72563bc7ca83 h1:FEMjCGEroDnY/BXyAffVZxUpXhP2GpoUJyyq5KaLn8c=
258258
github.com/dolthub/go-icu-regex v0.0.0-20260610153742-72563bc7ca83/go.mod h1:F3cnm+vMRK1HaU6+rNqQrOCyR03HHhR1GWG2gnPOqaE=
259-
github.com/dolthub/go-mysql-server v0.20.1-0.20260615190047-8d437133a8e6 h1:YvXG44Qdm6NtAHVmC00R+AkogoWTpRppq+FxezrysjM=
260-
github.com/dolthub/go-mysql-server v0.20.1-0.20260615190047-8d437133a8e6/go.mod h1:Q6+pUrFqO9ElSVu02xmSEzdcToXLVqRU+hZYcAa04wU=
259+
github.com/dolthub/go-mysql-server v0.20.1-0.20260623211023-73b94872e61c h1:gGlf80pixECmSO9Rw0pgHKRFG0hVAj6yypkXO13tmAw=
260+
github.com/dolthub/go-mysql-server v0.20.1-0.20260623211023-73b94872e61c/go.mod h1:nd4+RZ0rp2P4JnJ16UwJPEBPN7kfYiaYQscnGyh1NYA=
261261
github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI=
262262
github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q=
263263
github.com/dolthub/ishell v0.0.0-20260414231531-5f031e3e9037 h1:oIW9HwuWrhxv+4HZxA+QQSKHLqWFyXZ2FmNjUYwkdiM=
@@ -268,8 +268,8 @@ github.com/dolthub/pg_query_go/v6 v6.0.0-20251215122834-fb20be4254d1 h1:GY17cGA4
268268
github.com/dolthub/pg_query_go/v6 v6.0.0-20251215122834-fb20be4254d1/go.mod h1:qnrZP3/1slFl2Bq5yw38HLOsArZareGwdpEceriblLc=
269269
github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 h1:JWkKRE4EHUcEVQCMRBej8DYxjYjRz/9MdF/NNQh0o70=
270270
github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216/go.mod h1:e/FIZVvT2IR53HBCAo41NjqgtEnjMJGKca3Y/dAmZaA=
271-
github.com/dolthub/vitess v0.0.0-20260604210335-0893abc80542 h1:0A5Y1IP9ribdYzzWDZwN/NM+oxCfmYh7NuM2xIIrEag=
272-
github.com/dolthub/vitess v0.0.0-20260604210335-0893abc80542/go.mod h1:dKAkzdfRkAudpc0g8JOQ0eiEjV83TYIFz/yNIEdcjXM=
271+
github.com/dolthub/vitess v0.0.0-20260617012411-2f308f6cdc23 h1:1yEYWCBuhxDdbUGorvhA3JPnUIFHZr2qXuJ4AKBHLC0=
272+
github.com/dolthub/vitess v0.0.0-20260617012411-2f308f6cdc23/go.mod h1:5SVEJgAhw5nnQUFnGgKI1Svqes1Mw+zKUsalyxmOuG0=
273273
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
274274
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
275275
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
@@ -895,8 +895,8 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5
895895
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
896896
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
897897
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
898-
golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=
899-
golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
898+
golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI=
899+
golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8=
900900
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
901901
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
902902
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -935,8 +935,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB
935935
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
936936
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
937937
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
938-
golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8=
939-
golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=
938+
golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4=
939+
golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ=
940940
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
941941
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
942942
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -967,8 +967,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
967967
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
968968
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
969969
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
970-
golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60=
971-
golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM=
970+
golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w=
971+
golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ=
972972
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
973973
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
974974
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1038,14 +1038,14 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10381038
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10391039
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
10401040
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
1041-
golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 h1:bTLqdHv7xrGlFbvf5/TXNxy/iUwwdkjhqQTJDjW7aj0=
1042-
golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548=
1041+
golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6 h1:HjU6IWBiAgRIdAJ9/y1rwCn+UELEmwV+VsTLzj/W4sE=
1042+
golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6/go.mod h1:Eqhaxk/wZsWEH8CRxLwj6xzEJbz7k1EFGqx7nyCoabE=
10431043
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
10441044
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
10451045
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
10461046
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
1047-
golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=
1048-
golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM=
1047+
golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4=
1048+
golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk=
10491049
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
10501050
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
10511051
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1056,8 +1056,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
10561056
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
10571057
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
10581058
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
1059-
golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
1060-
golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
1059+
golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
1060+
golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
10611061
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
10621062
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
10631063
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1107,8 +1107,8 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK
11071107
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
11081108
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
11091109
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
1110-
golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
1111-
golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
1110+
golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8=
1111+
golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0=
11121112
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
11131113
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
11141114
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

server/analyzer/init.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ package analyzer
1717
import (
1818
"github.com/dolthub/go-mysql-server/sql/analyzer"
1919
"github.com/dolthub/go-mysql-server/sql/expression"
20-
"github.com/dolthub/go-mysql-server/sql/memo"
2120
"github.com/dolthub/go-mysql-server/sql/plan"
2221
"github.com/dolthub/go-mysql-server/sql/planbuilder"
2322

@@ -126,10 +125,7 @@ func initEngine() {
126125

127126
expression.DefaultExpressionFactory = pgexpression.PostgresExpressionFactory{}
128127

129-
// There are a couple places during analysis where SplitConjunction in GMS cannot correctly split up
130-
// Doltgres expressions, so we need to override the default function used.
131-
analyzer.SplitConjunction = SplitConjunction
132-
memo.SplitConjunction = SplitConjunction
128+
expression.SplitConjunction = splitConjunction
133129
}
134130

135131
// IsAggregateFunc checks if the given function name is an aggregate function. This is the entire set supported by

server/analyzer/split.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,20 @@ import (
2222
pgtypes "github.com/dolthub/doltgresql/server/types"
2323
)
2424

25-
// SplitConjunction breaks AND expressions into their left and right parts, recursively.
26-
func SplitConjunction(ctx *sql.Context, expr sql.Expression) []sql.Expression {
25+
// splitConjunction breaks AND expressions into their left and right parts, recursively.
26+
func splitConjunction(ctx *sql.Context, expr sql.Expression) []sql.Expression {
2727
if expr == nil {
2828
return nil
2929
}
3030
switch expr := expr.(type) {
3131
case *expression.And:
3232
return append(
33-
SplitConjunction(ctx, expr.LeftChild),
34-
SplitConjunction(ctx, expr.RightChild)...,
33+
splitConjunction(ctx, expr.LeftChild),
34+
splitConjunction(ctx, expr.RightChild)...,
3535
)
3636
case *pgexprs.GMSCast:
3737
// We should check to see if we need to preserve the cast on each child individually
38-
split := SplitConjunction(ctx, expr.Child())
38+
split := splitConjunction(ctx, expr.Child())
3939
for i := range split {
4040
if _, ok := split[i].Type(ctx).(*pgtypes.DoltgresType); !ok {
4141
split[i] = pgexprs.NewGMSCast(split[i])

testing/go/index_test.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -285,11 +285,13 @@ func TestBasicIndexing(t *testing.T) {
285285
Query: "explain select * from test join jointable on test.v1 = jointable.v3 and test.v2 = 22 order by 1",
286286
Expected: []sql.Row{
287287
{"InnerJoin"},
288-
{" ├─ (test.v1 = jointable.v3 AND test.v2 = 22)"},
289-
{" ├─ IndexedTableAccess(test)"},
290-
{" │ ├─ index: [test.pk]"},
291-
{" │ ├─ filters: [{[NULL, ∞)}]"},
292-
{" │ └─ columns: [pk v1 v2]"},
288+
{" ├─ test.v1 = jointable.v3"},
289+
{" ├─ Filter"},
290+
{" │ ├─ test.v2 = 22"},
291+
{" │ └─ IndexedTableAccess(test)"},
292+
{" │ ├─ index: [test.pk]"},
293+
{" │ ├─ filters: [{[NULL, ∞)}]"},
294+
{" │ └─ columns: [pk v1 v2]"},
293295
{" └─ Table"},
294296
{" ├─ name: jointable"},
295297
{" └─ columns: [v3 v4]"},
@@ -395,6 +397,9 @@ func TestBasicIndexing(t *testing.T) {
395397
},
396398
},
397399
{
400+
// TODO: Unskip once matched filter expressions are removed from filter nodes
401+
// https://github.com/dolthub/dolt/issues/11231
402+
Skip: true,
398403
Query: "explain select /*+ lookup_join(jointable, test) */ HINT * from test join jointable on test.v1 = jointable.v3 and test.v2 = 22 order by 1",
399404
Expected: []sql.Row{
400405
{"Project"},
@@ -459,11 +464,13 @@ func TestBasicIndexing(t *testing.T) {
459464
Query: "explain select * from test join jointable on test.v1 = jointable.v3 and test.v2 = 22 order by 1",
460465
Expected: []sql.Row{
461466
{"InnerJoin"},
462-
{" ├─ (test.v1 = jointable.v3 AND test.v2 = 22)"},
463-
{" ├─ IndexedTableAccess(test)"},
464-
{" │ ├─ index: [test.pk]"},
465-
{" │ ├─ filters: [{[NULL, ∞)}]"},
466-
{" │ └─ columns: [pk v1 v2]"},
467+
{" ├─ test.v1 = jointable.v3"},
468+
{" ├─ Filter"},
469+
{" │ ├─ test.v2 = 22"},
470+
{" │ └─ IndexedTableAccess(test)"},
471+
{" │ ├─ index: [test.pk]"},
472+
{" │ ├─ filters: [{[NULL, ∞)}]"},
473+
{" │ └─ columns: [pk v1 v2]"},
467474
{" └─ Table"},
468475
{" ├─ name: jointable"},
469476
{" └─ columns: [v3 v4]"},

testing/go/pgcatalog_test.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5191,6 +5191,8 @@ ORDER BY 1,2;`,
51915191
},
51925192
},
51935193
{
5194+
// TODO: The `c.relname = 't2'` filter expression is matched in the IndexedTableAccess and should be
5195+
// removed from the filter node https://github.com/dolthub/dolt/issues/11231
51945196
Query: `EXPLAIN SELECT c.relname, a.attname
51955197
FROM pg_catalog.pg_class c
51965198
JOIN pg_catalog.pg_attribute a
@@ -5204,14 +5206,18 @@ ORDER BY 1,2;`,
52045206
{" ├─ columns: [c.relname, a.attname]"},
52055207
{" └─ Sort(c.relname ASC, a.attname ASC)"},
52065208
{" └─ LookupJoin"},
5207-
{" ├─ (((c.relkind = 'r' AND a.attnum > 0) AND (NOT(a.attisdropped))) AND c.relname = 't2')"},
5208-
{" ├─ TableAlias(a)"},
5209-
{" │ └─ Table"},
5210-
{" │ └─ name: pg_attribute"},
5211-
{" └─ TableAlias(c)"},
5212-
{" └─ IndexedTableAccess(pg_class)"},
5213-
{" ├─ index: [pg_class.oid]"},
5214-
{" └─ keys: a.attrelid"},
5209+
{" ├─ Filter"},
5210+
{" │ ├─ (c.relkind = 'r' AND c.relname = 't2')"},
5211+
{" │ └─ TableAlias(c)"},
5212+
{" │ └─ IndexedTableAccess(pg_class)"},
5213+
{" │ ├─ index: [pg_class.relname,pg_class.relnamespace]"},
5214+
{" │ └─ filters: [{[t2, t2], [NULL, ∞)}]"},
5215+
{" └─ Filter"},
5216+
{" ├─ (a.attnum > 0 AND (NOT(a.attisdropped)))"},
5217+
{" └─ TableAlias(a)"},
5218+
{" └─ IndexedTableAccess(pg_attribute)"},
5219+
{" ├─ index: [pg_attribute.attrelid,pg_attribute.attname]"},
5220+
{" └─ keys: c.oid"},
52155221
},
52165222
},
52175223
},

0 commit comments

Comments
 (0)