@@ -577,97 +577,6 @@ SQLRETURN SQL_API SQLColumnsW(SQLHSTMT statement_handle, SQLWCHAR *catalog_name,
577
577
column_name_conv.utf8_len_smallint ());
578
578
}
579
579
580
- static SQLRETURN SpecialColumnsInternal (SQLHSTMT statement_handle, SQLUSMALLINT identifier_type, SQLCHAR *catalog_name,
581
- SQLSMALLINT name_length1, SQLCHAR *schema_name, SQLSMALLINT name_length2,
582
- SQLCHAR *table_name, SQLSMALLINT name_length3, SQLUSMALLINT scope,
583
- SQLUSMALLINT nullable) {
584
- std::string query = R"#(
585
- SELECT
586
- CAST(0 AS SMALLINT) AS "SCOPE",
587
- CAST('' AS VARCHAR ) AS "COLUMN_NAME",
588
- CAST(0 AS SMALLINT) AS "DATA_TYPE",
589
- CAST('' AS VARCHAR ) AS "TYPE_NAME",
590
- CAST(0 AS INT ) AS "COLUMN_SIZE",
591
- CAST(0 AS INT ) AS "BUFFER_LENGTH",
592
- CAST(0 AS SMALLINT) AS "DECIMAL_DIGITS",
593
- CAST(0 AS SMALLINT) AS "PSEUDO_COLUMN"
594
- WHERE 1 < 0
595
- )#" ;
596
- SQLRETURN ret =
597
- duckdb::ExecDirectStmt (statement_handle, (SQLCHAR *)query.c_str (), static_cast <SQLINTEGER>(query.size ()));
598
- if (!SQL_SUCCEEDED (ret)) {
599
- return ret;
600
- }
601
- return SQL_SUCCESS;
602
- }
603
-
604
- SQLRETURN SQL_API SQLSpecialColumns (SQLHSTMT statement_handle, SQLUSMALLINT identifier_type, SQLCHAR *catalog_name,
605
- SQLSMALLINT name_length1, SQLCHAR *schema_name, SQLSMALLINT name_length2,
606
- SQLCHAR *table_name, SQLSMALLINT name_length3, SQLUSMALLINT scope,
607
- SQLUSMALLINT nullable) {
608
- return SpecialColumnsInternal (statement_handle, identifier_type, catalog_name, name_length1, schema_name,
609
- name_length2, table_name, name_length3, scope, nullable);
610
- }
611
-
612
- SQLRETURN SQL_API SQLSpecialColumnsW (SQLHSTMT statement_handle, SQLSMALLINT identifier_type, SQLWCHAR *catalog_name,
613
- SQLSMALLINT name_length1, SQLWCHAR *schema_name, SQLSMALLINT name_length2,
614
- SQLWCHAR *table_name, SQLSMALLINT name_length3, SQLSMALLINT scope,
615
- SQLSMALLINT nullable) {
616
- auto catalog_name_conv = duckdb::widechar::utf16_conv (catalog_name, name_length1);
617
- auto schema_name_conv = duckdb::widechar::utf16_conv (schema_name, name_length2);
618
- auto table_name_conv = duckdb::widechar::utf16_conv (table_name, name_length3);
619
- return SpecialColumnsInternal (statement_handle, identifier_type, catalog_name_conv.utf8_str ,
620
- catalog_name_conv.utf8_len_smallint (), schema_name_conv.utf8_str ,
621
- schema_name_conv.utf8_len_smallint (), table_name_conv.utf8_str ,
622
- table_name_conv.utf8_len_smallint (), scope, nullable);
623
- }
624
-
625
- static SQLRETURN StatisticsInternal (SQLHSTMT statement_handle, SQLCHAR *catalog_name, SQLSMALLINT name_length1,
626
- SQLCHAR *schema_name, SQLSMALLINT name_length2, SQLCHAR *table_name,
627
- SQLSMALLINT name_length3, SQLUSMALLINT unique, SQLUSMALLINT reserved) {
628
- std::string query = R"#(
629
- SELECT
630
- CAST('' AS VARCHAR ) AS "TABLE_CAT",
631
- CAST('' AS VARCHAR ) AS "TABLE_SCHEM",
632
- CAST('' AS VARCHAR ) AS "TABLE_NAME",
633
- CAST(0 AS SMALLINT) AS "NON_UNIQUE",
634
- CAST('' AS VARCHAR ) AS "INDEX_QUALIFIER",
635
- CAST('' AS VARCHAR ) AS "INDEX_NAME",
636
- CAST(0 AS SMALLINT) AS "TYPE",
637
- CAST(0 AS SMALLINT) AS "ORDINAL_POSITION",
638
- CAST('' AS VARCHAR ) AS "COLUMN_NAME",
639
- CAST('' AS CHAR(1) ) AS "ASC_OR_DESC",
640
- CAST(0 AS INT ) AS "CARDINALITY",
641
- CAST(0 AS INT ) AS "PAGES",
642
- CAST('' AS VARCHAR ) AS "FILTER_CONDITION"
643
- WHERE 1 < 0
644
- )#" ;
645
- SQLRETURN ret =
646
- duckdb::ExecDirectStmt (statement_handle, (SQLCHAR *)query.c_str (), static_cast <SQLINTEGER>(query.size ()));
647
- if (!SQL_SUCCEEDED (ret)) {
648
- return ret;
649
- }
650
- return SQL_SUCCESS;
651
- }
652
-
653
- SQLRETURN SQL_API SQLStatistics (SQLHSTMT statement_handle, SQLCHAR *catalog_name, SQLSMALLINT name_length1,
654
- SQLCHAR *schema_name, SQLSMALLINT name_length2, SQLCHAR *table_name,
655
- SQLSMALLINT name_length3, SQLUSMALLINT unique, SQLUSMALLINT reserved) {
656
- return StatisticsInternal (statement_handle, catalog_name, name_length1, schema_name, name_length2, table_name,
657
- name_length3, unique, reserved);
658
- }
659
-
660
- SQLRETURN SQL_API SQLStatisticsW (SQLHSTMT statement_handle, SQLWCHAR *catalog_name, SQLSMALLINT name_length1,
661
- SQLWCHAR *schema_name, SQLSMALLINT name_length2, SQLWCHAR *table_name,
662
- SQLSMALLINT name_length3, SQLUSMALLINT unique, SQLUSMALLINT reserved) {
663
- auto catalog_name_conv = duckdb::widechar::utf16_conv (catalog_name, name_length1);
664
- auto schema_name_conv = duckdb::widechar::utf16_conv (schema_name, name_length2);
665
- auto table_name_conv = duckdb::widechar::utf16_conv (table_name, name_length3);
666
- return StatisticsInternal (statement_handle, catalog_name_conv.utf8_str , catalog_name_conv.utf8_len_smallint (),
667
- schema_name_conv.utf8_str , schema_name_conv.utf8_len_smallint (), table_name_conv.utf8_str ,
668
- table_name_conv.utf8_len_smallint (), unique, reserved);
669
- }
670
-
671
580
template <typename T>
672
581
static SQLRETURN SetNumericAttributePtr (duckdb::OdbcHandleStmt *hstmt, const T &val, SQLLEN *numeric_attribute_ptr) {
673
582
if (numeric_attribute_ptr) {
0 commit comments