[New-bugs-announce] [issue8192] SQLite3 PRAGMA table_info doesn't respect database on Win32

Christoph Burgmer report at bugs.python.org
Sun Mar 21 19:28:38 CET 2010


New submission from Christoph Burgmer <cburgmer at ira.uka.de>:

'PRAGMA database.table_info("SOME_TABLE_NAME")' will report table metadata for the given database. The main database called 'main', can be extended by attaching further databases via 'ATTACH DATABASE'. The above PRAGMA should respect the chosen database, but fails to do so on Win32 (tested on Wine) while it does on Linux.

How to reproduce:

FILE 'first.db' has table:

  CREATE TABLE "First" (
          "Test" INTEGER NOT NULL
  );

FILE 'second.db' has table:

  CREATE TABLE "Second" (
          "Test" INTEGER NOT NULL
  );

The final result of the following code shoule be empty, but returns table data from second.db instead.

Y:\>python
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> conn = sqlite3.connect('first.db')
>>> c = conn.cursor()
>>> c.execute("ATTACH DATABASE 'second.db' AS 'second'")
<sqlite3.Cursor object at 0x0071FB00>
>>> for row in c:
...     print repr(row)
...
>>> c.execute("PRAGMA 'main'.table_info('Second')")
<sqlite3.Cursor object at 0x0071FB00>
>>> for row in c:
...     print repr(row)
...
(0, u'Test', u'INTEGER', 99, None, 0)
>>>

In contrast sqlite3.exe respects the value for the same command:

Y:\>sqlite3.exe first.db
SQLite version 3.6.23
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
First
sqlite> ATTACH DATABASE 'second.db' AS 'second';
sqlite> .tables
First
sqlite> PRAGMA main.table_info('Second');
sqlite> PRAGMA second.table_info('Second');
0|Test|INTEGER|1||0
sqlite>

Advice on further debugging possibilities is requested. I do not have a Windows system available though, nor can I currently compile for Win32.

----------
components: Library (Lib)
messages: 101440
nosy: christoph
severity: normal
status: open
title: SQLite3 PRAGMA table_info doesn't respect database on Win32
versions: Python 2.6

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue8192>
_______________________________________


More information about the New-bugs-announce mailing list