mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-27 21:10:28 +02:00
sql parser: support "SELECT 'a' 'b'" syntax (MSSQL)
git-svn-id: trunk@46472 -
This commit is contained in:
parent
b5c8ac7769
commit
0b440758ea
@ -501,11 +501,11 @@ begin
|
|||||||
F:=TSQLSelectField(CreateElement(TSQLSelectField,AParent));
|
F:=TSQLSelectField(CreateElement(TSQLSelectField,AParent));
|
||||||
AList.Add(F);
|
AList.Add(F);
|
||||||
F.Expression:=Expression;
|
F.Expression:=Expression;
|
||||||
If CurrentToken in [tsqlAs,Tsqlidentifier] then
|
If CurrentToken in [tsqlAs,Tsqlidentifier,tsqlString] then
|
||||||
begin
|
begin
|
||||||
If currentToken=tsqlAs then
|
If currentToken=tsqlAs then
|
||||||
GetNextToken;
|
GetNextToken;
|
||||||
Expect(tsqlIdentifier);
|
Expect([tsqlIdentifier,tsqlString]);
|
||||||
F.AliasName:=CreateIdentifier(F,CurrentTokenString);
|
F.AliasName:=CreateIdentifier(F,CurrentTokenString);
|
||||||
GetNextToken;
|
GetNextToken;
|
||||||
end;
|
end;
|
||||||
|
@ -419,6 +419,7 @@ type
|
|||||||
procedure TestSelectTwoFieldsThreeBracketTablesJoin;
|
procedure TestSelectTwoFieldsThreeBracketTablesJoin;
|
||||||
procedure TestSelectTableWithSchema;
|
procedure TestSelectTableWithSchema;
|
||||||
procedure TestSelectFieldWithSchema;
|
procedure TestSelectFieldWithSchema;
|
||||||
|
procedure TestSelectFieldAsStringLiteral;
|
||||||
procedure TestSelectFirst;
|
procedure TestSelectFirst;
|
||||||
procedure TestSelectFirstSkip;
|
procedure TestSelectFirstSkip;
|
||||||
procedure TestSelectTop;
|
procedure TestSelectTop;
|
||||||
@ -3839,6 +3840,23 @@ begin
|
|||||||
AssertException(ESQLParser,@TestParseError);
|
AssertException(ESQLParser,@TestParseError);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TTestSelectParser.TestSelectFieldAsStringLiteral;
|
||||||
|
|
||||||
|
Var
|
||||||
|
F : TSQLSelectField;
|
||||||
|
L : TSQLStringLiteral;
|
||||||
|
|
||||||
|
begin
|
||||||
|
TestSelect('SELECT ''B'' ''C'''); // 'B' as 'C'
|
||||||
|
AssertEquals('One field',1,Select.Fields.Count);
|
||||||
|
F:=TSQLSelectField(CheckClass(Select.Fields[0],TSQLSelectField));
|
||||||
|
AssertNotNull('Have field expresssion,',F.Expression);
|
||||||
|
L:=TSQLStringLiteral(AssertLiteralExpr('Field is a literal',F.Expression,TSQLStringLiteral));
|
||||||
|
AssertEquals('Field literal is B','B',L.Value);
|
||||||
|
AssertEquals('Field alias is C','C',F.AliasName.Name);
|
||||||
|
AssertEquals('No table',0,Select.Tables.Count);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TTestSelectParser.TestSelectFieldWithSchema;
|
procedure TTestSelectParser.TestSelectFieldWithSchema;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
|
Loading…
Reference in New Issue
Block a user