Home  |  Linux  | Mysql  | PHP  | XML
Date:Fri Feb 10 19:17:16 2012
Subject:[svn:dbd-oracle] r15138 - in dbd-oracle/trunk: . lib/DBD lib/DBD/Oracle t
Author: yanick
Date: Fri Feb 10 11:17:15 2012
New Revision: 15138

Modified:
dbd-oracle/trunk/Changes
dbd-oracle/trunk/dbdimp.c
dbd-oracle/trunk/lib/DBD/Oracle.pm
dbd-oracle/trunk/lib/DBD/Oracle/GetInfo.pm
dbd-oracle/trunk/t/rt74753-utf8-encoded.t

Log:
rt74753 for truncated strings

with some code tidying

Modified: dbd-oracle/trunk/Changes
==============================================================================
--- dbd-oracle/trunk/Changes (original)
+++ dbd-oracle/trunk/Changes Fri Feb 10 11:17:15 2012
@@ -1,6 +1,6 @@
Revision history for DBD::Oracle

-NEXT 2012-02-08
+NEXT

[BUG FIXES]
- TAF supports now conditional to presence of OCI_ATTR_TAF_ENABLED

Modified: dbd-oracle/trunk/dbdimp.c
==============================================================================
--- dbd-oracle/trunk/dbdimp.c (original)
+++ dbd-oracle/trunk/dbdimp.c Fri Feb 10 11:17:15 2012
@@ -3222,6 +3222,13 @@
SvCUR_set(sv, phs->alen);
*SvEND(sv) = '\0';
SvPOK_only_UTF8(sv);
+ if (CSFORM_IMPLIES_UTF8(SQLCS_IMPLICIT)) {
+#ifdef sv_utf8_decode
+ sv_utf8_decode(sv);
+#else
+ SvUTF8_on(sv);
+#endif
+ }
}
else { /* shouldn't happen */
debug = 2;

Modified: dbd-oracle/trunk/lib/DBD/Oracle.pm
==============================================================================
--- dbd-oracle/trunk/lib/DBD/Oracle.pm (original)
+++ dbd-oracle/trunk/lib/DBD/Oracle.pm Fri Feb 10 11:17:15 2012
@@ -59,42 +59,50 @@
}

sub driver{
- return $drh if $drh;
- my($class, $attr) = @_;
- my $oci = DBD::Oracle::ORA_OCI();
-
- $class .= "::dr";
-
- # not a 'my' since we use it above to prevent multiple drivers
-
- $drh = DBI::_new_drh($class, {
- 'Name' => 'Oracle',
- 'Version' => $VERSION,
- 'Err' => \my $err,
- 'Errstr' => \my $errstr,
- 'Attribution' => "DBD::Oracle $VERSION using OCI$oci by Tim Bunce",
- });
- DBD::Oracle::dr::init_oci($drh) ;
- $drh->STORE('ShowErrorStatement', 1);
- DBD::Oracle::db->install_method("ora_lob_read");
- DBD::Oracle::db->install_method("ora_lob_write");
- DBD::Oracle::db->install_method("ora_lob_append");
- DBD::Oracle::db->install_method("ora_lob_trim");
- DBD::Oracle::db->install_method("ora_lob_length");
- DBD::Oracle::db->install_method("ora_lob_chunk_size");
- DBD::Oracle::db->install_method("ora_lob_is_init");
- DBD::Oracle::db->install_method("ora_nls_parameters");
- DBD::Oracle::db->install_method("ora_can_unicode");
- DBD::Oracle::db->install_method("ora_can_taf");
- DBD::Oracle::db->install_method("ora_db_startup");
- DBD::Oracle::db->install_method("ora_db_shutdown");
- DBD::Oracle::st->install_method("ora_fetch_scroll");
- DBD::Oracle::st->install_method("ora_scroll_position");
- DBD::Oracle::st->install_method("ora_ping");
- DBD::Oracle::st->install_method("ora_stmt_type_name");
- DBD::Oracle::st->install_method("ora_stmt_type");
- $drh;
+ return $drh if $drh;
+
+ my($class, $attr) = @_;
+ my $oci = DBD::Oracle::ORA_OCI();
+
+ $class .= "::dr";
+
+ # not a 'my' since we use it above to prevent multiple drivers
+
+ $drh = DBI::_new_drh($class, {
+ 'Name' => 'Oracle',
+ 'Version' => $VERSION,
+ 'Err' => \my $err,
+ 'Errstr' => \my $errstr,
+ 'Attribution' => "DBD::Oracle $VERSION using OCI$oci by Tim Bunce",
+ });
+
+ DBD::Oracle::dr::init_oci($drh) ;
+ $drh->STORE('ShowErrorStatement', 1);
+
+ DBD::Oracle::db->install_method($_) for qw/
+ ora_lob_read
+ ora_lob_write
+ ora_lob_append
+ ora_lob_trim
+ ora_lob_length
+ ora_lob_chunk_size
+ ora_lob_is_init
+ ora_nls_parameters
+ ora_can_unicode
+ ora_can_taf
+ ora_db_startup
+ ora_db_shutdown
+ /;
+
+ DBD::Oracle::st->install_method($_) for qw/
+ ora_fetch_scroll
+ ora_scroll_position
+ ora_ping
+ ora_stmt_type_name
+ ora_stmt_type
+ /;

+ $drh;
}


@@ -1095,24 +1103,21 @@
return $sth->set_err($DBI::stderr, "executing $tuple_count generated $err_count errors")
if $err_count;

- if (!wantarray) {
- return $tuple_count;
- }
-
- return ($tuple_count, defined $row_count ? $row_count : undef);
-
-
+ return wantarray
+ ? ($tuple_count, defined $row_count ? $row_count : undef)
+ : $tuple_count;

}

sub private_attribute_info {
- return {ora_lengths => undef,
- ora_types => undef,
- ora_rowid => undef,
- ora_est_row_width => undef,
- ora_type => undef,
- ora_fail_over => undef,
- };
+ return { map { $_ => undef } qw/
+ ora_lengths
+ ora_types
+ ora_rowid
+ ora_est_row_width
+ ora_type
+ ora_fail_over
+ / };
}
}


Modified: dbd-oracle/trunk/lib/DBD/Oracle/GetInfo.pm
==============================================================================
--- dbd-oracle/trunk/lib/DBD/Oracle/GetInfo.pm (original)
+++ dbd-oracle/trunk/lib/DBD/Oracle/GetInfo.pm Fri Feb 10 11:17:15 2012
@@ -96,27 +96,59 @@


our %info = (
- 20 => 'Y', # SQL_ACCESSIBLE_PROCEDURES
+ 0 => 0, # SQL_MAX_DRIVER_CONNECTIONS
+ 1 => 0, # SQL_MAX_CONCURRENT_ACTIVITIES
+ 2 => \&sql_data_source_name, # SQL_DATA_SOURCE_NAME
+ 3 => 147209344, # SQL_DRIVER_HDBC
+ 4 => 147212776, # SQL_DRIVER_HENV
+# 5 => undef, # SQL_DRIVER_HSTMT
+ 6 => $INC{'DBD/Oracle.pm'}, # SQL_DRIVER_NAME
+ 7 => $sql_driver_ver, # SQL_DRIVER_VER
+ 8 => 191, # SQL_FETCH_DIRECTION
+ 9 => 1, # SQL_ODBC_API_CONFORMANCE
+ 10 => '03.52', # SQL_ODBC_VER
+ 11 => 'Y', # SQL_ROW_UPDATES
+ 12 => 0, # SQL_ODBC_SAG_CLI_CONFORMANCE
+ 13 => sub {"$_[0]->{Name}"}, # SQL_SERVER_NAME
+ 14 => '\\', # SQL_SEARCH_PATTERN_ESCAPE
+ 15 => 1, # SQL_ODBC_SQL_CONFORMANCE
+ 16 => 'DEVEL', # SQL_DATABASE_NAME
+ 17 => 'Oracle', # SQL_DBMS_NAME
+ 18 => \&sql_dbms_version, # SQL_DBMS_VERSION
19 => 'Y', # SQL_ACCESSIBLE_TABLES
- 0 => 0, # SQL_ACTIVE_CONNECTIONS
- 116 => 0, # SQL_ACTIVE_ENVIRONMENTS
- 1 => 0, # SQL_ACTIVE_STATEMENTS
- 169 => 64, # SQL_AGGREGATE_FUNCTIONS
- 117 => 0, # SQL_ALTER_DOMAIN
- 86 => 1029739, # SQL_ALTER_TABLE
- 10021 => 2, # SQL_ASYNC_MODE
- 120 => 0, # SQL_BATCH_ROW_COUNT
- 121 => 0, # SQL_BATCH_SUPPORT
- 82 => 88, # SQL_BOOKMARK_PERSISTENCE
- 114 => 2, # SQL_CATALOG_LOCATION
- 10003 => 'N', # SQL_CATALOG_NAME
- 41 => '@', # SQL_CATALOG_NAME_SEPARATOR
- 42 => 'Database Link', # SQL_CATALOG_TERM
- 92 => 3, # SQL_CATALOG_USAGE
- 10004 => '', # SQL_COLLATING_SEQUENCE
- 10004 => '', # SQL_COLLATION_SEQ
- 87 => 'Y', # SQL_COLUMN_ALIAS
+ 20 => 'Y', # SQL_ACCESSIBLE_PROCEDURES
+ 21 => 'Y', # SQL_PROCEDURES
22 => 1, # SQL_CONCAT_NULL_BEHAVIOR
+ 23 => 2, # SQL_CURSOR_COMMIT_BEHAVIOR
+ 24 => 2, # SQL_CURSOR_ROLLBACK_BEHAVIOR
+ 25 => 'N', # SQL_DATA_SOURCE_READ_ONLY
+ 26 => 8, # SQL_DEFAULT_TRANSACTION_ISOLATION
+ 27 => 'Y', # SQL_EXPRESSIONS_IN_ORDERBY
+ 28 => 1, # SQL_IDENTIFIER_CASE
+ 29 => '"', # SQL_IDENTIFIER_QUOTE_CHAR
+ 30 => 30, # SQL_MAXIMUM_COLUMN_NAME_LENGTH
+ 31 => 30, # SQL_MAXIMUM_CURSOR_NAME_LENGTH
+ 32 => 30, # SQL_MAXIMUM_SCHEMA_NAME_LENGTH
+ 33 => 92, # SQL_MAX_PROCEDURE_NAME_LEN
+ 34 => 0, # SQL_MAXIMUM_CATALOG_NAME_LENGTH
+ 35 => 30, # SQL_MAXIMUM_TABLE_NAME_LENGTH
+ 36 => 'Y', # SQL_MULT_RESULT_SETS
+ 37 => 'Y', # SQL_MULTIPLE_ACTIVE_TXN
+ 38 => 'Y', # SQL_OUTER_JOINS
+ 39 => 'Owner', # SQL_SCHEMA_TERM
+ 40 => 'Procedure', # SQL_PROCEDURE_TERM
+ 41 => '@', # SQL_QUALIFIER_NAME_SEPARATOR
+ 42 => 'Database Link', # SQL_QUALIFIER_TERM
+ 43 => 7, # SQL_SCROLL_CONCURRENCY
+ 44 => 19, # SQL_SCROLL_OPTIONS
+ 45 => 'Table', # SQL_TABLE_TERM
+ 46 => 3, # SQL_TRANSACTION_CAPABLE
+ 47 => \&sql_user_name, # SQL_USER_NAME
+ 48 => 1, # SQL_CONVERT_FUNCTIONS
+ 49 => 16646015, # SQL_NUMERIC_FUNCTIONS
+ 50 => 8355839, # SQL_STRING_FUNCTIONS
+ 51 => 7, # SQL_SYSTEM_FUNCTIONS
+ 52 => 1023999, # SQL_TIMEDATE_FUNCTIONS
53 => 10518015, # SQL_CONVERT_BIGINT
54 => 10775839, # SQL_CONVERT_BINARY
55 => 10518015, # SQL_CONVERT_BIT
@@ -125,12 +157,7 @@
58 => 10518015, # SQL_CONVERT_DECIMAL
59 => 10514943, # SQL_CONVERT_DOUBLE
60 => 10514943, # SQL_CONVERT_FLOAT
- 48 => 1, # SQL_CONVERT_FUNCTIONS
- 173 => 0, # SQL_CONVERT_GUID
61 => 10518015, # SQL_CONVERT_INTEGER
- 123 => 0, # SQL_CONVERT_INTERVAL_DAY_TIME
- 124 => 0, # SQL_CONVERT_INTERVAL_YEAR_MONTH
- 71 => 265216, # SQL_CONVERT_LONGVARBINARY
62 => 14680833, # SQL_CONVERT_LONGVARCHAR
63 => 10518015, # SQL_CONVERT_NUMERIC
64 => 10514943, # SQL_CONVERT_REAL
@@ -140,10 +167,62 @@
68 => 10518015, # SQL_CONVERT_TINYINT
69 => 10775839, # SQL_CONVERT_VARBINARY
70 => 15204351, # SQL_CONVERT_VARCHAR
+ 71 => 265216, # SQL_CONVERT_LONGVARBINARY
+ 72 => 10, # SQL_TRANSACTION_ISOLATION_OPTION
+ 73 => 'N', # SQL_ODBC_SQL_OPT_IEF
+ 74 => 2, # SQL_CORRELATION_NAME
+ 75 => 1, # SQL_NON_NULLABLE_COLUMNS
+# 76 => undef, # SQL_DRIVER_HLIB
+ 77 => '03.52', # SQL_DRIVER_ODBC_VER
+ 78 => 1, # SQL_LOCK_TYPES
+ 79 => 1, # SQL_POS_OPERATIONS
+ 80 => 7, # SQL_POSITIONED_STATEMENTS
+ 81 => 15, # SQL_GETDATA_EXTENSIONS
+ 82 => 88, # SQL_BOOKMARK_PERSISTENCE
+ 83 => 0, # SQL_STATIC_SENSITIVITY
+ 84 => 0, # SQL_FILE_USAGE
+ 85 => 1, # SQL_NULL_COLLATION
+ 86 => 1029739, # SQL_ALTER_TABLE
+ 87 => 'Y', # SQL_COLUMN_ALIAS
+ 88 => 2, # SQL_GROUP_BY
+ 89 => \&sql_keywords, # SQL_KEYWORDS
+ 90 => 'N', # SQL_ORDER_BY_COLUMNS_IN_SELECT
+ 91 => 31, # SQL_SCHEMA_USAGE
+ 92 => 3, # SQL_QUALIFIER_USAGE
+ 93 => 3, # SQL_QUOTED_IDENTIFIER_CASE
+ 94 => '$#', # SQL_SPECIAL_CHARACTERS
+ 95 => 31, # SQL_SUBQUERIES
+ 96 => 3, # SQL_UNION_STATEMENT
+ 97 => 0, # SQL_MAXIMUM_COLUMNS_IN_GROUP_BY
+ 98 => 0, # SQL_MAXIMUM_COLUMNS_IN_INDEX
+ 99 => 0, # SQL_MAXIMUM_COLUMNS_IN_ORDER_BY
+ 100 => 1000, # SQL_MAXIMUM_COLUMNS_IN_SELECT
+ 101 => 1000, # SQL_MAXIMUM_COLUMNS_IN_TABLE
+ 102 => 0, # SQL_MAXIMUM_INDEX_SIZE
+ 103 => 'N', # SQL_MAX_ROW_SIZE_INCLUDES_LONG
+ 104 => 0, # SQL_MAXIMUM_ROW_SIZE
+ 105 => 0, # SQL_MAXIMUM_STATEMENT_LENGTH
+ 106 => 0, # SQL_MAXIMUM_TABLES_IN_SELECT
+ 107 => 30, # SQL_MAXIMUM_USER_NAME_LENGTH
+ 108 => 0, # SQL_MAX_CHAR_LITERAL_LEN
+ 109 => 0, # SQL_TIMEDATE_ADD_INTERVALS
+ 110 => 0, # SQL_TIMEDATE_DIFF_INTERVALS
+ 111 => 'N', # SQL_NEED_LONG_DATA_LEN
+ 112 => 0, # SQL_MAX_BINARY_LITERAL_LEN
+ 113 => 'Y', # SQL_LIKE_ESCAPE_CLAUSE
+ 114 => 2, # SQL_QUALIFIER_LOCATION
+ 115 => 127, # SQL_OUTER_JOIN_CAPABILITIES
+ 116 => 0, # SQL_ACTIVE_ENVIRONMENTS
+ 117 => 0, # SQL_ALTER_DOMAIN
+ 118 => 1, # SQL_SQL_CONFORMANCE
+ 119 => 0, # SQL_DATETIME_LITERALS
+ 120 => 0, # SQL_BATCH_ROW_COUNT
+ 121 => 0, # SQL_BATCH_SUPPORT
122 => 15106047, # SQL_CONVERT_WCHAR
+ 123 => 0, # SQL_CONVERT_INTERVAL_DAY_TIME
+ 124 => 0, # SQL_CONVERT_INTERVAL_YEAR_MONTH
125 => 14680833, # SQL_CONVERT_WLONGVARCHAR
126 => 15106047, # SQL_CONVERT_WVARCHAR
- 74 => 2, # SQL_CORRELATION_NAME
127 => 0, # SQL_CREATE_ASSERTION
128 => 0, # SQL_CREATE_CHARACTER_SET
129 => 0, # SQL_CREATE_COLLATION
@@ -152,29 +231,7 @@
132 => 14305, # SQL_CREATE_TABLE
133 => 0, # SQL_CREATE_TRANSLATION
134 => 3, # SQL_CREATE_VIEW
- 23 => 2, # SQL_CURSOR_COMMIT_BEHAVIOR
- 24 => 2, # SQL_CURSOR_ROLLBACK_BEHAVIOR
- 10001 => 1, # SQL_CURSOR_SENSITIVITY
- 16 => 'DEVEL', # SQL_DATABASE_NAME
- 2 => \&sql_data_source_name, # SQL_DATA_SOURCE_NAME
- 25 => 'N', # SQL_DATA_SOURCE_READ_ONLY
- 119 => 0, # SQL_DATETIME_LITERALS
- 17 => 'Oracle', # SQL_DBMS_NAME
- 18 => \&sql_dbms_version, # SQL_DBMS_VER
- 18 => \&sql_dbms_version, # SQL_DBMS_VERSION
- 170 => 3, # SQL_DDL_INDEX
- 26 => 8, # SQL_DEFAULT_TRANSACTION_ISOLATION
- 26 => 8, # SQL_DEFAULT_TXN_ISOLATION
- 10002 => 'Y', # SQL_DESCRIBE_PARAMETER
- 171 => '03.52.0002.0002', # SQL_DM_VER
- 3 => 147209344, # SQL_DRIVER_HDBC
# 135 => undef, # SQL_DRIVER_HDESC
- 4 => 147212776, # SQL_DRIVER_HENV
-# 76 => undef, # SQL_DRIVER_HLIB
-# 5 => undef, # SQL_DRIVER_HSTMT
- 6 => $INC{'DBD/Oracle.pm'}, # SQL_DRIVER_NAME
- 77 => '03.52', # SQL_DRIVER_ODBC_VER
- 7 => $sql_driver_ver, # SQL_DRIVER_VER
136 => 0, # SQL_DROP_ASSERTION
137 => 0, # SQL_DROP_CHARACTER_SET
138 => 0, # SQL_DROP_COLLATION
@@ -185,107 +242,15 @@
143 => 1, # SQL_DROP_VIEW
144 => 0, # SQL_DYNAMIC_CURSOR_ATTRIBUTES1
145 => 0, # SQL_DYNAMIC_CURSOR_ATTRIBUTES2
- 27 => 'Y', # SQL_EXPRESSIONS_IN_ORDERBY
- 8 => 191, # SQL_FETCH_DIRECTION
- 84 => 0, # SQL_FILE_USAGE
146 => 57345, # SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1
147 => 2183, # SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2
- 81 => 15, # SQL_GETDATA_EXTENSIONS
- 88 => 2, # SQL_GROUP_BY
- 28 => 1, # SQL_IDENTIFIER_CASE
- 29 => '"', # SQL_IDENTIFIER_QUOTE_CHAR
148 => 3, # SQL_INDEX_KEYWORDS
149 => 65568, # SQL_INFO_SCHEMA_VIEWS
- 172 => 7, # SQL_INSERT_STATEMENT
- 73 => 'N', # SQL_INTEGRITY
150 => 0, # SQL_KEYSET_CURSOR_ATTRIBUTES1
151 => 0, # SQL_KEYSET_CURSOR_ATTRIBUTES2
- 89 => \&sql_keywords, # SQL_KEYWORDS
- 113 => 'Y', # SQL_LIKE_ESCAPE_CLAUSE
- 78 => 1, # SQL_LOCK_TYPES
- 34 => 0, # SQL_MAXIMUM_CATALOG_NAME_LENGTH
- 97 => 0, # SQL_MAXIMUM_COLUMNS_IN_GROUP_BY
- 98 => 0, # SQL_MAXIMUM_COLUMNS_IN_INDEX
- 99 => 0, # SQL_MAXIMUM_COLUMNS_IN_ORDER_BY
- 100 => 1000, # SQL_MAXIMUM_COLUMNS_IN_SELECT
- 101 => 1000, # SQL_MAXIMUM_COLUMNS_IN_TABLE
- 30 => 30, # SQL_MAXIMUM_COLUMN_NAME_LENGTH
- 1 => 0, # SQL_MAXIMUM_CONCURRENT_ACTIVITIES
- 31 => 30, # SQL_MAXIMUM_CURSOR_NAME_LENGTH
- 0 => 0, # SQL_MAXIMUM_DRIVER_CONNECTIONS
- 10005 => 30, # SQL_MAXIMUM_IDENTIFIER_LENGTH
- 102 => 0, # SQL_MAXIMUM_INDEX_SIZE
- 104 => 0, # SQL_MAXIMUM_ROW_SIZE
- 32 => 30, # SQL_MAXIMUM_SCHEMA_NAME_LENGTH
- 105 => 0, # SQL_MAXIMUM_STATEMENT_LENGTH
-# 20000 => undef, # SQL_MAXIMUM_STMT_OCTETS
-# 20001 => undef, # SQL_MAXIMUM_STMT_OCTETS_DATA
-# 20002 => undef, # SQL_MAXIMUM_STMT_OCTETS_SCHEMA
- 106 => 0, # SQL_MAXIMUM_TABLES_IN_SELECT
- 35 => 30, # SQL_MAXIMUM_TABLE_NAME_LENGTH
- 107 => 30, # SQL_MAXIMUM_USER_NAME_LENGTH
- 10022 => 0, # SQL_MAX_ASYNC_CONCURRENT_STATEMENTS
- 112 => 0, # SQL_MAX_BINARY_LITERAL_LEN
- 34 => 0, # SQL_MAX_CATALOG_NAME_LEN
- 108 => 0, # SQL_MAX_CHAR_LITERAL_LEN
- 97 => 0, # SQL_MAX_COLUMNS_IN_GROUP_BY
- 98 => 0, # SQL_MAX_COLUMNS_IN_INDEX
- 99 => 0, # SQL_MAX_COLUMNS_IN_ORDER_BY
- 100 => 1000, # SQL_MAX_COLUMNS_IN_SELECT
- 101 => 1000, # SQL_MAX_COLUMNS_IN_TABLE
- 30 => 30, # SQL_MAX_COLUMN_NAME_LEN
- 1 => 0, # SQL_MAX_CONCURRENT_ACTIVITIES
- 31 => 30, # SQL_MAX_CURSOR_NAME_LEN
- 0 => 0, # SQL_MAX_DRIVER_CONNECTIONS
- 10005 => 30, # SQL_MAX_IDENTIFIER_LEN
- 102 => 0, # SQL_MAX_INDEX_SIZE
- 32 => 30, # SQL_MAX_OWNER_NAME_LEN
- 33 => 92, # SQL_MAX_PROCEDURE_NAME_LEN
- 34 => 0, # SQL_MAX_QUALIFIER_NAME_LEN
- 104 => 0, # SQL_MAX_ROW_SIZE
- 103 => 'N', # SQL_MAX_ROW_SIZE_INCLUDES_LONG
- 32 => 30, # SQL_MAX_SCHEMA_NAME_LEN
- 105 => 0, # SQL_MAX_STATEMENT_LEN
- 106 => 0, # SQL_MAX_TABLES_IN_SELECT
- 35 => 30, # SQL_MAX_TABLE_NAME_LEN
- 107 => 30, # SQL_MAX_USER_NAME_LEN
- 37 => 'Y', # SQL_MULTIPLE_ACTIVE_TXN
- 36 => 'Y', # SQL_MULT_RESULT_SETS
- 111 => 'N', # SQL_NEED_LONG_DATA_LEN
- 75 => 1, # SQL_NON_NULLABLE_COLUMNS
- 85 => 1, # SQL_NULL_COLLATION
- 49 => 16646015, # SQL_NUMERIC_FUNCTIONS
- 9 => 1, # SQL_ODBC_API_CONFORMANCE
152 => 3, # SQL_ODBC_INTERFACE_CONFORMANCE
- 12 => 0, # SQL_ODBC_SAG_CLI_CONFORMANCE
- 15 => 1, # SQL_ODBC_SQL_CONFORMANCE
- 73 => 'N', # SQL_ODBC_SQL_OPT_IEF
- 10 => '03.52', # SQL_ODBC_VER
- 115 => 127, # SQL_OJ_CAPABILITIES
- 90 => 'N', # SQL_ORDER_BY_COLUMNS_IN_SELECT
- 38 => 'Y', # SQL_OUTER_JOINS
- 115 => 127, # SQL_OUTER_JOIN_CAPABILITIES
- 39 => 'Owner', # SQL_OWNER_TERM
- 91 => 31, # SQL_OWNER_USAGE
153 => 2, # SQL_PARAM_ARRAY_ROW_COUNTS
154 => 3, # SQL_PARAM_ARRAY_SELECTS
- 80 => 7, # SQL_POSITIONED_STATEMENTS
- 79 => 1, # SQL_POS_OPERATIONS
- 21 => 'Y', # SQL_PROCEDURES
- 40 => 'Procedure', # SQL_PROCEDURE_TERM
- 114 => 2, # SQL_QUALIFIER_LOCATION
- 41 => '@', # SQL_QUALIFIER_NAME_SEPARATOR
- 42 => 'Database Link', # SQL_QUALIFIER_TERM
- 92 => 3, # SQL_QUALIFIER_USAGE
- 93 => 3, # SQL_QUOTED_IDENTIFIER_CASE
- 11 => 'Y', # SQL_ROW_UPDATES
- 39 => 'Owner', # SQL_SCHEMA_TERM
- 91 => 31, # SQL_SCHEMA_USAGE
- 43 => 7, # SQL_SCROLL_CONCURRENCY
- 44 => 19, # SQL_SCROLL_OPTIONS
- 14 => '\\', # SQL_SEARCH_PATTERN_ESCAPE
- 13 => sub {"$_[0]->{Name}"}, # SQL_SERVER_NAME
- 94 => '$#', # SQL_SPECIAL_CHARACTERS
155 => 0, # SQL_SQL92_DATETIME_FUNCTIONS
156 => 0, # SQL_SQL92_FOREIGN_KEY_DELETE_RULE
157 => 0, # SQL_SQL92_FOREIGN_KEY_UPDATE_RULE
@@ -297,26 +262,25 @@
163 => 0, # SQL_SQL92_ROW_VALUE_CONSTRUCTOR
164 => 0, # SQL_SQL92_STRING_FUNCTIONS
165 => 1, # SQL_SQL92_VALUE_EXPRESSIONS
- 118 => 1, # SQL_SQL_CONFORMANCE
166 => 3, # SQL_STANDARD_CLI_CONFORMANCE
167 => 57935, # SQL_STATIC_CURSOR_ATTRIBUTES1
168 => 4231, # SQL_STATIC_CURSOR_ATTRIBUTES2
- 83 => 0, # SQL_STATIC_SENSITIVITY
- 50 => 8355839, # SQL_STRING_FUNCTIONS
- 95 => 31, # SQL_SUBQUERIES
- 51 => 7, # SQL_SYSTEM_FUNCTIONS
- 45 => 'Table', # SQL_TABLE_TERM
- 109 => 0, # SQL_TIMEDATE_ADD_INTERVALS
- 110 => 0, # SQL_TIMEDATE_DIFF_INTERVALS
- 52 => 1023999, # SQL_TIMEDATE_FUNCTIONS
- 46 => 3, # SQL_TRANSACTION_CAPABLE
- 72 => 10, # SQL_TRANSACTION_ISOLATION_OPTION
- 46 => 3, # SQL_TXN_CAPABLE
- 72 => 10, # SQL_TXN_ISOLATION_OPTION
- 96 => 3, # SQL_UNION
- 96 => 3, # SQL_UNION_STATEMENT
- 47 => \&sql_user_name, # SQL_USER_NAME
+ 169 => 64, # SQL_AGGREGATE_FUNCTIONS
+ 170 => 3, # SQL_DDL_INDEX
+ 171 => '03.52.0002.0002', # SQL_DM_VER
+ 172 => 7, # SQL_INSERT_STATEMENT
+ 173 => 0, # SQL_CONVERT_GUID
10000 => 1995, # SQL_XOPEN_CLI_YEAR
+ 10001 => 1, # SQL_CURSOR_SENSITIVITY
+ 10002 => 'Y', # SQL_DESCRIBE_PARAMETER
+ 10003 => 'N', # SQL_CATALOG_NAME
+ 10004 => '', # SQL_COLLATING_SEQUENCE
+ 10005 => 30, # SQL_MAXIMUM_IDENTIFIER_LENGTH
+ 10021 => 2, # SQL_ASYNC_MODE
+ 10022 => 0, # SQL_MAX_ASYNC_CONCURRENT_STATEMENTS
+# 20000 => undef, # SQL_MAXIMUM_STMT_OCTETS
+# 20001 => undef, # SQL_MAXIMUM_STMT_OCTETS_DATA
+# 20002 => undef, # SQL_MAXIMUM_STMT_OCTETS_SCHEMA
);

1;

Modified: dbd-oracle/trunk/t/rt74753-utf8-encoded.t
==============================================================================
--- dbd-oracle/trunk/t/rt74753-utf8-encoded.t (original)
+++ dbd-oracle/trunk/t/rt74753-utf8-encoded.t Fri Feb 10 11:17:15 2012
@@ -3,7 +3,7 @@
use strict;
use warnings;

-use Test::More tests => 2;
+use Test::More tests => 3;

use DBI;
use Encode;
@@ -57,18 +57,13 @@

is Encode::is_utf8($val) => 1, "utf8 encoded";

-$dbh->disconnect;
-
-
-__END__
-
-undef $val;
-
$sth = $dbh->prepare(<<'END_SQL');
declare
l_ret varchar2(10);
begin
- select ltrim(rtrim(to_char(0, 'L')))
+ select ltrim(rtrim(to_char(0, 'L')))
+ || ltrim(rtrim(to_char(0, 'L')))
+ || ltrim(rtrim(to_char(0, 'L')))
into l_ret
from dual;
--
@@ -76,11 +71,13 @@
end;
END_SQL

-$sth->bind_param_inout( ':ret', \$val, 100 );
-$sth->execute;
+$val = undef;

-diag "val=[$val] len=@{[ length($val) ]}" while $sth->fetch;
+# WARNING: does *not* truncate. DBD::Oracle doesn't heed the 3rd parameter
+$sth->bind_param_inout(':ret', \$val, 1);
+$sth->execute;

-diag "utf8 is ", Encode::is_utf8($val) ? 'on' : 'off';
+is Encode::is_utf8($val) => 1, "truncated, yet utf8 encoded";

$dbh->disconnect;
+
Navigate in group perl.dbd.oracle.changes at sever nntp.perl.org
Previous Next





  
© No Copyright
You are free to use Anything, but please consult your advocate before doing so as this website
also list content from other sources which may be copyrighted.
Site Maintained by Zareef Ahmed
Powered By PHP Consultants