set when executing internal queries such as "show master status" via MySQL).
Added missing constant for MAX_BUFFER_SIZE.
stmt->driver_data = S;
stmt->methods = &mysql_stmt_methods;
+ if (H->emulate_prepare) {
+ goto end;
+ }
+
/* TODO: add runtime check to determine if the server we are talking to supports
* prepared statements; if it doesn't, we should set stmt->supports_placeholders
* to PDO_PLACEHOLDER_NONE, and have the rest of the code look at S->stmt to
fallback:
#endif
+end:
stmt->supports_placeholders = PDO_PLACEHOLDER_NONE;
return 1;
case PDO_MYSQL_ATTR_USE_BUFFERED_QUERY:
((pdo_mysql_db_handle *)dbh->driver_data)->buffered = Z_BVAL_P(val);
return 1;
-
+ case PDO_MYSQL_ATTR_DIRECT_QUERY:
+ ((pdo_mysql_db_handle *)dbh->driver_data)->emulate_prepare = Z_BVAL_P(val);
+ return 1;
default:
return 0;
}
REGISTER_PDO_CONST_LONG("MYSQL_ATTR_INIT_COMMAND", (long)PDO_MYSQL_ATTR_INIT_COMMAND);
REGISTER_PDO_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_FILE", (long)PDO_MYSQL_ATTR_READ_DEFAULT_FILE);
REGISTER_PDO_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_GROUP", (long)PDO_MYSQL_ATTR_READ_DEFAULT_GROUP);
+ REGISTER_PDO_CONST_LONG("MYSQL_ATTR_MAX_BUFFER_SIZE", (long)PDO_MYSQL_ATTR_MAX_BUFFER_SIZE);
+ REGISTER_PDO_CONST_LONG("MYSQL_ATTR_DIRECT_QUERY", (long)PDO_MYSQL_ATTR_DIRECT_QUERY);
return php_pdo_register_driver(&pdo_mysql_driver);
}
unsigned attached:1;
unsigned buffered:1;
+ unsigned emulate_prepare:1;
unsigned _reserved:31;
unsigned long max_buffer_size;
PDO_MYSQL_ATTR_READ_DEFAULT_FILE,
PDO_MYSQL_ATTR_READ_DEFAULT_GROUP,
PDO_MYSQL_ATTR_MAX_BUFFER_SIZE,
+ PDO_MYSQL_ATTR_DIRECT_QUERY,
};
#endif