Skip to content

Commit b2e05b5

Browse files
kyleconroyclaude
andauthored
Migrate MySQL parser from tidb to sqlc-dev/marino (#4414)
* Migrate MySQL parser from tidb to sqlc-dev/marino Marino is a sqlc-maintained hard fork of pingcap/parser with a flatter package layout. The previous test_driver concrete types (ValueExpr, ParamMarkerExpr) are merged into the ast package as ValueExprBase and ParamMarkerExprBase. - Swap github.com/pingcap/tidb/pkg/parser for github.com/sqlc-dev/marino - Drop pingcap/uber/lumberjack transitive deps no longer needed - Update dolphin imports to marino's flatter layout (no pkg/parser/...) - Replace driver.ValueExpr/ParamMarkerExpr type assertions with pcast.ValueExprBase/ParamMarkerExprBase - Replace n.TexprNode.Type with promoted n.Type (marino's exprNode is unexported, but Type is promoted via field embedding) * Pin sqlc-dev/marino to v0.1.0 --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent fb98311 commit b2e05b5

6 files changed

Lines changed: 33 additions & 86 deletions

File tree

go.mod

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ require (
1717
github.com/lib/pq v1.12.3
1818
github.com/ncruces/go-sqlite3 v0.34.0
1919
github.com/pganalyze/pg_query_go/v6 v6.2.2
20-
github.com/pingcap/tidb/pkg/parser v0.0.0-20260418072757-ce92298d1124
2120
github.com/riza-io/grpc-go v0.2.0
2221
github.com/spf13/cobra v1.10.2
2322
github.com/spf13/pflag v1.0.10
2423
github.com/sqlc-dev/doubleclick v1.0.0
24+
github.com/sqlc-dev/marino v0.1.0
2525
github.com/tetratelabs/wazero v1.11.0
2626
github.com/wasilibs/go-pgquery v0.0.0-20250409022910-10ac41983c07
2727
github.com/xeipuuv/gojsonschema v1.2.0
@@ -34,28 +34,21 @@ require (
3434
require (
3535
cel.dev/expr v0.25.1 // indirect
3636
filippo.io/edwards25519 v1.1.1 // indirect
37-
github.com/coreos/go-semver v0.3.1 // indirect
3837
github.com/inconshreveable/mousetrap v1.1.0 // indirect
3938
github.com/jackc/pgpassfile v1.0.0 // indirect
4039
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
4140
github.com/jackc/puddle/v2 v2.2.2 // indirect
41+
github.com/kr/text v0.2.0 // indirect
4242
github.com/ncruces/go-sqlite3-wasm/v2 v2.1.35300 // indirect
4343
github.com/ncruces/julianday v1.0.0 // indirect
44-
github.com/pingcap/errors v0.11.5-0.20250523034308-74f78ae071ee // indirect
45-
github.com/pingcap/failpoint v0.0.0-20240528011301-b51a646c7c86 // indirect
46-
github.com/pingcap/log v1.1.0 // indirect
4744
github.com/rogpeppe/go-internal v1.10.0 // indirect
4845
github.com/wasilibs/wazero-helpers v0.0.0-20240620070341-3dff1577cd52 // indirect
4946
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
5047
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
51-
go.uber.org/atomic v1.11.0 // indirect
52-
go.uber.org/multierr v1.11.0 // indirect
53-
go.uber.org/zap v1.27.0 // indirect
5448
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect
5549
golang.org/x/net v0.49.0 // indirect
5650
golang.org/x/sys v0.43.0 // indirect
5751
golang.org/x/text v0.36.0 // indirect
5852
google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 // indirect
5953
google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect
60-
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
6154
)

go.sum

Lines changed: 3 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@ cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
22
cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
33
filippo.io/edwards25519 v1.1.1 h1:YpjwWWlNmGIDyXOn8zLzqiD+9TyIlPhGFG96P39uBpw=
44
filippo.io/edwards25519 v1.1.1/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
5-
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
65
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
76
github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=
8-
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
97
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
108
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
11-
github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
12-
github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
139
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
10+
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
1411
github.com/cubicdaiya/gonp v1.0.4 h1:ky2uIAJh81WiLcGKBVD5R7KsM/36W6IqqTy6Bo6rGws=
1512
github.com/cubicdaiya/gonp v1.0.4/go.mod h1:iWGuP/7+JVTn02OWhRemVbMmG1DOUnmrGTYYACpOI0I=
1613
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -44,11 +41,8 @@ github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo
4441
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
4542
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
4643
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
47-
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
4844
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
4945
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
50-
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
51-
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
5246
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
5347
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
5448
github.com/lib/pq v1.12.3 h1:tTWxr2YLKwIvK90ZXEw8GP7UFHtcbTtty8zsI+YjrfQ=
@@ -61,16 +55,6 @@ github.com/ncruces/julianday v1.0.0 h1:fH0OKwa7NWvniGQtxdJRxAgkBMolni2BjDHaWTxqt
6155
github.com/ncruces/julianday v1.0.0/go.mod h1:Dusn2KvZrrovOMJuOt0TNXL6tB7U2E8kvza5fFc9G7g=
6256
github.com/pganalyze/pg_query_go/v6 v6.2.2 h1:O0L6zMC226R82RF3X5n0Ki6HjytDsoAzuzp4ATVAHNo=
6357
github.com/pganalyze/pg_query_go/v6 v6.2.2/go.mod h1:Cn6+j4870kJz3iYNsb0VsNG04vpSWgEvBwc590J4qD0=
64-
github.com/pingcap/errors v0.11.0/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
65-
github.com/pingcap/errors v0.11.5-0.20250523034308-74f78ae071ee h1:/IDPbpzkzA97t1/Z1+C3KlxbevjMeaI6BQYxvivu4u8=
66-
github.com/pingcap/errors v0.11.5-0.20250523034308-74f78ae071ee/go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg=
67-
github.com/pingcap/failpoint v0.0.0-20240528011301-b51a646c7c86 h1:tdMsjOqUR7YXHoBitzdebTvOjs/swniBTOLy5XiMtuE=
68-
github.com/pingcap/failpoint v0.0.0-20240528011301-b51a646c7c86/go.mod h1:exzhVYca3WRtd6gclGNErRWb1qEgff3LYta0LvRmON4=
69-
github.com/pingcap/log v1.1.0 h1:ELiPxACz7vdo1qAvvaWJg1NrYFoY6gqAh/+Uo6aXdD8=
70-
github.com/pingcap/log v1.1.0/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4=
71-
github.com/pingcap/tidb/pkg/parser v0.0.0-20260418072757-ce92298d1124 h1:zYmP5fBH+i2yhhU6f5uOol6zxHtR2/sD47BsJLfy0oU=
72-
github.com/pingcap/tidb/pkg/parser v0.0.0-20260418072757-ce92298d1124/go.mod h1:zDLDsfNBU5+L6T4J9/OgWAHc/WZvMUjbpgHqQ/t3yKo=
73-
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
7458
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
7559
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
7660
github.com/riza-io/grpc-go v0.2.0 h1:2HxQKFVE7VuYstcJ8zqpN84VnAoJ4dCL6YFhJewNcHQ=
@@ -85,9 +69,10 @@ github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
8569
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
8670
github.com/sqlc-dev/doubleclick v1.0.0 h1:2/OApfQ2eLgcfa/Fqs8WSMA6atH0G8j9hHbQIgMfAXI=
8771
github.com/sqlc-dev/doubleclick v1.0.0/go.mod h1:ODHRroSrk/rr5neRHlWMSRijqOak8YmNaO3VAZCNl5Y=
72+
github.com/sqlc-dev/marino v0.1.0 h1:8Fn13vFhx7OUcmDFfRZdf3zARAbNl04Lcy74211ZpIw=
73+
github.com/sqlc-dev/marino v0.1.0/go.mod h1:mQxC2dgDE0DWHMb2B5jZNk7KToJuS6wnxnffBfYnq08=
8874
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
8975
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
90-
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
9176
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
9277
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
9378
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
@@ -115,44 +100,18 @@ go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2W
115100
go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew=
116101
go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI=
117102
go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA=
118-
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
119-
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
120-
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
121-
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
122-
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
123-
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
124-
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
125-
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
126-
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
127-
go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
128-
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
129-
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
130-
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
131-
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
132-
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
133103
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
134104
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
135-
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
136105
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o=
137106
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=
138-
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
139-
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
140-
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
141107
golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=
142108
golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8=
143-
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
144109
golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
145110
golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
146-
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
147111
golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
148112
golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
149-
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
150113
golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
151114
golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
152-
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
153-
golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
154-
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
155-
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
156115
gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
157116
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
158117
google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 h1:vmC/ws+pLzWjj/gzApyoZuSVrDtF1aod4u/+bbj8hgM=
@@ -164,15 +123,8 @@ google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07
164123
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
165124
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
166125
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
167-
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
168126
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
169127
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
170-
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
171-
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
172-
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
173-
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
174-
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
175128
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
176-
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
177129
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
178130
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

internal/engine/dolphin/CLAUDE.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,36 @@
11
# Dolphin Engine (MySQL) - Claude Code Guide
22

3-
The dolphin engine handles MySQL parsing and AST conversion using the TiDB parser.
3+
The dolphin engine handles MySQL parsing and AST conversion using the Marino parser
4+
(a sqlc-maintained fork of the TiDB / pingcap parser).
45

56
## Architecture
67

78
### Parser Flow
89
```
9-
SQL String → TiDB Parser → TiDB AST → sqlc AST → Analysis/Codegen
10+
SQL String → Marino Parser → Marino AST → sqlc AST → Analysis/Codegen
1011
```
1112

1213
### Key Files
13-
- `convert.go` - Converts TiDB AST nodes to sqlc AST nodes
14+
- `convert.go` - Converts Marino AST nodes to sqlc AST nodes
1415
- `format.go` - MySQL-specific formatting (identifiers, types, parameters)
1516
- `parse.go` - Entry point for parsing MySQL SQL
1617

17-
## TiDB Parser
18+
## Marino Parser
1819

19-
The TiDB parser (`github.com/pingcap/tidb/pkg/parser`) is used for MySQL parsing:
20+
The Marino parser (`github.com/sqlc-dev/marino`) is used for MySQL parsing. It is a
21+
hard fork of `github.com/pingcap/tidb/pkg/parser` with a flatter package layout
22+
(no `pkg/parser/...` prefix) and the former `test_driver` types merged into the
23+
`ast` package as `ValueExprBase` / `ParamMarkerExprBase`.
2024

2125
```go
2226
import (
23-
pcast "github.com/pingcap/tidb/pkg/parser/ast"
24-
"github.com/pingcap/tidb/pkg/parser/mysql"
25-
"github.com/pingcap/tidb/pkg/parser/types"
27+
pcast "github.com/sqlc-dev/marino/ast"
28+
"github.com/sqlc-dev/marino/mysql"
29+
"github.com/sqlc-dev/marino/types"
2630
)
2731
```
2832

29-
### Common TiDB Types
33+
### Common Marino Types
3034
- `pcast.SelectStmt`, `pcast.InsertStmt`, etc. - Statement types
3135
- `pcast.ColumnNameExpr` - Column reference
3236
- `pcast.FuncCallExpr` - Function call

internal/engine/dolphin/convert.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@ import (
55
"strconv"
66
"strings"
77

8-
pcast "github.com/pingcap/tidb/pkg/parser/ast"
9-
"github.com/pingcap/tidb/pkg/parser/mysql"
10-
"github.com/pingcap/tidb/pkg/parser/opcode"
11-
driver "github.com/pingcap/tidb/pkg/parser/test_driver"
12-
"github.com/pingcap/tidb/pkg/parser/types"
8+
pcast "github.com/sqlc-dev/marino/ast"
9+
"github.com/sqlc-dev/marino/mysql"
10+
"github.com/sqlc-dev/marino/opcode"
11+
"github.com/sqlc-dev/marino/types"
1312

1413
"github.com/sqlc-dev/sqlc/internal/debug"
1514
"github.com/sqlc-dev/sqlc/internal/sql/ast"
@@ -251,7 +250,7 @@ func convertColumnDef(def *pcast.ColumnDef) *ast.ColumnDef {
251250
for _, opt := range def.Options {
252251
switch opt.Tp {
253252
case pcast.ColumnOptionComment:
254-
if value, ok := opt.Expr.(*driver.ValueExpr); ok {
253+
if value, ok := opt.Expr.(*pcast.ValueExprBase); ok {
255254
comment = value.GetString()
256255
}
257256
}
@@ -531,7 +530,7 @@ func (c *cc) convertLists(lists [][]pcast.ExprNode) *ast.List {
531530
return list
532531
}
533532

534-
func (c *cc) convertParamMarkerExpr(n *driver.ParamMarkerExpr) *ast.ParamRef {
533+
func (c *cc) convertParamMarkerExpr(n *pcast.ParamMarkerExprBase) *ast.ParamRef {
535534
// Parameter numbers start at one
536535
c.paramCount += 1
537536
return &ast.ParamRef{
@@ -672,8 +671,8 @@ func (c *cc) convertUpdateStmt(n *pcast.UpdateStmt) *ast.UpdateStmt {
672671
return stmt
673672
}
674673

675-
func (c *cc) convertValueExpr(n *driver.ValueExpr) *ast.A_Const {
676-
switch n.TexprNode.Type.GetType() {
674+
func (c *cc) convertValueExpr(n *pcast.ValueExprBase) *ast.A_Const {
675+
switch n.Type.GetType() {
677676
case mysql.TypeBit:
678677
case mysql.TypeDate:
679678
case mysql.TypeDatetime:
@@ -758,14 +757,14 @@ func (c *cc) convertAggregateFuncExpr(n *pcast.AggregateFuncExpr) *ast.FuncCall
758757
var separator string
759758
if name == "group_concat" && len(args) >= 2 {
760759
// The last arg is always the separator
761-
if value, ok := args[len(args)-1].(*driver.ValueExpr); ok {
760+
if value, ok := args[len(args)-1].(*pcast.ValueExprBase); ok {
762761
separator = value.GetString()
763762
args = args[:len(args)-1]
764763
}
765764
}
766765

767766
for _, a := range args {
768-
if value, ok := a.(*driver.ValueExpr); ok {
767+
if value, ok := a.(*pcast.ValueExprBase); ok {
769768
if value.GetInt64() == int64(1) {
770769
fn.AggStar = true
771770
continue
@@ -1649,10 +1648,10 @@ func (c *cc) convertProcedureInfo(n *pcast.ProcedureInfo) ast.Node {
16491648
func (c *cc) convert(node pcast.Node) ast.Node {
16501649
switch n := node.(type) {
16511650

1652-
case *driver.ParamMarkerExpr:
1651+
case *pcast.ParamMarkerExprBase:
16531652
return c.convertParamMarkerExpr(n)
16541653

1655-
case *driver.ValueExpr:
1654+
case *pcast.ValueExprBase:
16561655
return c.convertValueExpr(n)
16571656

16581657
case *pcast.AdminStmt:

internal/engine/dolphin/parse.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import (
77
"strconv"
88
"strings"
99

10-
"github.com/pingcap/tidb/pkg/parser"
11-
_ "github.com/pingcap/tidb/pkg/parser/test_driver"
10+
"github.com/sqlc-dev/marino/parser"
1211

1312
"github.com/sqlc-dev/sqlc/internal/source"
1413
"github.com/sqlc-dev/sqlc/internal/sql/ast"

internal/engine/dolphin/utils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package dolphin
22

33
import (
4-
pcast "github.com/pingcap/tidb/pkg/parser/ast"
5-
"github.com/pingcap/tidb/pkg/parser/mysql"
4+
pcast "github.com/sqlc-dev/marino/ast"
5+
"github.com/sqlc-dev/marino/mysql"
66

77
"github.com/sqlc-dev/sqlc/internal/sql/ast"
88
)

0 commit comments

Comments
 (0)