[odb-users] Quering with empty string parameter error. Microsoft SQL Server

Boris Kolpackov boris at codesynthesis.com
Thu Jul 4 10:40:22 EDT 2019


Andrey Paraskevopulo <andrey.psv at gmail.com> writes:

> As I understand, the problem that param in statement exists("... WHERE
> name=?"), but the value in not binded.
> 
> Possible solutions:
> 
> 1. Init buffer data for the empty string with empty size (for the query
>    param)
>
>    [...]

Thanks for the report and analysis! I've applied a slightly different
implementation of this fix. Could you confirm it works as expected for
you:

https://git.codesynthesis.com/cgit/odb/libodb-mssql/commit/?id=847c4a22c80f9bd8ea544e23309d3575ed1be904


> Remark: solution does not affect Blob variables (they have the null buf for
> the empty values). May be the query problem can be reproduced for the Blobs
> too.

Hm, long_query_param_impl is used as a base for
query_param_impl<T, id_long_binary> so I would expect this fix to
also work for BLOBs. Or am I missing something here?


> 2. Disable skip empty binds (with null buffer)
> 
> [...]
> 
> This solves the problem, but for me it hard to predict side effects.

Yes, I vaguely remember there being some issues with passing NULL
buffers to MSSQL (ODBC) runtime.



More information about the odb-users mailing list