Обсуждение: SQLColAttributes and SQL_DESC_NULLABLE

Поиск
Список
Период
Сортировка

SQLColAttributes and SQL_DESC_NULLABLE

От
Robert Jireš
Дата:
Hello,
I'm using .Net Odbc Data Provider, ODBC driver 8.1.x and PostgreSQL 8.1.0.
To find out whether column can be null, the .NET calls ODBC function
SQLColAttributes. Problem is, that this function allways returns
SQL_NULLABLE, even for columns declared as NOT NULL. I tried to enable
"Parse Statements" option of the driver, but it didn't help.
I downloaded the latest sources, compiled them to see what's going on
inside and found this:
It seems that for SQLColAttributes to return something else than
SQL_NULLABLE, "Parse Statements" option MUST be turned on. Am i right?
For some reason stmt->manual_result  is true, which causes that the
statement is not parsed. What does this stmt->manual_result  mean?

Thanks in advance.

Robert Jires


Re: SQLColAttributes and SQL_DESC_NULLABLE

От
Ludek Finstrle
Дата:
> SQLColAttributes. Problem is, that this function allways returns
> SQL_NULLABLE, even for columns declared as NOT NULL. I tried to enable
> "Parse Statements" option of the driver, but it didn't help.

Please, could you add this bug report to pgfoundry?
Feel free to try patch it.

> I downloaded the latest sources, compiled them to see what's going on
> inside and found this:
> It seems that for SQLColAttributes to return something else than
> SQL_NULLABLE, "Parse Statements" option MUST be turned on. Am i right?
> For some reason stmt->manual_result  is true, which causes that the
> statement is not parsed. What does this stmt->manual_result  mean?

We think manual_result is only way to get result now. This problem
was create during convert to using libpq.

The driver isn't fully cleaned after rewrite to libpq support.
You can contact me directly in czech ;-) as my english is poor.

Luf

Re: SQLColAttributes and SQL_DESC_NULLABLE

От
Ludek Finstrle
Дата:
> It seems that for SQLColAttributes to return something else than
> SQL_NULLABLE, "Parse Statements" option MUST be turned on. Am i right?
> For some reason stmt->manual_result  is true, which causes that the
> statement is not parsed. What does this stmt->manual_result  mean?

I attach patch which solve this problem. Thanks to Robert to point
it and find the solution.

I don't know if it works with declare/fetch or server side prepare
(maybe other options could break it too). Please is there someone
who can test it? I can upload Windows DLL to test it if you want.

Thanks

Luf

Вложения

Re: SQLColAttributes and SQL_DESC_NULLABLE

От
"Dave Page"
Дата:

> -----Original Message-----
> From: pgsql-odbc-owner@postgresql.org
> [mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of Ludek Finstrle
> Sent: 06 December 2005 22:55
> To: Robert Jireš
> Cc: pgsql-odbc@postgresql.org
> Subject: Re: [ODBC] SQLColAttributes and SQL_DESC_NULLABLE
>
> > It seems that for SQLColAttributes to return something else than
> > SQL_NULLABLE, "Parse Statements" option MUST be turned on.
> Am i right?
> > For some reason stmt->manual_result  is true, which causes that the
> > statement is not parsed. What does this stmt->manual_result  mean?
>
> I attach patch which solve this problem. Thanks to Robert to point
> it and find the solution.
>
> I don't know if it works with declare/fetch or server side prepare
> (maybe other options could break it too). Please is there someone
> who can test it? I can upload Windows DLL to test it if you want.

No regressions I can find - patch applied, thanks!

*However*, whilst testing I did find an issue with SQLTables that seems surprisingly similar to the one you fixed
before.It's pretty easy to recreate in the Microsoft test suite. 

- Connect to a data source with Declare/Fetch enabled.
- SQLExecDirect "SELECT * FROM pg_class"
- Get Data All (from the results menu)
- SQLTables
- Get Data All

It never stops retrieving data! Seems that you need to do the SQLExecDirect first - SQLExecute doesn't trigger the
problem.SQLColumns is similarly affected - perhaps there are more as well. 

Wanna take a look, or shall I log a bug until one of us gets time?

Regards, Dave.

Re: SQLTables don't stop

От
Ludek Finstrle
Дата:
> *However*, whilst testing I did find an issue with SQLTables that
> seems surprisingly similar to the one you fixed before. It's pretty
> easy to recreate in the Microsoft test suite.

I didn't fix something similar. I don't remember it at least. Could
you be more specific? I only point at Prepare, Execute, Execute or
ExecDirect, ExecDirect problem.

> - Connect to a data source with Declare/Fetch enabled.
> - SQLExecDirect "SELECT * FROM pg_class"
> - Get Data All (from the results menu)
> - SQLTables
> - Get Data All
>
> It never stops retrieving data! Seems that you need to do the
> SQLExecDirect first - SQLExecute doesn't trigger the problem.
> SQLColumns is similarly affected - perhaps there are more as well.

I'm unable reproduce it here. I have CVS source with autocommit_off patch.
It stops when I expect.

I tried it againist ANSI (debug) driver (PgSQL 8.1 Win)  with these
options:
- SSL Mode = disable
- default settings except:
  - Use Declare/Fetch - checked
  - MyLog - checked

> Wanna take a look, or shall I log a bug until one of us gets time?

Please send me your mylog output and driver for testing purposes (maybe
zipped source code too ?).
Feel free to log a bug. Bug tracer is here for this purpose ;-)

Regards,

Luf