diff options
Diffstat (limited to 'ext/pdo_sqlite/sqlite_statement.c')
-rw-r--r-- | ext/pdo_sqlite/sqlite_statement.c | 44 |
1 files changed, 2 insertions, 42 deletions
diff --git a/ext/pdo_sqlite/sqlite_statement.c b/ext/pdo_sqlite/sqlite_statement.c index 64a90e0ede..3769b1e049 100644 --- a/ext/pdo_sqlite/sqlite_statement.c +++ b/ext/pdo_sqlite/sqlite_statement.c @@ -39,46 +39,6 @@ static int pdo_sqlite_stmt_dtor(pdo_stmt_t *stmt) return 1; } -/** - * Change the column count on the statement. - * - * Since PHP 7.2 sqlite3_prepare_v2 is used which auto recompile prepared statement on schema change. - * Instead of raise an error on schema change, the result set will change, and the statement's columns must be updated. - * - * See bug #78192 - */ -static void pdo_sqlite_stmt_set_column_count(pdo_stmt_t *stmt, int new_count) -{ - /* Columns not yet "described" */ - if (!stmt->columns) { - stmt->column_count = new_count; - - return; - } - - /* - * The column count has not changed : no need to reload columns description - * Note: Do not handle attribute name change, without column count change - */ - if (new_count == stmt->column_count) { - return; - } - - /* Free previous columns to force reload description */ - int i; - - for (i = 0; i < stmt->column_count; i++) { - if (stmt->columns[i].name) { - zend_string_release(stmt->columns[i].name); - stmt->columns[i].name = NULL; - } - } - - efree(stmt->columns); - stmt->columns = NULL; - stmt->column_count = new_count; -} - static int pdo_sqlite_stmt_execute(pdo_stmt_t *stmt) { pdo_sqlite_stmt *S = (pdo_sqlite_stmt*)stmt->driver_data; @@ -91,11 +51,11 @@ static int pdo_sqlite_stmt_execute(pdo_stmt_t *stmt) switch (sqlite3_step(S->stmt)) { case SQLITE_ROW: S->pre_fetched = 1; - pdo_sqlite_stmt_set_column_count(stmt, sqlite3_data_count(S->stmt)); + php_pdo_stmt_set_column_count(stmt, sqlite3_data_count(S->stmt)); return 1; case SQLITE_DONE: - pdo_sqlite_stmt_set_column_count(stmt, sqlite3_column_count(S->stmt)); + php_pdo_stmt_set_column_count(stmt, sqlite3_column_count(S->stmt)); stmt->row_count = sqlite3_changes(S->H->db); sqlite3_reset(S->stmt); S->done = 1; |