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