Hello

Attached is a patch that adds the necessary changes at config.w32 and additional support for PDO::ATTR_FETCH_TABLE_NAMES in PDO SQLite.

---
Oskar

Index: ext/pdo_sqlite/config.w32
===================================================================
--- ext/pdo_sqlite/config.w32   (revision 286990)
+++ ext/pdo_sqlite/config.w32   (working copy)
@@ -4,7 +4,7 @@
 ARG_WITH("pdo-sqlite", "for pdo_sqlite support", "no");
 
 if (PHP_PDO_SQLITE != "no") {
-       EXTENSION("pdo_sqlite", "pdo_sqlite.c sqlite_driver.c 
sqlite_statement.c", null, "/DSQLITE_THREADSAFE=1 /I" + 
configure_module_dirname + "/../sqlite3/libsqlite /I" + 
configure_module_dirname);
+       EXTENSION("pdo_sqlite", "pdo_sqlite.c sqlite_driver.c 
sqlite_statement.c", null, "/DSQLITE_THREADSAFE=1 
/DSQLITE_ENABLE_COLUMN_METADATA=1 /I" + configure_module_dirname + 
"/../sqlite3/libsqlite /I" + configure_module_dirname);
        
        ADD_EXTENSION_DEP('pdo_sqlite', 'pdo');
        // If pdo_sqlite is static, and sqlite3 is also static, then we don't 
add a second copy of the sqlite3 libs
Index: ext/pdo_sqlite/php_pdo_sqlite_int.h
===================================================================
--- ext/pdo_sqlite/php_pdo_sqlite_int.h (revision 286990)
+++ ext/pdo_sqlite/php_pdo_sqlite_int.h (working copy)
@@ -50,6 +50,7 @@
        sqlite3 *db;
        pdo_sqlite_error_info einfo;
        struct pdo_sqlite_func *funcs;
+       unsigned fetch_table_names:1;
 } pdo_sqlite_db_handle;
 
 typedef struct {
Index: ext/pdo_sqlite/sqlite_driver.c
===================================================================
--- ext/pdo_sqlite/sqlite_driver.c      (revision 286990)
+++ ext/pdo_sqlite/sqlite_driver.c      (working copy)
@@ -283,6 +283,11 @@
                        convert_to_long(val);
                        sqlite3_busy_timeout(H->db, Z_LVAL_P(val) * 1000);
                        return 1;
+#ifdef SQLITE_ENABLE_COLUMN_METADATA
+               case PDO_ATTR_FETCH_TABLE_NAMES:
+                       H->fetch_table_names = Z_BVAL_P(val);
+                       return 1;
+#endif
        }
        return 0;
 }
Index: ext/pdo_sqlite/sqlite_statement.c
===================================================================
--- ext/pdo_sqlite/sqlite_statement.c   (revision 286990)
+++ ext/pdo_sqlite/sqlite_statement.c   (working copy)
@@ -221,8 +221,20 @@
                return 0;
        }
 
+
+
+#ifdef SQLITE_ENABLE_COLUMN_METADATA
+       if (S->H->fetch_table_names) {
+               int namelen;
+               namelen = spprintf(&stmt->columns[colno].name, 0, "%s.%s", 
sqlite3_column_table_name(S->stmt, colno), sqlite3_column_name(S->stmt, colno));
+               stmt->columns[colno].namelen = namelen;
+       } else {
+#endif
        stmt->columns[colno].name = estrdup(sqlite3_column_name(S->stmt, 
colno));
        stmt->columns[colno].namelen = strlen(stmt->columns[colno].name);
+#ifdef SQLITE_ENABLE_COLUMN_METADATA
+       }
+#endif
        stmt->columns[colno].maxlen = 0xffffffff;
        stmt->columns[colno].precision = 0;
        
Index: ext/sqlite3/config.w32
===================================================================
--- ext/sqlite3/config.w32      (revision 286990)
+++ ext/sqlite3/config.w32      (working copy)
@@ -4,7 +4,7 @@
 ARG_WITH("sqlite3", "SQLite 3 support", "no");
 
 if (PHP_SQLITE3 != "no") {
-       ADD_FLAG("CFLAGS_SQLITE3", "/D SQLITE_THREADSAFE=" + (PHP_ZTS == "yes" 
? "1" : "0") + " /D SQLITE_ENABLE_FTS3=1 /D SQLITE_CORE=1 ");
+       ADD_FLAG("CFLAGS_SQLITE3", "/D SQLITE_THREADSAFE=" + (PHP_ZTS == "yes" 
? "1" : "0") + " /D SQLITE_ENABLE_FTS3=1 /D SQLITE_CORE=1 /D 
DSQLITE_ENABLE_COLUMN_METADATA=1 ");
        EXTENSION("sqlite3", "sqlite3.c", null, "/I" + configure_module_dirname 
+ "/libsqlite /I" + configure_module_dirname);
 
        ADD_SOURCES(configure_module_dirname + "/libsqlite", "sqlite3.c", 
"sqlite3");
-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to