Error when accessing tables with deleted columns - Mailing list pgsql-odbc
From | cs@deriva.de |
---|---|
Subject | Error when accessing tables with deleted columns |
Date | |
Msg-id | E18dXd1-0004bY-00@config10.kundenserver.de Whole thread Raw |
Responses |
Re: Error when accessing tables with deleted columns
|
List | pgsql-odbc |
Hi! I think I have found the following bug: I have a PostgreSQL server (version 7.3.1) with a test database and a test table in it. I created the table with two columns and dropped one of it afterwards (using "alter table ... drop column"). When I try to connect to this table from MS Access 2000 using the PostgreSQL ODBC driver (version 7.02.00.05) I get the following error message (in German, hope you can understand it): "Das Datenbankmodul kann '........pg.dropped.2........' nicht finden. Stellen Sie sicher, dass es sich um einen gültigen Parameter oder Alias-Namen handelt, der keine ungültigen Zeichen oder falsche Zeichensetzung enthält und dessen Name nicht zu lang ist." The psqlodbc_1044.log contains the following (confidential information wiped out): Global Options: Version='07.02.0005', fetch=100, socket=4096, unknown_sizes=0, max_varchar_size=254, max_longvarchar_size=8190 disable_optimizer=1, ksqo=1, unique_index=1, use_declarefetch=0 text_as_longvarchar=1, unknowns_as_longvarchar=0, bools_as_char=1 NAMEDATALEN=64 extra_systable_prefixes='dd_;', conn_settings='' conn_encoding='OTHER' conn=142161752, query=' ' conn=142161752, query='select version()' [ fetched 1 rows ] [ PostgreSQL version string = 'PostgreSQL 7.3.1 on i686-pc-linux-gnu, compiled by GCC 2.95.3' ] [ PostgreSQL version number = '7.3' ] conn=142161752, query='set DateStyle to 'ISO'' conn=142161752, query='set geqo to 'OFF'' conn=142161752, query='select oid from pg_type where typname='lo'' [ fetched 0 rows ] conn=142161752, query='select pg_client_encoding()' [ fetched 1 rows ] [ Client encoding = 'SQL_ASCII' (code = 0) ] conn=142161752, PGAPI_DriverConnect(out)='DSN=test;DATABASE=test;SERVER=xxx.xxx.xxx.xxx;PORT=5432;UID=xxx;PWD=xxx;A6=;A7=100;A8=4096;B0=254;B1=8190;BI=0;C2=dd_;;CX=1850fab' conn=142161752, query='SELECT Config, nValue FROM MSysConf' ERROR from backend during send_query: 'ERROR: Relation "msysconf" does not exist' STATEMENT ERROR: func=SC_execute, desc='', errnum=7, errmsg='Error while executing the query' ------------------------------------------------------------ hdbc=142161752, stmt=142156088, result=142155928 manual_result=0, prepare=0, internal=0 bindings=0, bindings_allocated=0 parameters=0, parameters_allocated=0 statement_type=0, statement='SELECT Config, nValue FROM MSysConf' stmt_with_params='SELECT Config, nValue FROM MSysConf' data_at_exec=-1, current_exec_param=-1, put_data=0 currTuple=-1, current_col=-1, lobj_fd=-1 maxRows=0, rowset_size=1, keyset_size=0, cursor_type=0, scroll_concurrency=1 cursor_name='SQL_CUR08792138' ----------------QResult Info ------------------------------- fields=142185880, manual_tuples=0, backend_tuples=0, tupleField=0, conn=0 fetch_count=0, num_total_rows=0, num_fields=0, cursor='(NULL)' message='ERROR: Relation "msysconf" does not exist', command='(NULL)', notice='(NULL)' status=7, inTuples=0 CONN ERROR: func=SC_execute, desc='', errnum=110, errmsg='ERROR: Relation "msysconf" does not exist' ------------------------------------------------------------ henv=142155544, conn=142161752, status=1, num_stmts=16 sock=142155600, stmts=142155672, lobj_type=-999 ---------------- Socket Info ------------------------------- socket=736, reverse=0, errornumber=0, errormsg='(NULL)' buffer_in=142172736, buffer_out=142176840 buffer_filled_in=1, buffer_filled_out=0, buffer_read_in=1 conn=142161752, query='select relname, nspname, relkind from pg_class, pg_namespace where relkind in ('r', 'v') and pg_namespace.oid = relnamespace order by nspname, relname' [ fetched 54 rows ] conn=142161752, query='select c.relhasrules from pg_namespace u, pg_class c where u.oid = c.relnamespace and c.relname = 'test' and u.nspname = 'public'' [ fetched 1 rows ] conn=142161752, query='select u.nspname, c.relname, a.attname, a.atttypid, t.typname, a.attnum, a.attlen, a.atttypmod, a.attnotnull, c.relhasrules from pg_namespace u, pg_class c, pg_attribute a, pg_type t where u.oid = c.relnamespace and c.oid= a.attrelid and a.atttypid = t.oid and (a.attnum > 0) and c.relname like 'test' and u.nspname like 'public' order by u.nspname, c.relname, attnum' [ fetched 2 rows ] PGAPI_Columns: table='test',field_name='id',type=23,name='int4' PGAPI_Columns: table='test',field_name='........pg.dropped.2........',type=1042,name='bpchar' IMHO, the last line clearly shows the offending field specification. I think the field_name should be checked for dropped columns before sending the data to MS Access, which doesn't seem to understand this. By the way (not too important, but since I'm just writing this mail ...): Would it be possible for the driver to filter out the "MSysConf" queries produced by MS Access? They are somewhat annoying in the server log files. I hope that my bug report was helpful for you. Could you inform me if my guess was right and when you will have fixed this bug? Thanks and out ;) Christian Schroeder
pgsql-odbc by date: