mirror of
https://github.com/php/php-src.git
synced 2025-08-16 22:18:50 +02:00
Fixed pdo_firebird tests failures
This commit is contained in:
parent
3ae802508a
commit
7435fc88a6
3 changed files with 25 additions and 5 deletions
|
@ -16,7 +16,12 @@ $db = PDOTest::factory();
|
||||||
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
|
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
|
||||||
$db->exec('CREATE TABLE test(id int)');
|
$db->exec('CREATE TABLE test(id int)');
|
||||||
$db->exec('INSERT INTO test VALUES(1)');
|
$db->exec('INSERT INTO test VALUES(1)');
|
||||||
$stmt = $db->prepare('SELECT * FROM test LIMIT :limit');
|
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'firebird') {
|
||||||
|
$sql = 'SELECT FIRST :limit * FROM test';
|
||||||
|
} else {
|
||||||
|
$sql = 'SELECT * FROM test LIMIT :limit';
|
||||||
|
}
|
||||||
|
$stmt = $db->prepare($sql);
|
||||||
$stmt->bindValue('limit', 1, PDO::PARAM_INT);
|
$stmt->bindValue('limit', 1, PDO::PARAM_INT);
|
||||||
if(!($res = $stmt->execute())) var_dump($stmt->errorInfo());
|
if(!($res = $stmt->execute())) var_dump($stmt->errorInfo());
|
||||||
if(!($res = $stmt->execute())) var_dump($stmt->errorInfo());
|
if(!($res = $stmt->execute())) var_dump($stmt->errorInfo());
|
||||||
|
|
|
@ -22,11 +22,11 @@ $stmt = $pdo->prepare ("SELECT * FROM test");
|
||||||
$stmt->execute();
|
$stmt->execute();
|
||||||
var_dump($stmt->fetchAll());
|
var_dump($stmt->fetchAll());
|
||||||
|
|
||||||
$pdo = PDOTest::factory();
|
|
||||||
|
|
||||||
if ($pdo->getAttribute(PDO::ATTR_DRIVER_NAME) == 'oci') {
|
if ($pdo->getAttribute(PDO::ATTR_DRIVER_NAME) == 'oci') {
|
||||||
$type = "clob";
|
$type = "clob";
|
||||||
} else{
|
} else if ($pdo->getAttribute(PDO::ATTR_DRIVER_NAME) == 'firebird') {
|
||||||
|
$type = 'BLOB SUB_TYPE TEXT';
|
||||||
|
} else {
|
||||||
$type = "text";
|
$type = "text";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -437,7 +437,7 @@ static int firebird_bind_blob(pdo_stmt_t *stmt, ISC_QUAD *blob_id, zval *param T
|
||||||
put_cnt += chunk_size;
|
put_cnt += chunk_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
zval_ptr_dtor(param);
|
zval_dtor(param);
|
||||||
|
|
||||||
if (isc_close_blob(H->isc_status, &h)) {
|
if (isc_close_blob(H->isc_status, &h)) {
|
||||||
RECORD_ERROR(stmt);
|
RECORD_ERROR(stmt);
|
||||||
|
@ -522,6 +522,19 @@ static int firebird_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_dat
|
||||||
parameter = ¶m->parameter;
|
parameter = ¶m->parameter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Z_TYPE_P(parameter) == IS_RESOURCE) {
|
||||||
|
php_stream *stm;
|
||||||
|
|
||||||
|
php_stream_from_zval_no_verify(stm, parameter);
|
||||||
|
if (stm) {
|
||||||
|
zval_ptr_dtor(parameter);
|
||||||
|
ZVAL_STR(parameter, php_stream_copy_to_mem(stm, PHP_STREAM_COPY_ALL, 0));
|
||||||
|
} else {
|
||||||
|
pdo_raise_impl_error(stmt->dbh, stmt, "HY105", "Expected a stream resource" TSRMLS_CC);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (var->sqltype & ~1) {
|
switch (var->sqltype & ~1) {
|
||||||
case SQL_ARRAY:
|
case SQL_ARRAY:
|
||||||
strcpy(stmt->error_code, "HY000");
|
strcpy(stmt->error_code, "HY000");
|
||||||
|
@ -601,6 +614,8 @@ static int firebird_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_dat
|
||||||
} else {
|
} else {
|
||||||
parameter = ¶m->parameter;
|
parameter = ¶m->parameter;
|
||||||
}
|
}
|
||||||
|
zval_ptr_dtor(parameter);
|
||||||
|
ZVAL_NULL(parameter);
|
||||||
|
|
||||||
if (firebird_stmt_get_col(stmt, param->paramno, &value, &value_len, &caller_frees TSRMLS_CC)) {
|
if (firebird_stmt_get_col(stmt, param->paramno, &value, &value_len, &caller_frees TSRMLS_CC)) {
|
||||||
switch (PDO_PARAM_TYPE(param->param_type)) {
|
switch (PDO_PARAM_TYPE(param->param_type)) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue