Skip to content

Commit 15efbd0

Browse files
committed
catalog/tabledesc: break dependency on sql/parser
Release note: None
1 parent 1194029 commit 15efbd0

File tree

11 files changed

+44
-33
lines changed

11 files changed

+44
-33
lines changed

pkg/sql/catalog/seqexpr/BUILD.bazel

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ go_library(
99
deps = [
1010
"//pkg/sql/catalog/descpb",
1111
"//pkg/sql/catalog/funcdesc",
12-
"//pkg/sql/parser",
12+
"//pkg/sql/parserutils",
1313
"//pkg/sql/pgwire/pgcode",
1414
"//pkg/sql/pgwire/pgerror",
1515
"//pkg/sql/sem/builtins/builtinconstants",
@@ -24,9 +24,9 @@ go_test(
2424
srcs = ["sequence_test.go"],
2525
deps = [
2626
":seqexpr",
27+
"//pkg/sql",
2728
"//pkg/sql/catalog/descpb",
2829
"//pkg/sql/parser",
29-
"//pkg/sql/sem/builtins",
3030
"//pkg/sql/sem/tree",
3131
"//pkg/sql/types",
3232
"@com_github_stretchr_testify//require",

pkg/sql/catalog/seqexpr/sequence.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616

1717
"github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb"
1818
"github.com/cockroachdb/cockroach/pkg/sql/catalog/funcdesc"
19-
"github.com/cockroachdb/cockroach/pkg/sql/parser"
19+
"github.com/cockroachdb/cockroach/pkg/sql/parserutils"
2020
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgcode"
2121
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror"
2222
"github.com/cockroachdb/cockroach/pkg/sql/sem/builtins/builtinconstants"
@@ -235,7 +235,7 @@ func UpgradeSequenceReferenceInExpr(
235235

236236
// With this "reverse" mapping, we can simply replace each by-name
237237
// seq reference in `expr` with the sequence's ID.
238-
parsedExpr, err := parser.ParseExpr(*expr)
238+
parsedExpr, err := parserutils.ParseExpr(*expr)
239239
if err != nil {
240240
return false, err
241241
}
@@ -270,7 +270,7 @@ func UpgradeSequenceReferenceInExpr(
270270
func seqNameToIDMappingInExpr(
271271
expr string, seqIDToNameMapping map[descpb.ID]*tree.TableName,
272272
) (map[string]descpb.ID, error) {
273-
parsedExpr, err := parser.ParseExpr(expr)
273+
parsedExpr, err := parserutils.ParseExpr(expr)
274274
if err != nil {
275275
return nil, err
276276
}
@@ -286,7 +286,7 @@ func seqNameToIDMappingInExpr(
286286
continue
287287
}
288288

289-
parsedSeqName, err := parser.ParseQualifiedTableName(seqIdentifier.SeqName)
289+
parsedSeqName, err := parserutils.ParseQualifiedTableName(seqIdentifier.SeqName)
290290
if err != nil {
291291
return nil, err
292292
}

pkg/sql/catalog/seqexpr/sequence_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,19 @@ import (
1010
"fmt"
1111
"testing"
1212

13+
"github.com/cockroachdb/cockroach/pkg/sql"
1314
"github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb"
1415
"github.com/cockroachdb/cockroach/pkg/sql/catalog/seqexpr"
1516
"github.com/cockroachdb/cockroach/pkg/sql/parser"
16-
_ "github.com/cockroachdb/cockroach/pkg/sql/sem/builtins" // register all builtins in builtins:init() for seqexpr package
1717
"github.com/cockroachdb/cockroach/pkg/sql/sem/tree"
1818
"github.com/cockroachdb/cockroach/pkg/sql/types"
1919
"github.com/stretchr/testify/require"
2020
)
2121

22+
func init() {
23+
sql.DoParserInjection()
24+
}
25+
2226
func TestGetSequenceFromFunc(t *testing.T) {
2327
testData := []struct {
2428
expr string

pkg/sql/catalog/tabledesc/BUILD.bazel

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,10 @@ go_library(
4141
"//pkg/sql/catalog/seqexpr",
4242
"//pkg/sql/catalog/typedesc",
4343
"//pkg/sql/lexbase",
44-
"//pkg/sql/parser",
44+
"//pkg/sql/parserutils",
4545
"//pkg/sql/pgwire/pgcode",
4646
"//pkg/sql/pgwire/pgerror",
4747
"//pkg/sql/pgwire/pgnotice",
48-
"//pkg/sql/plpgsql/parser",
4948
"//pkg/sql/privilege",
5049
"//pkg/sql/rowenc",
5150
"//pkg/sql/schemachanger/scpb",
@@ -145,6 +144,7 @@ go_test(
145144
disallowed_imports_test(
146145
"tabledesc",
147146
disallowed_list = [
147+
"//pkg/sql/parser",
148148
"//pkg/sql/sem/builtins",
149149
],
150150
)

pkg/sql/catalog/tabledesc/column.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
"github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb"
1616
"github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb"
1717
"github.com/cockroachdb/cockroach/pkg/sql/catalog/schemaexpr"
18-
"github.com/cockroachdb/cockroach/pkg/sql/parser"
18+
"github.com/cockroachdb/cockroach/pkg/sql/parserutils"
1919
"github.com/cockroachdb/cockroach/pkg/sql/sem/idxtype"
2020
"github.com/cockroachdb/cockroach/pkg/sql/sem/tree"
2121
"github.com/cockroachdb/cockroach/pkg/sql/types"
@@ -111,7 +111,7 @@ func (w column) HasNullDefault() bool {
111111
// that the default expressions is not parsable. Somebody with a context
112112
// who needs to use it will be in a better place to log it. If it is not
113113
// parsable, it is not NULL.
114-
defaultExpr, _ := parser.ParseExpr(w.GetDefaultExpr())
114+
defaultExpr, _ := parserutils.ParseExpr(w.GetDefaultExpr())
115115
return defaultExpr == tree.DNull
116116
}
117117

pkg/sql/catalog/tabledesc/structured.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
"github.com/cockroachdb/cockroach/pkg/sql/catalog/schemaexpr"
2424
"github.com/cockroachdb/cockroach/pkg/sql/catalog/typedesc"
2525
"github.com/cockroachdb/cockroach/pkg/sql/lexbase"
26-
"github.com/cockroachdb/cockroach/pkg/sql/parser"
26+
"github.com/cockroachdb/cockroach/pkg/sql/parserutils"
2727
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgcode"
2828
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror"
2929
"github.com/cockroachdb/cockroach/pkg/sql/rowenc"
@@ -588,7 +588,7 @@ func (desc *wrapper) getAllReferencedTypesInTableColumns(
588588
// Skip trigger function bodies.
589589
return nil
590590
}
591-
expr, err := parser.ParseExpr(*exprStr)
591+
expr, err := parserutils.ParseExpr(*exprStr)
592592
if err != nil {
593593
return err
594594
}

pkg/sql/catalog/tabledesc/table_desc_builder.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
"github.com/cockroachdb/cockroach/pkg/sql/catalog/catprivilege"
1919
"github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb"
2020
"github.com/cockroachdb/cockroach/pkg/sql/catalog/seqexpr"
21-
"github.com/cockroachdb/cockroach/pkg/sql/parser"
21+
"github.com/cockroachdb/cockroach/pkg/sql/parserutils"
2222
"github.com/cockroachdb/cockroach/pkg/sql/privilege"
2323
"github.com/cockroachdb/cockroach/pkg/sql/schemachanger/scpb"
2424
"github.com/cockroachdb/cockroach/pkg/sql/sem/catconstants"
@@ -1188,7 +1188,7 @@ func maybeUpgradeSequenceReferenceForView(
11881188
if err != nil {
11891189
return false, expr, err
11901190
}
1191-
newExpr, err = parser.ParseExpr(newExprStr)
1191+
newExpr, err = parserutils.ParseExpr(newExprStr)
11921192
if err != nil {
11931193
return false, expr, err
11941194
}
@@ -1197,7 +1197,7 @@ func maybeUpgradeSequenceReferenceForView(
11971197
return false, newExpr, err
11981198
}
11991199

1200-
stmt, err := parser.ParseOne(viewDesc.GetViewQuery())
1200+
stmt, err := parserutils.ParseOne(viewDesc.GetViewQuery())
12011201
if err != nil {
12021202
return hasUpgraded, err
12031203
}

pkg/sql/catalog/tabledesc/ttl.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"github.com/cockroachdb/cockroach/pkg/sql/catalog"
1212
"github.com/cockroachdb/cockroach/pkg/sql/catalog/catpb"
1313
"github.com/cockroachdb/cockroach/pkg/sql/catalog/schemaexpr"
14-
"github.com/cockroachdb/cockroach/pkg/sql/parser"
14+
"github.com/cockroachdb/cockroach/pkg/sql/parserutils"
1515
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgcode"
1616
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror"
1717
"github.com/cockroachdb/errors"
@@ -72,7 +72,7 @@ func ValidateTTLExpirationExpr(desc catalog.TableDescriptor) error {
7272
if expirationExpr == "" {
7373
return nil
7474
}
75-
exprs, err := parser.ParseExprs([]string{string(expirationExpr)})
75+
exprs, err := parserutils.ParseExprs([]string{string(expirationExpr)})
7676
if err != nil {
7777
return errors.Wrapf(err, "ttl_expiration_expression %q must be a valid expression", expirationExpr)
7878
} else if len(exprs) != 1 {

pkg/sql/catalog/tabledesc/validate.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,10 @@ import (
1919
"github.com/cockroachdb/cockroach/pkg/sql/catalog/multiregion"
2020
"github.com/cockroachdb/cockroach/pkg/sql/catalog/schemaexpr"
2121
"github.com/cockroachdb/cockroach/pkg/sql/catalog/typedesc"
22-
"github.com/cockroachdb/cockroach/pkg/sql/parser"
22+
"github.com/cockroachdb/cockroach/pkg/sql/parserutils"
2323
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgcode"
2424
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror"
2525
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgnotice"
26-
plpgsqlparser "github.com/cockroachdb/cockroach/pkg/sql/plpgsql/parser"
2726
"github.com/cockroachdb/cockroach/pkg/sql/rowenc"
2827
"github.com/cockroachdb/cockroach/pkg/sql/sem/semenumpb"
2928
"github.com/cockroachdb/cockroach/pkg/sql/sem/tree"
@@ -95,7 +94,7 @@ func (desc *wrapper) GetReferencedDescIDs(
9594
// Skip trigger function bodies - they are handled below.
9695
return nil
9796
}
98-
if parsedExpr, err := parser.ParseExpr(*expr); err == nil {
97+
if parsedExpr, err := parserutils.ParseExpr(*expr); err == nil {
9998
// ignore errors
10099
tree.WalkExpr(visitor, parsedExpr)
101100
}
@@ -282,11 +281,11 @@ func (desc *wrapper) ValidateBackReferences(
282281
_ = ForEachExprStringInTableDesc(desc, func(expr *string, typ catalog.DescExprType) (err error) {
283282
switch typ {
284283
case catalog.SQLExpr:
285-
_, err = parser.ParseExpr(*expr)
284+
_, err = parserutils.ParseExpr(*expr)
286285
case catalog.SQLStmt:
287-
_, err = parser.Parse(*expr)
286+
_, err = parserutils.Parse(*expr)
288287
case catalog.PLpgSQLStmt:
289-
_, err = plpgsqlparser.Parse(*expr)
288+
_, err = parserutils.PLpgSQLParse(*expr)
290289
}
291290
vea.Report(err)
292291
return nil
@@ -1263,7 +1262,7 @@ func (desc *wrapper) validateColumns() error {
12631262

12641263
if column.IsComputed() {
12651264
// Verify that the computed column expression is valid.
1266-
expr, err := parser.ParseExpr(column.GetComputeExpr())
1265+
expr, err := parserutils.ParseExpr(column.GetComputeExpr())
12671266
if err != nil {
12681267
return err
12691268
}
@@ -1479,12 +1478,12 @@ func (desc *wrapper) validateTriggers() error {
14791478

14801479
// Verify that the WHEN expression and function body statements are valid.
14811480
if trigger.WhenExpr != "" {
1482-
_, err := parser.ParseExpr(trigger.WhenExpr)
1481+
_, err := parserutils.ParseExpr(trigger.WhenExpr)
14831482
if err != nil {
14841483
return err
14851484
}
14861485
}
1487-
_, err := plpgsqlparser.Parse(trigger.FuncBody)
1486+
_, err := parserutils.PLpgSQLParse(trigger.FuncBody)
14881487
if err != nil {
14891488
return err
14901489
}
@@ -1551,7 +1550,7 @@ func (desc *wrapper) validateCheckConstraints(
15511550
}
15521551

15531552
// Verify that the check's expression is valid.
1554-
expr, err := parser.ParseExpr(chk.GetExpr())
1553+
expr, err := parserutils.ParseExpr(chk.GetExpr())
15551554
if err != nil {
15561555
return err
15571556
}
@@ -1605,7 +1604,7 @@ func (desc *wrapper) validateUniqueWithoutIndexConstraints(
16051604
}
16061605

16071606
if c.IsPartial() {
1608-
expr, err := parser.ParseExpr(c.GetPredicate())
1607+
expr, err := parserutils.ParseExpr(c.GetPredicate())
16091608
if err != nil {
16101609
return err
16111610
}
@@ -1773,7 +1772,7 @@ func (desc *wrapper) validateTableIndexes(
17731772
}
17741773
}
17751774
if idx.IsPartial() {
1776-
expr, err := parser.ParseExpr(idx.GetPredicate())
1775+
expr, err := parserutils.ParseExpr(idx.GetPredicate())
17771776
if err != nil {
17781777
return err
17791778
}
@@ -2235,13 +2234,13 @@ func (desc *wrapper) validatePolicyRoles(p *descpb.PolicyDescriptor) error {
22352234
// validatePolicyExprs will validate the expressions within the policy.
22362235
func (desc *wrapper) validatePolicyExprs(p *descpb.PolicyDescriptor) error {
22372236
if p.WithCheckExpr != "" {
2238-
_, err := parser.ParseExpr(p.WithCheckExpr)
2237+
_, err := parserutils.ParseExpr(p.WithCheckExpr)
22392238
if err != nil {
22402239
return errors.Wrapf(err, "WITH CHECK expression %q is invalid", p.WithCheckExpr)
22412240
}
22422241
}
22432242
if p.UsingExpr != "" {
2244-
_, err := parser.ParseExpr(p.UsingExpr)
2243+
_, err := parserutils.ParseExpr(p.UsingExpr)
22452244
if err != nil {
22462245
return errors.Wrapf(err, "USING expression %q is invalid", p.UsingExpr)
22472246
}
@@ -2393,7 +2392,7 @@ func ValidateRBRTableUsingConstraint(
23932392
if !col.IsComputed() {
23942393
continue
23952394
}
2396-
expr, err := parser.ParseExpr(col.GetComputeExpr())
2395+
expr, err := parserutils.ParseExpr(col.GetComputeExpr())
23972396
if err != nil {
23982397
// At this point, we should be able to parse the computed expression.
23992398
return errors.WithAssertionFailure(err)

pkg/sql/exec_util.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ import (
8181
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgwirebase"
8282
"github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgwirecancel"
8383
"github.com/cockroachdb/cockroach/pkg/sql/physicalplan"
84+
plpgsqlparser "github.com/cockroachdb/cockroach/pkg/sql/plpgsql/parser"
8485
"github.com/cockroachdb/cockroach/pkg/sql/querycache"
8586
"github.com/cockroachdb/cockroach/pkg/sql/rolemembershipcache"
8687
"github.com/cockroachdb/cockroach/pkg/sql/rowenc"
@@ -156,6 +157,7 @@ func DoParserInjection() {
156157
parserutils.ParseExprs = parser.ParseExprs
157158
parserutils.ParseOne = parser.ParseOne
158159
parserutils.ParseQualifiedTableName = parser.ParseQualifiedTableName
160+
parserutils.PLpgSQLParse = plpgsqlparser.Parse
159161
}
160162

161163
// ClusterOrganization is the organization name.

0 commit comments

Comments
 (0)