1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Improve test for odbc_columns()

Hopefully, intermittent test failures will be fixed by creating and using a separate database.

Furthermore, more meaningful test cases are added which also assert the output, as well as wildcard character based searching.
This commit is contained in:
Máté Kocsis
2023-08-29 00:24:43 +02:00
parent 9dcdfa5e3f
commit 2f9f2928ce

View File

@@ -3,46 +3,421 @@ odbc_columns(): Basic test
--EXTENSIONS--
odbc
--SKIPIF--
<?php include 'skipif.inc'; ?>
--CONFLICTS--
odbc
<?php
include 'skipif.inc';
$conn = odbc_connect($dsn, $user, $pass);
$result = @odbc_exec($conn, "SELECT @@Version");
if ($result) {
$array = odbc_fetch_array($result);
$info = (string) reset($array);
if (!str_contains($info, "Microsoft SQL Server")) {
echo "skip MS SQL specific test";
}
}
?>
--FILE--
<?php
include 'config.inc';
$conn = odbc_connect($dsn, $user, $pass);
odbc_exec($conn, 'CREATE DATABASE ColumnsTest');
odbc_exec($conn, 'USE ColumnsTest');
odbc_exec($conn, 'CREATE TABLE columns (foo INT NOT NULL, bar VARCHAR(20))');
var_dump($result = odbc_columns($conn, '', '', '', ''));
var_dump(odbc_fetch_row($result));
odbc_free_result($result);
$res = odbc_columns($conn, "ColumnsTest", "dbo", "columns", "foo");
var_dump(odbc_fetch_array($res));
odbc_free_result($res);
var_dump($result = odbc_columns($conn));
var_dump(odbc_fetch_row($result));
var_dump(odbc_free_result($result));
$res = odbc_columns($conn, "ColumnsTest", "dbo", "columns", null);
var_dump(odbc_fetch_array($res));
odbc_free_result($res);
var_dump($result = odbc_columns($conn, NULL, NULL, NULL, NULL));
var_dump(odbc_fetch_row($result));
var_dump(odbc_free_result($result));
$res = odbc_columns($conn, "ColumnsTest", "dbo", null);
var_dump(odbc_fetch_array($res));
odbc_free_result($res);
var_dump($result = odbc_columns($conn, 'FOO', 'FOO', 'FOO', 'FOO'));
var_dump(odbc_fetch_row($result));
odbc_free_result($result);
$res = odbc_columns($conn, "ColumnsTest", "db%", "columns", "foo");
var_dump(odbc_fetch_array($res));
odbc_free_result($res);
$res = odbc_columns($conn, "ColumnsTest", "dbo", "column_", "bar");
var_dump(odbc_fetch_array($res));
odbc_free_result($res);
$res = odbc_columns($conn, "ColumnsTest", "dbo", "columns", "b%");
var_dump(odbc_fetch_array($res));
odbc_free_result($res);
?>
--CLEAN--
<?php
require 'config.inc';
$conn = odbc_connect($dsn, $user, $pass);
odbc_exec($conn, 'USE ColumnsTest');
odbc_exec($conn, 'DROP TABLE columns');
odbc_exec($conn, 'USE master');
odbc_exec($conn, 'DROP DATABASE ColumnsTest');
?>
--EXPECTF--
resource(%d) of type (odbc result)
bool(false)
resource(%d) of type (odbc result)
bool(true)
bool(true)
resource(%d) of type (odbc result)
bool(true)
bool(true)
resource(%d) of type (odbc result)
bool(false)
array(29) {
["TABLE_CAT"]=>
string(11) "ColumnsTest"
["TABLE_SCHEM"]=>
string(3) "dbo"
["TABLE_NAME"]=>
string(7) "columns"
["COLUMN_NAME"]=>
string(3) "foo"
["DATA_TYPE"]=>
string(1) "4"
["TYPE_NAME"]=>
string(3) "int"
["COLUMN_SIZE"]=>
string(2) "10"
["BUFFER_LENGTH"]=>
string(1) "4"
["DECIMAL_DIGITS"]=>
string(1) "0"
["NUM_PREC_RADIX"]=>
string(2) "10"
["NULLABLE"]=>
string(1) "0"
["REMARKS"]=>
NULL
["COLUMN_DEF"]=>
NULL
["SQL_DATA_TYPE"]=>
string(1) "4"
["SQL_DATETIME_SUB"]=>
NULL
["CHAR_OCTET_LENGTH"]=>
NULL
["ORDINAL_POSITION"]=>
string(1) "1"
["IS_NULLABLE"]=>
string(2) "NO"
["SS_IS_SPARSE"]=>
string(1) "0"
["SS_IS_COLUMN_SET"]=>
string(1) "0"
["SS_IS_COMPUTED"]=>
string(1) "0"
["SS_IS_IDENTITY"]=>
string(1) "0"
["SS_UDT_CATALOG_NAME"]=>
NULL
["SS_UDT_SCHEMA_NAME"]=>
NULL
["SS_UDT_ASSEMBLY_TYPE_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_CATALOG_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_SCHEMA_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_NAME"]=>
NULL
["SS_DATA_TYPE"]=>
string(2) "56"
}
array(29) {
["TABLE_CAT"]=>
string(11) "ColumnsTest"
["TABLE_SCHEM"]=>
string(3) "dbo"
["TABLE_NAME"]=>
string(7) "columns"
["COLUMN_NAME"]=>
string(3) "foo"
["DATA_TYPE"]=>
string(1) "4"
["TYPE_NAME"]=>
string(3) "int"
["COLUMN_SIZE"]=>
string(2) "10"
["BUFFER_LENGTH"]=>
string(1) "4"
["DECIMAL_DIGITS"]=>
string(1) "0"
["NUM_PREC_RADIX"]=>
string(2) "10"
["NULLABLE"]=>
string(1) "0"
["REMARKS"]=>
NULL
["COLUMN_DEF"]=>
NULL
["SQL_DATA_TYPE"]=>
string(1) "4"
["SQL_DATETIME_SUB"]=>
NULL
["CHAR_OCTET_LENGTH"]=>
NULL
["ORDINAL_POSITION"]=>
string(1) "1"
["IS_NULLABLE"]=>
string(2) "NO"
["SS_IS_SPARSE"]=>
string(1) "0"
["SS_IS_COLUMN_SET"]=>
string(1) "0"
["SS_IS_COMPUTED"]=>
string(1) "0"
["SS_IS_IDENTITY"]=>
string(1) "0"
["SS_UDT_CATALOG_NAME"]=>
NULL
["SS_UDT_SCHEMA_NAME"]=>
NULL
["SS_UDT_ASSEMBLY_TYPE_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_CATALOG_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_SCHEMA_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_NAME"]=>
NULL
["SS_DATA_TYPE"]=>
string(2) "56"
}
array(29) {
["TABLE_CAT"]=>
string(11) "ColumnsTest"
["TABLE_SCHEM"]=>
string(3) "dbo"
["TABLE_NAME"]=>
string(7) "columns"
["COLUMN_NAME"]=>
string(3) "foo"
["DATA_TYPE"]=>
string(1) "4"
["TYPE_NAME"]=>
string(3) "int"
["COLUMN_SIZE"]=>
string(2) "10"
["BUFFER_LENGTH"]=>
string(1) "4"
["DECIMAL_DIGITS"]=>
string(1) "0"
["NUM_PREC_RADIX"]=>
string(2) "10"
["NULLABLE"]=>
string(1) "0"
["REMARKS"]=>
NULL
["COLUMN_DEF"]=>
NULL
["SQL_DATA_TYPE"]=>
string(1) "4"
["SQL_DATETIME_SUB"]=>
NULL
["CHAR_OCTET_LENGTH"]=>
NULL
["ORDINAL_POSITION"]=>
string(1) "1"
["IS_NULLABLE"]=>
string(2) "NO"
["SS_IS_SPARSE"]=>
string(1) "0"
["SS_IS_COLUMN_SET"]=>
string(1) "0"
["SS_IS_COMPUTED"]=>
string(1) "0"
["SS_IS_IDENTITY"]=>
string(1) "0"
["SS_UDT_CATALOG_NAME"]=>
NULL
["SS_UDT_SCHEMA_NAME"]=>
NULL
["SS_UDT_ASSEMBLY_TYPE_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_CATALOG_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_SCHEMA_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_NAME"]=>
NULL
["SS_DATA_TYPE"]=>
string(2) "56"
}
array(29) {
["TABLE_CAT"]=>
string(11) "ColumnsTest"
["TABLE_SCHEM"]=>
string(3) "dbo"
["TABLE_NAME"]=>
string(7) "columns"
["COLUMN_NAME"]=>
string(3) "foo"
["DATA_TYPE"]=>
string(1) "4"
["TYPE_NAME"]=>
string(3) "int"
["COLUMN_SIZE"]=>
string(2) "10"
["BUFFER_LENGTH"]=>
string(1) "4"
["DECIMAL_DIGITS"]=>
string(1) "0"
["NUM_PREC_RADIX"]=>
string(2) "10"
["NULLABLE"]=>
string(1) "0"
["REMARKS"]=>
NULL
["COLUMN_DEF"]=>
NULL
["SQL_DATA_TYPE"]=>
string(1) "4"
["SQL_DATETIME_SUB"]=>
NULL
["CHAR_OCTET_LENGTH"]=>
NULL
["ORDINAL_POSITION"]=>
string(1) "1"
["IS_NULLABLE"]=>
string(2) "NO"
["SS_IS_SPARSE"]=>
string(1) "0"
["SS_IS_COLUMN_SET"]=>
string(1) "0"
["SS_IS_COMPUTED"]=>
string(1) "0"
["SS_IS_IDENTITY"]=>
string(1) "0"
["SS_UDT_CATALOG_NAME"]=>
NULL
["SS_UDT_SCHEMA_NAME"]=>
NULL
["SS_UDT_ASSEMBLY_TYPE_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_CATALOG_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_SCHEMA_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_NAME"]=>
NULL
["SS_DATA_TYPE"]=>
string(2) "56"
}
array(29) {
["TABLE_CAT"]=>
string(11) "ColumnsTest"
["TABLE_SCHEM"]=>
string(3) "dbo"
["TABLE_NAME"]=>
string(7) "columns"
["COLUMN_NAME"]=>
string(3) "bar"
["DATA_TYPE"]=>
string(2) "12"
["TYPE_NAME"]=>
string(7) "varchar"
["COLUMN_SIZE"]=>
string(2) "20"
["BUFFER_LENGTH"]=>
string(2) "20"
["DECIMAL_DIGITS"]=>
NULL
["NUM_PREC_RADIX"]=>
NULL
["NULLABLE"]=>
string(1) "1"
["REMARKS"]=>
NULL
["COLUMN_DEF"]=>
NULL
["SQL_DATA_TYPE"]=>
string(2) "12"
["SQL_DATETIME_SUB"]=>
NULL
["CHAR_OCTET_LENGTH"]=>
string(2) "20"
["ORDINAL_POSITION"]=>
string(1) "2"
["IS_NULLABLE"]=>
string(3) "YES"
["SS_IS_SPARSE"]=>
string(1) "0"
["SS_IS_COLUMN_SET"]=>
string(1) "0"
["SS_IS_COMPUTED"]=>
string(1) "0"
["SS_IS_IDENTITY"]=>
string(1) "0"
["SS_UDT_CATALOG_NAME"]=>
NULL
["SS_UDT_SCHEMA_NAME"]=>
NULL
["SS_UDT_ASSEMBLY_TYPE_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_CATALOG_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_SCHEMA_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_NAME"]=>
NULL
["SS_DATA_TYPE"]=>
string(2) "39"
}
array(29) {
["TABLE_CAT"]=>
string(11) "ColumnsTest"
["TABLE_SCHEM"]=>
string(3) "dbo"
["TABLE_NAME"]=>
string(7) "columns"
["COLUMN_NAME"]=>
string(3) "bar"
["DATA_TYPE"]=>
string(2) "12"
["TYPE_NAME"]=>
string(7) "varchar"
["COLUMN_SIZE"]=>
string(2) "20"
["BUFFER_LENGTH"]=>
string(2) "20"
["DECIMAL_DIGITS"]=>
NULL
["NUM_PREC_RADIX"]=>
NULL
["NULLABLE"]=>
string(1) "1"
["REMARKS"]=>
NULL
["COLUMN_DEF"]=>
NULL
["SQL_DATA_TYPE"]=>
string(2) "12"
["SQL_DATETIME_SUB"]=>
NULL
["CHAR_OCTET_LENGTH"]=>
string(2) "20"
["ORDINAL_POSITION"]=>
string(1) "2"
["IS_NULLABLE"]=>
string(3) "YES"
["SS_IS_SPARSE"]=>
string(1) "0"
["SS_IS_COLUMN_SET"]=>
string(1) "0"
["SS_IS_COMPUTED"]=>
string(1) "0"
["SS_IS_IDENTITY"]=>
string(1) "0"
["SS_UDT_CATALOG_NAME"]=>
NULL
["SS_UDT_SCHEMA_NAME"]=>
NULL
["SS_UDT_ASSEMBLY_TYPE_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_CATALOG_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_SCHEMA_NAME"]=>
NULL
["SS_XML_SCHEMACOLLECTION_NAME"]=>
NULL
["SS_DATA_TYPE"]=>
string(2) "39"
}