On 4 April 2013 14:44, Deane Yang <[email protected]> wrote:
> I was able to get this to work with sqlite, but am having difficulty doing
> this with postgresql. I've confirmed that SOCI is successfully connecting to
> the database. When I ask for the number of rows in the table "trades", it
> returns the correct number.
>
> The code that isn't working looks like this:
>
>     statement get_trades =
>       (sql.prepare <<
>        "select * from trades where trade_date=20090111",

This query is missing quotes around the date, so it causes
statement preparation failure. Try this:

"select * from trades where trade_date=\'20090111\'"

> An exception is thrown when executing "get_grades.fetch()" and return the
> following message:
>
> ERROR:  prepared statement "st_1" does not exist

This error is misleading, indeed and you should see error like this:

ERROR:  operator does not exist: date = integer
LINE 1: select * from trades where trade_date=20090111

The misleading error is due to a slight bug in PostgreSQL backend:
- PQprepare is fails due to invalid query
--- clean_up() is called and statement object deallocated
---- deallocation does not check if there is statement exists
------ DEALLOCATE command fails with exception

Finally, the exception is reported for DEALLOCATE failure instead of
for the original cause of error, statement preparation failure.

A tentative fix is to take these two lines from
postgresql_statement_backend dtor:

https://github.com/SOCI/soci/blob/684be04/src/backends/postgresql/statement.cpp#L42-L43

and move into postgresql_statement_backend::clean_up:

https://github.com/SOCI/soci/blob/684be04/src/backends/postgresql/statement.cpp#L55

This may not work, as result_ is related to statement
execution, not statement preparation.
I'll work on proper fix.

Deane, thanks for reporting this!

Best regards,
--
Mateusz Loskot, http://mateusz.loskot.net

------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire 
the most talented Cisco Certified professionals. Visit the 
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
soci-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/soci-users

Reply via email to