threadsafe_flags="-DSQLITE_THREADSAFE=0"
fi
- other_flags="-DSQLITE_ENABLE_FTS3=1 -DSQLITE_CORE=1"
+ other_flags="-DSQLITE_ENABLE_FTS3=1 -DSQLITE_CORE=1 -DSQLITE_ENABLE_COLUMN_METADATA=1"
if test "$PHP_SQLITE3" != "yes"; then
PHP_ADD_SOURCES(PHP_EXT_DIR(sqlite3), libsqlite/sqlite3.c)
add_assoc_string(return_value, "sqlite:decl_type", str, 1);
}
+#ifdef SQLITE_ENABLE_COLUMN_METADATA
+ str = sqlite3_column_table_name(S->stmt, colno);
+ if (str) {
+ add_assoc_string(return_value, "table", str, 1);
+ }
+#endif
+
add_assoc_zval(return_value, "flags", flags);
return SUCCESS;
--- /dev/null
+--TEST--
+PDO SQLite Feature Request #42589 (getColumnMeta() should also return table name)
+--SKIPIF--
+<?php
+if (!extension_loaded('pdo') || !extension_loaded('pdo_sqlite')) die('skip not loaded');
+?>
+--FILE--
+<?php
+$db = new PDO("sqlite::memory:");
+
+$db->exec('CREATE TABLE test (field1 VARCHAR(10))');
+$db->exec('INSERT INTO test VALUES("test")');
+
+$result = $db->query('SELECT * FROM test t1 LEFT JOIN test t2 ON t1.field1 = t2.field1');
+$meta1 = $result->getColumnMeta(0);
+$meta2 = $result->getColumnMeta(1);
+
+var_dump(!empty($meta1[b'table']) && $meta1[b'table'] == b'test');
+var_dump(!empty($meta2[b'table']) && $meta2[b'table'] == b'test');
+?>
+--EXPECTF--
+bool(true)
+bool(true)
debug_flags="-DSQLITE_DEBUG=1"
fi
- other_flags="-DSQLITE_ENABLE_FTS3=1 -DSQLITE_CORE=1 -DSQLITE_ENABLE_ICU=1"
+ other_flags="-DSQLITE_ENABLE_FTS3=1 -DSQLITE_CORE=1 -DSQLITE_ENABLE_ICU=1 -DSQLITE_ENABLE_COLUMN_METADATA=1"
PHP_SQLITE3_CFLAGS="-I@ext_srcdir@/libsqlite -I@ext_builddir@/libsqlite $other_flags $threadsafe_flags $debug_flags"
fi