@@ -343,6 +343,44 @@ func TestParser_ParseStatement(t *testing.T) {
343343 },
344344 })
345345
346+ AssertParseStatement (t , `SELECT DISTINCT * FROM tbl WHERE ID = 1 FOR UPDATE NOWAIT` , & sqlparser.SelectStatement {
347+ Distinct : true ,
348+ Columns : & sqlparser.OutputNames {& sqlparser.ResultColumn {
349+ Star : true ,
350+ }},
351+ Condition : & sqlparser.BinaryExpr {
352+ X : & sqlparser.Ident {Name : "ID" },
353+ Op : sqlparser .EQ ,
354+ Y : & sqlparser.NumberLit {Value : "1" },
355+ },
356+ FromItems : & sqlparser.TableName {
357+ Name : & sqlparser.Ident {Name : "tbl" },
358+ },
359+ Locking : & sqlparser.LockingClause {
360+ Strength : sqlparser .Update ,
361+ Option : sqlparser .Nowait .ToPtr (),
362+ },
363+ })
364+
365+ AssertParseStatement (t , `SELECT DISTINCT * FROM tbl WHERE ID = 1 FOR NO KEY UPDATE SKIP LOCKED` , & sqlparser.SelectStatement {
366+ Distinct : true ,
367+ Columns : & sqlparser.OutputNames {& sqlparser.ResultColumn {
368+ Star : true ,
369+ }},
370+ Condition : & sqlparser.BinaryExpr {
371+ X : & sqlparser.Ident {Name : "ID" },
372+ Op : sqlparser .EQ ,
373+ Y : & sqlparser.NumberLit {Value : "1" },
374+ },
375+ FromItems : & sqlparser.TableName {
376+ Name : & sqlparser.Ident {Name : "tbl" },
377+ },
378+ Locking : & sqlparser.LockingClause {
379+ Strength : sqlparser .NoKeyUpdate ,
380+ Option : sqlparser .SkipLocked .ToPtr (),
381+ },
382+ })
383+
346384 AssertParseStatementError (t , `SELECT ` , `1:7: expected expression, found 'EOF'` )
347385 AssertParseStatementError (t , `SELECT 1+` , `1:9: expected expression, found 'EOF'` )
348386 AssertParseStatementError (t , `SELECT foo,` , `1:11: expected expression, found 'EOF'` )
0 commit comments