Subject Re: API limitations. Was Re: [Firebird-Architect] RFC: Cross database queries
Author Jim Starkey
Roman Rokytskyy wrote:
> Jim Starkey wrote:
>
>> Roman Rokytskyy wrote:
>>
>>>
>>>
>>>> We also need a way to pass strings of unknown length.
>>>>
>>>>
>>> Isn't that limitation of the remote protocol handler?
>>>
>> The remote protocol sends all strings as counted strings.
>>
>> How do you send a string of unknown length?
>>
>
> I think the terminology was not correct. At least I was talking about
> the current limitation that prevents us passing a string longer than
> column size in parameter that is used in LIKE clause, while using the
> same string inlined in the SQL works correctly (does not find any records):
>
> SELECT * FROM some_table WHERE char_col LIKE ?
>
> will return an error when value of the parameter is longer than length
> of char_col column + some constant (it allows two '%' chars at least).
>
> The SELECT * FROM some_table WHERE char_col LIKE '%ksdfkjshdfkjshf%'
> will work correctly even when the text constant is longer than column
> length - it won't find anything.
>
>

The API passes data through SQLDA structures that have no such
limitation. The various flavors of DESCRIBE may populate an SQLDA that
is insufficient to over such a string, but it is there as a convenience,
not a limitation. Reform the SQLDA to match what you need is perfectly
legal.