package SQL::Statement::GetInfo; ###################################################################### # # This module is copyright (c), 2001,2005 by Jeff Zucker. # This module is copyright (c), 2007-2017 by Jens Rehsack. # All rights reserved. # # It may be freely distributed under the same terms as Perl itself. # See below for help and copyright information (search for SYNOPSIS). # ###################################################################### use strict; use warnings FATAL => "all"; use vars qw($VERSION %info); $VERSION = '1.412'; use SQL::Statement(); my @Keywords = qw( INTEGERVAL STRING REALVAL IDENT NULLVAL PARAM OPERATOR IS AND OR ERROR INSERT UPDATE SELECT DELETE DROP CREATE ALL DISTINCT WHERE ORDER ASC DESC FROM INTO BY VALUES SET NOT TABLE CHAR VARCHAR REAL INTEGER PRIMARY KEY BLOB TEXT ); # FIXME: This should really use the SQL::Dialect keywords, a la: # return join(',', keys %{ SQL::Dialects::Foobar::get_config_as_hash()->{reserved_words} }); sub sql_keywords { return join ',', @Keywords; } %info = ( 20 => "N" # SQL_ACCESSIBLE_PROCEDURES , 19 => "Y" # SQL_ACCESSIBLE_TABLES # 0 => undef # SQL_ACTIVE_CONNECTIONS # 116 => undef # SQL_ACTIVE_ENVIRONMENTS # 1 => undef # SQL_ACTIVE_STATEMENTS , 169 => 0x0000007F # SQL_AGGREGATE_FUNCTIONS # SQL_AF_AVG + 1 # SQL_AF_COUNT + 2 # SQL_AF_MAX + 4 # SQL_AF_MIN + 8 # SQL_AF_SUM + 10 # SQL_AF_DISTINCT + 20 # SQL_AF_ALL + 40 , 117 => 0 # SQL_ALTER_DOMAIN - , 86 => 0 # SQL_ALTER_TABLE - # 10021 => undef # SQL_ASYNC_MODE # 120 => undef # SQL_BATCH_ROW_COUNT # 121 => undef # SQL_BATCH_SUPPORT # 82 => undef # SQL_BOOKMARK_PERSISTENCE , 114 => 1 # SQL_CATALOG_LOCATION , 10003 => "N" # SQL_CATALOG_NAME , 41 => '.' # SQL_CATALOG_NAME_SEPARATOR , 42 => "" # SQL_CATALOG_TERM , 92 => 0 # SQL_CATALOG_USAGE # # 10004 => undef # SQL_COLLATING_SEQUENCE , 10004 => "ISO-8859-1" # SQL_COLLATION_SEQ , 87 => "Y" # SQL_COLUMN_ALIAS , 22 => 0 # SQL_CONCAT_NULL_BEHAVIOR # # CONVERT FUNCTION NOT CURRENTLY SUPPORTED # , 53 => 0 # SQL_CONVERT_BIGINT , 54 => 0 # SQL_CONVERT_BINARY , 55 => 0 # SQL_CONVERT_BIT , 56 => 0 # SQL_CONVERT_CHAR , 57 => 0 # SQL_CONVERT_DATE , 58 => 0 # SQL_CONVERT_DECIMAL , 59 => 0 # SQL_CONVERT_DOUBLE , 60 => 0 # SQL_CONVERT_FLOAT , 48 => 0 # SQL_CONVERT_FUNCTIONS , 173 => 0 # SQL_CONVERT_GUID , 61 => 0 # SQL_CONVERT_INTEGER , 123 => 0 # SQL_CONVERT_INTERVAL_DAY_TIME , 124 => 0 # SQL_CONVERT_INTERVAL_YEAR_MONTH , 71 => 0 # SQL_CONVERT_LONGVARBINARY , 62 => 0 # SQL_CONVERT_LONGVARCHAR , 63 => 0 # SQL_CONVERT_NUMERIC , 64 => 0 # SQL_CONVERT_REAL , 65 => 0 # SQL_CONVERT_SMALLINT , 66 => 0 # SQL_CONVERT_TIME , 67 => 0 # SQL_CONVERT_TIMESTAMP , 68 => 0 # SQL_CONVERT_TINYINT , 69 => 0 # SQL_CONVERT_VARBINARY , 70 => 0 # SQL_CONVERT_VARCHAR , 122 => 0 # SQL_CONVERT_WCHAR , 125 => 0 # SQL_CONVERT_WLONGVARCHAR , 126 => 0 # SQL_CONVERT_WVARCHAR , 74 => 2 # SQL_CORRELATION_NAME , 127 => 0 # SQL_CREATE_ASSERTION , 128 => 0 # SQL_CREATE_CHARACTER_SET , 129 => 0 # SQL_CREATE_COLLATION , 130 => 0 # SQL_CREATE_DOMAIN , 131 => 0 # SQL_CREATE_SCHEMA , 132 => 0x00000015 # SQL_CREATE_TABLE # SQL_CT_CREATE_TABLE => 0x00000001 + # SQL_CT_COMMIT_PRESERVE => 0x00000002 # SQL_CT_COMMIT_DELETE => 0x00000004 + # SQL_CT_GLOBAL_TEMPORARY => 0x00000008 # SQL_CT_LOCAL_TEMPORARY => 0x00000010 + # SQL_CT_CONSTRAINT_INITIALLY_DEFERRED => 0x00000020 # SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE => 0x00000040 # SQL_CT_CONSTRAINT_DEFERRABLE => 0x00000080 # SQL_CT_CONSTRAINT_NON_DEFERRABLE => 0x00000100 # SQL_CT_COLUMN_CONSTRAINT => 0x00000200 # SQL_CT_COLUMN_DEFAULT => 0x00000400 # SQL_CT_COLUMN_COLLATION => 0x00000800 # SQL_CT_TABLE_CONSTRAINT => 0x00001000 # SQL_CT_CONSTRAINT_NAME_DEFINITION => 0x00002000 , 133 => 0 # SQL_CREATE_TRANSLATION , 134 => 0 # SQL_CREATE_VIEW # # CURSORS NOT CURRENTLY SUPPORTED # # 23 => undef, # SQL_CURSOR_COMMIT_BEHAVIOR # 24 => undef, # SQL_CURSOR_ROLLBACK_BEHAVIOR # 10001 => undef, # SQL_CURSOR_SENSITIVITY # #, 2 => \&sql_data_source_name # SQL_DATA_SOURCE_NAME , 25 => "N" # SQL_DATA_SOURCE_READ_ONLY , 119 => 0 # SQL_DATETIME_LITERALS #, 17 => \&sql_driver_name # SQL_DBMS_NAME #, 18 => \&sql_driver_ver # SQL_DBMS_VER # 18 => undef # SQL_DBMS_VERSION # 170 => undef, # SQL_DDL_INDEX # 26 => undef, # SQL_DEFAULT_TRANSACTION_ISOLATION # 26 => undef # SQL_DEFAULT_TXN_ISOLATION , 10002 => "N" # SQL_DESCRIBE_PARAMETER # 171 => undef # SQL_DM_VER # 3 => undef # SQL_DRIVER_HDBC # 135 => undef # SQL_DRIVER_HDESC # 4 => undef # SQL_DRIVER_HENV # 76 => undef # SQL_DRIVER_HLIB # 5 => undef # SQL_DRIVER_HSTMT #, 6 => \&sql_driver_name # SQL_DRIVER_NAME # 77 => undef # 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 , 139 => 0 # SQL_DROP_DOMAIN , 140 => 0 # SQL_DROP_SCHEMA , 141 => 1 # SQL_DROP_TABLE , 142 => 0 # SQL_DROP_TRANSLATION , 143 => 0 # SQL_DROP_VIEW # 144 => undef # SQL_DYNAMIC_CURSOR_ATTRIBUTES1 # 145 => undef # SQL_DYNAMIC_CURSOR_ATTRIBUTES2 # 27 => undef # SQL_EXPRESSIONS_IN_ORDERBY # 8 => undef # SQL_FETCH_DIRECTION , 84 => 1 # SQL_FILE_USAGE # 146 => undef # SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 # 147 => undef # SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 # 81 => undef # SQL_GETDATA_EXTENSIONS # 88 => undef # SQL_GROUP_BY , 28 => 4 # SQL_IDENTIFIER_CASE , 29 => q(") # SQL_IDENTIFIER_QUOTE_CHAR # 148 => undef # SQL_INDEX_KEYWORDS # 149 => undef # SQL_INFO_SCHEMA_VIEWS , 172 => 1 # SQL_INSERT_STATEMENT # 73 => undef # SQL_INTEGRITY # 150 => undef # SQL_KEYSET_CURSOR_ATTRIBUTES1 # 151 => undef # SQL_KEYSET_CURSOR_ATTRIBUTES2 , 89 => \&sql_keywords # SQL_KEYWORDS , 113 => "N" # SQL_LIKE_ESCAPE_CLAUSE # 78 => undef # SQL_LOCK_TYPES # 34 => undef # SQL_MAXIMUM_CATALOG_NAME_LENGTH # 97 => undef # SQL_MAXIMUM_COLUMNS_IN_GROUP_BY # 98 => undef # SQL_MAXIMUM_COLUMNS_IN_INDEX # 99 => undef # SQL_MAXIMUM_COLUMNS_IN_ORDER_BY # 100 => undef # SQL_MAXIMUM_COLUMNS_IN_SELECT # 101 => undef # SQL_MAXIMUM_COLUMNS_IN_TABLE # 30 => undef # SQL_MAXIMUM_COLUMN_NAME_LENGTH # 1 => undef # SQL_MAXIMUM_CONCURRENT_ACTIVITIES # 31 => undef # SQL_MAXIMUM_CURSOR_NAME_LENGTH # 0 => undef # SQL_MAXIMUM_DRIVER_CONNECTIONS # 10005 => undef # SQL_MAXIMUM_IDENTIFIER_LENGTH # 102 => undef # SQL_MAXIMUM_INDEX_SIZE # 104 => undef # SQL_MAXIMUM_ROW_SIZE # 32 => undef # SQL_MAXIMUM_SCHEMA_NAME_LENGTH # 105 => undef # 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 => undef # SQL_MAXIMUM_TABLES_IN_SELECT # 35 => undef # SQL_MAXIMUM_TABLE_NAME_LENGTH # 107 => undef # SQL_MAXIMUM_USER_NAME_LENGTH # 10022 => undef # SQL_MAX_ASYNC_CONCURRENT_STATEMENTS # 112 => undef # SQL_MAX_BINARY_LITERAL_LEN # 34 => undef # SQL_MAX_CATALOG_NAME_LEN # 108 => undef # SQL_MAX_CHAR_LITERAL_LEN # 97 => undef # SQL_MAX_COLUMNS_IN_GROUP_BY # 98 => undef # SQL_MAX_COLUMNS_IN_INDEX # 99 => undef # SQL_MAX_COLUMNS_IN_ORDER_BY # 100 => undef # SQL_MAX_COLUMNS_IN_SELECT # 101 => undef # SQL_MAX_COLUMNS_IN_TABLE # 30 => undef # SQL_MAX_COLUMN_NAME_LEN # 1 => undef # SQL_MAX_CONCURRENT_ACTIVITIES # 31 => undef # SQL_MAX_CURSOR_NAME_LEN # 0 => undef # SQL_MAX_DRIVER_CONNECTIONS # 10005 => undef # SQL_MAX_IDENTIFIER_LEN # 102 => undef # SQL_MAX_INDEX_SIZE # 32 => undef # SQL_MAX_OWNER_NAME_LEN # 33 => undef # SQL_MAX_PROCEDURE_NAME_LEN # 34 => undef # SQL_MAX_QUALIFIER_NAME_LEN # 104 => undef # SQL_MAX_ROW_SIZE # 103 => undef # SQL_MAX_ROW_SIZE_INCLUDES_LONG # 32 => undef # SQL_MAX_SCHEMA_NAME_LEN # 105 => undef # SQL_MAX_STATEMENT_LEN # 106 => undef # SQL_MAX_TABLES_IN_SELECT # 35 => undef # SQL_MAX_TABLE_NAME_LEN # 107 => undef # SQL_MAX_USER_NAME_LEN # 37 => undef # SQL_MULTIPLE_ACTIVE_TXN # 36 => undef # SQL_MULT_RESULT_SETS , 111 => "N" # SQL_NEED_LONG_DATA_LEN , 75 => 1 # SQL_NON_NULLABLE_COLUMNS , 85 => 1 # SQL_NULL_COLLATION , 49 => 0 # SQL_NUMERIC_FUNCTIONS # 9 => undef # SQL_ODBC_API_CONFORMANCE # 152 => undef # SQL_ODBC_INTERFACE_CONFORMANCE # 12 => undef # SQL_ODBC_SAG_CLI_CONFORMANCE # 15 => undef # SQL_ODBC_SQL_CONFORMANCE # 73 => undef # SQL_ODBC_SQL_OPT_IEF # 10 => undef # SQL_ODBC_VER , 115 => 0x00000037 # SQL_OJ_CAPABILITIES # 1 SQL_OJ_LEFT + left joins SUPPORTED # 2 SQL_OJ_RIGHT + right joins SUPPORTED # 4 SQL_OJ_FULL + full joins SUPPORTED # SQL_OJ_NESTED - nested joins not supported # 10 SQL_OJ_NOT_ORDERED + on clause col order not required # 20 SQL_OJ_INNER + inner joins SUPPORTED # SQL_OJ_ALL_COMPARISON_OPS - on clause comp op must be = , 90 => "N" # SQL_ORDER_BY_COLUMNS_IN_SELECT # 38 => undef # SQL_OUTER_JOINS # 115 => undef # SQL_OUTER_JOIN_CAPABILITIES # 39 => undef # SQL_OWNER_TERM # 91 => undef # SQL_OWNER_USAGE # 153 => undef # SQL_PARAM_ARRAY_ROW_COUNTS # 154 => undef # SQL_PARAM_ARRAY_SELECTS # 80 => undef # SQL_POSITIONED_STATEMENTS # 79 => undef # SQL_POS_OPERATIONS , 21 => "N" # SQL_PROCEDURES # 40 => undef # SQL_PROCEDURE_TERM # 114 => undef # SQL_QUALIFIER_LOCATION # 41 => undef # SQL_QUALIFIER_NAME_SEPARATOR # 42 => undef # SQL_QUALIFIER_TERM # 92 => undef # SQL_QUALIFIER_USAGE , 93 => 3 # SQL_QUOTED_IDENTIFIER_CASE , 11 => "N" # SQL_ROW_UPDATES , 39 => "schema" # SQL_SCHEMA_TERM # 91 => undef # SQL_SCHEMA_USAGE # 43 => undef # SQL_SCROLL_CONCURRENCY # 44 => undef # SQL_SCROLL_OPTIONS # 14 => undef # SQL_SEARCH_PATTERN_ESCAPE # 13 => undef # SQL_SERVER_NAME # 94 => undef # SQL_SPECIAL_CHARACTERS , 155 => 8 # SQL_SQL92_DATETIME_FUNCTIONS # SQL_SDF_CURRENT_DATE => 0x00000001 + # SQL_SDF_CURRENT_TIME => 0x00000002 + # SQL_SDF_CURRENT_TIMESTAMP => 0x00000004 + # 156 => undef # SQL_SQL92_FOREIGN_KEY_DELETE_RULE # 157 => undef # SQL_SQL92_FOREIGN_KEY_UPDATE_RULE # 158 => undef # SQL_SQL92_GRANT , 159 => 0x00FFFFFF # SQL_SQL92_NUMERIC_VALUE_FUNCTIONS # All of them! # SQL_FN_NUM_ABS => 0x00000001 + # SQL_FN_NUM_ACOS => 0x00000002 + # SQL_FN_NUM_ASIN => 0x00000004 + # SQL_FN_NUM_ATAN => 0x00000008 + # SQL_FN_NUM_ATAN2 => 0x00000010 + # SQL_FN_NUM_CEILING => 0x00000020 + # SQL_FN_NUM_COS => 0x00000040 + # SQL_FN_NUM_COT => 0x00000080 + # SQL_FN_NUM_EXP => 0x00000100 + # SQL_FN_NUM_FLOOR => 0x00000200 + # SQL_FN_NUM_LOG => 0x00000400 + # SQL_FN_NUM_MOD => 0x00000800 + # SQL_FN_NUM_SIGN => 0x00001000 + # SQL_FN_NUM_SIN => 0x00002000 + # SQL_FN_NUM_SQRT => 0x00004000 + # SQL_FN_NUM_TAN => 0x00008000 + # SQL_FN_NUM_PI => 0x00010000 + # SQL_FN_NUM_RAND => 0x00020000 + # SQL_FN_NUM_DEGREES => 0x00040000 + # SQL_FN_NUM_LOG10 => 0x00080000 + # SQL_FN_NUM_POWER => 0x00100000 + # SQL_FN_NUM_RADIANS => 0x00200000 + # SQL_FN_NUM_ROUND => 0x00400000 + # SQL_FN_NUM_TRUNCATE => 0x00800000 + , 160 => 0x00003E06 # SQL_SQL92_PREDICATES # SQL_SP_EXISTS - - # SQL_SP_ISNOTNULL + + 2 # SQL_SP_ISNULL + + 4 # SQL_SP_MATCH_FULL - - # SQL_SP_MATCH_PARTIAL - - # SQL_SP_MATCH_UNIQUE_FULL - - # SQL_SP_MATCH_UNIQUE_PARTIAL - - # SQL_SP_OVERLAPS - - # SQL_SP_UNIQUE - - # SQL_SP_LIKE + + 200 # SQL_SP_IN - + 400 # SQL_SP_BETWEEN - + 800 # SQL_SP_COMPARISON + + 1000 # SQL_SP_QUANTIFIED_COMPARISON + + 2000 , 161 => 0x000001D8 # SQL_SQL92_RELATIONAL_JOIN_OPERATORS # SQL_SRJO_CORRESPONDING_CLAUSE - corresponding clause not supported # SQL_SRJO_CROSS_JOIN - cross join not supported # SQL_SRJO_EXCEPT_JOIN - except join not supported # 8 SQL_SRJO_FULL_OUTER_JOIN + full join SUPPORTED # 10 SQL_SRJO_INNER_JOIN + inner join SUPPORTED # SQL_SRJO_INTERSECT_JOIN - intersect join not supported # 40 SQL_SRJO_LEFT_OUTER_JOIN + left join SUPPORTED # 80 SQL_SRJO_NATURAL_JOIN + natural join SUPPORTED # 100 SQL_SRJO_RIGHT_OUTER_JOIN + right join SUPPORTED # SQL_SRJO_UNION_JOIN - union join not supported # 162 => undef # SQL_SQL92_REVOKE , 163 => 3 # SQL_SQL92_ROW_VALUE_CONSTRUCTOR # SQL_SRVC_VALUE_EXPRESSION # SQL_SRVC_NULL # SQL_SRVC_DEFAULT # SQL_SRVC_ROW_SUBQUERY , 164 => 0x000000FE # SQL_SQL92_STRING_FUNCTIONS # SQL_SSF_CONVERT => 0x00000001 # SQL_SSF_LOWER => 0x00000002 + # SQL_SSF_UPPER => 0x00000004 + # SQL_SSF_SUBSTRING => 0x00000008 + # SQL_SSF_TRANSLATE => 0x00000010 + # SQL_SSF_TRIM_BOTH => 0x00000020 + # SQL_SSF_TRIM_LEADING => 0x00000040 + # SQL_SSF_TRIM_TRAILING => 0x00000080 + # 165 => undef # SQL_SQL92_VALUE_EXPRESSIONS # 118 => undef # SQL_SQL_CONFORMANCE # 166 => undef # SQL_STANDARD_CLI_CONFORMANCE # 167 => undef # SQL_STATIC_CURSOR_ATTRIBUTES1 # 168 => undef # SQL_STATIC_CURSOR_ATTRIBUTES2 # 83 => undef # SQL_STATIC_SENSITIVITY , 50 => 0x00FF7FFF # SQL_STRING_FUNCTIONS # SQL_FN_STR_CONCAT => 0x00000001 + # SQL_FN_STR_INSERT => 0x00000002 + # SQL_FN_STR_LEFT => 0x00000004 + # SQL_FN_STR_LTRIM => 0x00000008 + # SQL_FN_STR_LENGTH => 0x00000010 + # SQL_FN_STR_LOCATE => 0x00000020 + # SQL_FN_STR_LCASE => 0x00000040 + # SQL_FN_STR_REPEAT => 0x00000080 + # SQL_FN_STR_REPLACE => 0x00000100 + # SQL_FN_STR_RIGHT => 0x00000200 + # SQL_FN_STR_RTRIM => 0x00000400 + # SQL_FN_STR_SUBSTRING => 0x00000800 + # SQL_FN_STR_UCASE => 0x00001000 + # SQL_FN_STR_ASCII => 0x00002000 + # SQL_FN_STR_CHAR => 0x00004000 + # SQL_FN_STR_DIFFERENCE => 0x00008000 # SQL_FN_STR_LOCATE_2 => 0x00010000 + # SQL_FN_STR_SOUNDEX => 0x00020000 + # SQL_FN_STR_SPACE => 0x00040000 + # SQL_FN_STR_BIT_LENGTH => 0x00080000 + # SQL_FN_STR_CHAR_LENGTH => 0x00100000 + # SQL_FN_STR_CHARACTER_LENGTH => 0x00200000 + # SQL_FN_STR_OCTET_LENGTH => 0x00400000 + # SQL_FN_STR_POSITION => 0x00800000 + # 95 => undef # SQL_SUBQUERIES , 51 => 8 # SQL_SYSTEM_FUNCTIONS # SQL_FN_SYS_USERNAME => 0x00000001 + # SQL_FN_SYS_DBNAME => 0x00000002 + # SQL_FN_SYS_IFNULL => 0x00000004 + , 45 => "table" # SQL_TABLE_TERM # 109 => undef # SQL_TIMEDATE_ADD_INTERVALS # 110 => undef # SQL_TIMEDATE_DIFF_INTERVALS , 52 => 0x000E0203 # SQL_TIMEDATE_FUNCTIONS # SQL_FN_TD_NOW => 0x00000001 + # SQL_FN_TD_CURDATE => 0x00000002 + # SQL_FN_TD_DAYOFMONTH => 0x00000004 # SQL_FN_TD_DAYOFWEEK => 0x00000008 # SQL_FN_TD_DAYOFYEAR => 0x00000010 # SQL_FN_TD_MONTH => 0x00000020 # SQL_FN_TD_QUARTER => 0x00000040 # SQL_FN_TD_WEEK => 0x00000080 # SQL_FN_TD_YEAR => 0x00000100 # SQL_FN_TD_CURTIME => 0x00000200 + # SQL_FN_TD_HOUR => 0x00000400 # SQL_FN_TD_MINUTE => 0x00000800 # SQL_FN_TD_SECOND => 0x00001000 # SQL_FN_TD_TIMESTAMPADD => 0x00002000 # SQL_FN_TD_TIMESTAMPDIFF => 0x00004000 # SQL_FN_TD_DAYNAME => 0x00008000 # SQL_FN_TD_MONTHNAME => 0x00010000 # SQL_FN_TD_CURRENT_DATE => 0x00020000 + # SQL_FN_TD_CURRENT_TIME => 0x00040000 + # SQL_FN_TD_CURRENT_TIMESTAMP => 0x00080000 + # SQL_FN_TD_EXTRACT => 0x00100000 # 46 => undef # SQL_TRANSACTION_CAPABLE # 72 => undef # SQL_TRANSACTION_ISOLATION_OPTION # 46 => undef # SQL_TXN_CAPABLE # 72 => undef # SQL_TXN_ISOLATION_OPTION # 96 => undef # SQL_UNION # 96 => undef # SQL_UNION_STATEMENT # 47 => \&sql_user_name # SQL_USER_NAME # 10000 => undef # SQL_XOPEN_CLI_YEAR ); 1; __END__ NO LONGER NEEDED sub sql_driver_name { shift->{"Driver"}->{"Name"}; } sub sql_driver_ver { my $dbh = shift; my $ver = shift; my $drv = 'DBD::'.$dbh->{"Driver"}->{"Name"}; # $ver = "$drv"."::VERSION"; # $ver = ${$ver}; my $fmt = '%02d.%02d.%1d%1d%1d%1d'; # ODBC version string: ##.##.##### $ver = sprintf $fmt, split (/\./, $ver); return $ver . '; ss-'. $SQL::Statement::VERSION; } sub sql_data_source_name { my $dbh = shift; return 'dbi:'.$dbh->{"Driver"}->{"Name"}.':'.$dbh->{"Name"}; } sub sql_user_name { my $dbh = shift; return $dbh->{"CURRENT_USER"}; } =pod =head1 NAME SQL::Statement::GetInfo =head1 SYNOPSIS # see L =head1 DESCRIPTION This package contains support for C<$dbh->get_info()>. =head1 INHERITANCE SQL::Statement::GetInfo =begin undocumented =head1 METHODS =head2 sql_keywords Returns the list of keywords =end undocumented =head1 AUTHOR & COPYRIGHT This module is copyright (c) 2001,2005 by Jeff Zucker and copyright (c) 2007-2017 by Jens Rehsack. All rights reserved. The module may be freely distributed under the same terms as Perl itself using either the "GPL License" or the "Artistic License" as specified in the Perl README file. Jeff can be reached at: jzuckerATcpan.org Jens can be reached at: rehsackATcpan.org or via dbi-devATperl.org =cut