Data getting lost with TOraSession.Options.ConvertEOL
Posted: Wed 03 Mar 2021 16:16
Hello,
I am using version 11.4.1, Rad Studio 10.1 Berlin, compiling in 32 bit.
If TOraSession.Options.ConvertEOL = true, and a query selects multiline data, then 1 character per line is lost at the end of the data. I am using Oracle server version 19c and client 19c.
Sample project:
Output looks like this (Note: first section has last line like 98754321 and next section has last line like 98754):
This is just a guess, but maybe it was caused by the fix made for this bug: viewtopic.php?f=5&t=42328
I am using version 11.4.1, Rad Studio 10.1 Berlin, compiling in 32 bit.
If TOraSession.Options.ConvertEOL = true, and a query selects multiline data, then 1 character per line is lost at the end of the data. I am using Oracle server version 19c and client 19c.
Sample project:
Code: Select all
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
Ora,
OraCall,
orasmart;
var
Sess: TOraSession;
qry: TSmartQuery;
str: String;
begin
Sess := TOraSession.Create(nil);
Sess.username := 'me';
sess.password := 'secret';
sess.server := 'test';
sess.Options.ConvertEOL := False;
sess.Loginprompt := false;
sess.connected := true;
qry := TSmartQuery.Create(nil);
qry.Session := sess;
Writeln('sess.Options.ConvertEOL := False;');
Writeln('');
Writeln('select listagg(''987543210'', chr(10)) within group (order by null) as data');
Writeln('from dual');
Writeln('connect by level <= 5;');
Writeln('============================================================================');
qry.sql.add('select listagg(''987543210'', chr(10)) within group (order by null) as data');
qry.sql.add('from dual');
qry.sql.add('connect by level <= 5');
qry.execute;
Writeln(qry.fieldByname('DATA').asString);
Writeln('');
qry.Close;
sess.Connected := False;
sess.Options.ConvertEOL := True;
sess.Connected := True;
Writeln('sess.Options.ConvertEOL := True;');
Writeln('');
Writeln('select listagg(''987543210'', chr(10)) within group (order by null) as data');
Writeln('from dual');
Writeln('connect by level <= 5;');
Writeln('============================================================================');
qry.sql.clear;
qry.sql.add('select listagg(''987543210'', chr(10)) within group (order by null) as data');
qry.sql.add('from dual');
qry.sql.add('connect by level <= 5');
qry.execute;
Writeln(qry.fieldByname('DATA').asString);
Writeln('');
Write('hit any key to end');
Readln(str);
qry.free;
sess.free;
end.
Code: Select all
sess.Options.ConvertEOL := False;
select listagg('987543210', chr(10)) within group (order by null) as data
from dual
connect by level <= 5;
============================================================================
987543210
987543210
987543210
987543210
987543210
sess.Options.ConvertEOL := True;
select listagg('987543210', chr(10)) within group (order by null) as data
from dual
connect by level <= 5;
============================================================================
987543210
987543210
987543210
987543210
98754
hit any key to end