diff --git a/go/vt/sqlparser/normalizer.go b/go/vt/sqlparser/normalizer.go index dffb90d52b8..dbded43765a 100644 --- a/go/vt/sqlparser/normalizer.go +++ b/go/vt/sqlparser/normalizer.go @@ -157,7 +157,10 @@ func newNormalizer( // It handles normalization logic based on node types. func (nz *normalizer) walkDown(node, _ SQLNode) bool { switch node := node.(type) { - case *Begin, *Commit, *Rollback, *Savepoint, *SRollback, *Release, *OtherAdmin, *Analyze, *AssignmentExpr, + case *AssignmentExpr: + nz.err = vterrors.VT12001("Assignment expression") + return false + case *Begin, *Commit, *Rollback, *Savepoint, *SRollback, *Release, *OtherAdmin, *Analyze, *PrepareStmt, *ExecuteStmt, *FramePoint, *ColName, TableName, *ConvertType: // These statement don't need normalizing return false diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 6c4a6e634ec..5bf4d43bca6 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1327,9 +1327,15 @@ var ( input: "update /* a.b */ a.b set b = 3", }, { input: "update a.b set d = @v := d + 7 where u = 42", + // Assignment expresions aren't supported, so we skip the normalizer test. + // We only support parsing these expressions. + ignoreNormalizerTest: true, }, { input: "select @topic3_id:= 10103;", output: "select @topic3_id := 10103 from dual", + // Assignment expresions aren't supported, so we skip the normalizer test. + // We only support parsing these expressions. + ignoreNormalizerTest: true, }, { input: "update /* list */ a set b = 3, c = 4", }, { diff --git a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.json b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.json index 55329586b0e..e54050bce86 100644 --- a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.json +++ b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.json @@ -229,6 +229,11 @@ "query": "select @val := 42", "plan": "VT12001: unsupported: Assignment expression" }, + { + "comment": "Assignment expression in on duplicate clause", + "query": "insert into unsharded (id) values (@val := 42)", + "plan": "VT12001: unsupported: Assignment expression" + }, { "comment": "Assignment expression in union statements", "query": "select @val := 42 union select 1",