117 |
|
function SQLData: PChar; virtual; abstract; |
118 |
|
function GetDataLength: cardinal; virtual; abstract; |
119 |
|
function GetCodePage: TSystemCodePage; virtual; abstract; |
120 |
+ |
function getCharSetID: cardinal; virtual; abstract; |
121 |
|
function Transliterate(s: string; CodePage: TSystemCodePage): RawByteString; |
122 |
|
procedure SetScale(aValue: integer); virtual; |
123 |
|
procedure SetDataLength(len: cardinal); virtual; |
321 |
|
function getAliasName: string; {Alias Name of column or Column Name if not alias} |
322 |
|
function GetName: string; override; {Disambiguated uppercase Field Name} |
323 |
|
function GetScale: integer; override; |
324 |
< |
function getCharSetID: cardinal; |
324 |
> |
function getCharSetID: cardinal; override; |
325 |
|
function GetIsNullable: boolean; override; |
326 |
|
function GetSize: cardinal; |
327 |
|
function GetArrayMetaData: IArrayMetaData; |
520 |
|
CommentState = 1; |
521 |
|
QuoteState = 2; |
522 |
|
ParamState = 3; |
523 |
+ |
ArrayDimState = 4; |
524 |
|
{$ifdef ALLOWDIALECT3PARAMNAMES} |
525 |
|
ParamDefaultState = 0; |
526 |
|
ParamQuoteState = 1; |
561 |
|
cNextChar := sSQL[i + 1]; |
562 |
|
{ Now act based on the current state } |
563 |
|
case iCurState of |
564 |
< |
DefaultState: begin |
564 |
> |
DefaultState: |
565 |
> |
begin |
566 |
|
case cCurChar of |
567 |
< |
'''', '"': begin |
567 |
> |
'''', '"': |
568 |
> |
begin |
569 |
|
cQuoteChar := cCurChar; |
570 |
|
iCurState := QuoteState; |
571 |
|
end; |
572 |
< |
'?', ':': begin |
572 |
> |
'?', ':': |
573 |
> |
begin |
574 |
|
iCurState := ParamState; |
575 |
|
AddToProcessedSQL('?'); |
576 |
|
end; |
577 |
< |
'/': if (cNextChar = '*') then begin |
577 |
> |
'/': if (cNextChar = '*') then |
578 |
> |
begin |
579 |
|
AddToProcessedSQL(cCurChar); |
580 |
|
Inc(i); |
581 |
|
iCurState := CommentState; |
582 |
|
end; |
583 |
+ |
'[': |
584 |
+ |
begin |
585 |
+ |
AddToProcessedSQL(cCurChar); |
586 |
+ |
Inc(i); |
587 |
+ |
iCurState := ArrayDimState; |
588 |
+ |
end; |
589 |
|
end; |
590 |
|
end; |
591 |
< |
CommentState: begin |
591 |
> |
|
592 |
> |
ArrayDimState: |
593 |
> |
begin |
594 |
> |
case cCurChar of |
595 |
> |
':',',','0'..'9',' ',#9,#10,#13: |
596 |
> |
begin |
597 |
> |
AddToProcessedSQL(cCurChar); |
598 |
> |
Inc(i); |
599 |
> |
end; |
600 |
> |
else |
601 |
> |
begin |
602 |
> |
AddToProcessedSQL(cCurChar); |
603 |
> |
Inc(i); |
604 |
> |
iCurState := DefaultState; |
605 |
> |
end; |
606 |
> |
end; |
607 |
> |
end; |
608 |
> |
|
609 |
> |
CommentState: |
610 |
> |
begin |
611 |
|
if (cNextChar = #0) then |
612 |
|
IBError(ibxeSQLParseError, [SEOFInComment]) |
613 |
|
else if (cCurChar = '*') then begin |
1299 |
|
end; |
1300 |
|
SetString(rs, sz, str_len); |
1301 |
|
SetCodePage(rs,GetCodePage,false); |
1302 |
< |
Result := Trim(rs); |
1302 |
> |
if (SQLType = SQL_TEXT) and (GetCharSetID <> 1) then |
1303 |
> |
Result := TrimRight(rs) |
1304 |
> |
else |
1305 |
> |
Result := rs |
1306 |
|
end; |
1307 |
|
SQL_TYPE_DATE: |
1308 |
|
case GetSQLDialect of |
1485 |
|
|
1486 |
|
Changing; |
1487 |
|
SQLType := SQL_TIMESTAMP; |
1488 |
< |
DataLength := SizeOf(TISC_QUAD); |
1488 |
> |
DataLength := SizeOf(ISC_TIME) + sizeof(ISC_DATE); |
1489 |
|
with FirebirdClientAPI do |
1490 |
|
SQLEncodeDateTime(Value,SQLData); |
1491 |
|
Changed; |
1811 |
|
if not IsNull then |
1812 |
|
case SQLType of |
1813 |
|
SQL_ARRAY: |
1814 |
< |
result := '(Array)'; {do not localize} |
1814 |
> |
result := SArray; |
1815 |
|
SQL_BLOB: |
1816 |
< |
Result := Trim(FIBXSQLVAR.GetAsBlob(AsQuad,nil).GetAsString); |
1816 |
> |
Result := FIBXSQLVAR.GetAsBlob(AsQuad,nil).GetAsString; |
1817 |
|
else |
1818 |
|
Result := inherited GetAsString; |
1819 |
|
end; |