[Lazarus] Possible TQuery or resource reader problem, all (unix) targets
John Landmesser
JohnML at online.de
Wed Jul 18 19:20:41 CEST 2012
Am 18.07.2012 18:51, schrieb Mark Morgan Lloyd:
> Mark Morgan Lloyd wrote:
>> I've got a problem that appears to have got into the Lazarus IDE etc.
>> at some point after 36903. It affects all targets I've tested so far,
>> i.e. SPARC/Solaris, SPARC/Linux, PPC/Linux and x86/Linux; I left x86
>> till last on the basis that it was likely to be limited to a
>> combination that was tested less frequently with the result that I've
>> been delayed by building on slower systems. I'd rather not try
>> testing Windows, and any results might not be valid since I don't
>> have current versions.
>>
>> The project includes a form with a number of database components. One
>> of the TQuerys has a significant amount of SQL text ** (PostgreSQL
>> dialect), including a number of references to a single parameter
>> (tz). Looked at on 36903 or earlier, the TQuery has a single
>> parameter (correctly called tz) while on trunk (circa 37961) a
>> spurious parameter called 00'::interval is inserted before tz: I
>> think that this is probably part of the SQL text, mis-parsed. The
>> project compiles, but fails at runtime.
>>
>> I'll try to distill this to a minimal project and Mantis it, unless
>> anybody realises they've been working in this area and can contribute
>> a quick fix for testing.
>>
>> ** Including a couple of subselects of the form
>> to_char(datetime + coalesce(
>> (SELECT utc_offset FROM pg_timezone_names WHERE name = :tz),
>> '00:00'::interval
>> ), 'YYYY-MM-DD HH24:MI') AS datetime_str,
>>
>
> Mantised as 22463. It's something to do with parsing a non-trivial
> query, so far I'm not able to duplicate it with a one-liner.
>
Just an idea:
some days ago i had a problem with a parameter sitting at the end of a
line, followed directly by CRLF ( -> component StrHolder , Delphi 5 Windows)
Solution was to put a space after the parameter:
":parameter SPACE(!!) CRLF".
A problem with word boundries ?!
That simple space fixed it!
Second try:
change you SQL to a oneliner.
Query.SQL.Text := part1 + part2 + ...
More information about the Lazarus
mailing list