@@ -129,6 +129,9 @@ SQLSMALLINT getc_typeForSQLType(const DescriptorRecord& record) {
129129 case SQL_WLONGVARCHAR:
130130 return SQL_C_WCHAR;
131131
132+ case SQL_BIT:
133+ return SQL_C_BIT;
134+
132135 case SQL_BINARY:
133136 case SQL_VARBINARY:
134137 case SQL_LONGVARBINARY:
@@ -146,13 +149,20 @@ SQLSMALLINT getc_typeForSQLType(const DescriptorRecord& record) {
146149 case SQL_BIGINT:
147150 return record.is_unsigned ? SQL_C_UBIGINT : SQL_C_SBIGINT;
148151
152+ case SQL_NUMERIC:
153+ case SQL_DECIMAL:
154+ return SQL_C_NUMERIC;
155+
156+ case SQL_FLOAT:
149157 case SQL_REAL:
150158 return SQL_C_FLOAT;
151159
152- case SQL_FLOAT:
153160 case SQL_DOUBLE:
154161 return SQL_C_DOUBLE;
155162
163+ case SQL_GUID:
164+ return SQL_C_GUID;
165+
156166 case SQL_DATE:
157167 case SQL_TYPE_DATE:
158168 return SQL_C_TYPE_DATE;
@@ -165,32 +175,32 @@ SQLSMALLINT getc_typeForSQLType(const DescriptorRecord& record) {
165175 case SQL_TYPE_TIMESTAMP:
166176 return SQL_C_TYPE_TIMESTAMP;
167177
168- case SQL_C_INTERVAL_DAY :
169- return SQL_INTERVAL_DAY ;
170- case SQL_C_INTERVAL_DAY_TO_HOUR :
171- return SQL_INTERVAL_DAY_TO_HOUR ;
172- case SQL_C_INTERVAL_DAY_TO_MINUTE :
173- return SQL_INTERVAL_DAY_TO_MINUTE ;
174- case SQL_C_INTERVAL_DAY_TO_SECOND :
175- return SQL_INTERVAL_DAY_TO_SECOND ;
176- case SQL_C_INTERVAL_HOUR :
177- return SQL_INTERVAL_HOUR ;
178- case SQL_C_INTERVAL_HOUR_TO_MINUTE :
179- return SQL_INTERVAL_HOUR_TO_MINUTE ;
180- case SQL_C_INTERVAL_HOUR_TO_SECOND :
181- return SQL_INTERVAL_HOUR_TO_SECOND ;
182- case SQL_C_INTERVAL_MINUTE :
183- return SQL_INTERVAL_MINUTE ;
184- case SQL_C_INTERVAL_MINUTE_TO_SECOND :
185- return SQL_INTERVAL_MINUTE_TO_SECOND ;
186- case SQL_C_INTERVAL_SECOND :
187- return SQL_INTERVAL_SECOND ;
188- case SQL_C_INTERVAL_YEAR :
189- return SQL_INTERVAL_YEAR ;
190- case SQL_C_INTERVAL_YEAR_TO_MONTH :
191- return SQL_INTERVAL_YEAR_TO_MONTH ;
192- case SQL_C_INTERVAL_MONTH :
193- return SQL_INTERVAL_MONTH ;
178+ case SQL_INTERVAL_DAY :
179+ return SQL_C_INTERVAL_DAY ;
180+ case SQL_INTERVAL_DAY_TO_HOUR :
181+ return SQL_C_INTERVAL_DAY_TO_HOUR ;
182+ case SQL_INTERVAL_DAY_TO_MINUTE :
183+ return SQL_C_INTERVAL_DAY_TO_MINUTE ;
184+ case SQL_INTERVAL_DAY_TO_SECOND :
185+ return SQL_C_INTERVAL_DAY_TO_SECOND ;
186+ case SQL_INTERVAL_HOUR :
187+ return SQL_C_INTERVAL_HOUR ;
188+ case SQL_INTERVAL_HOUR_TO_MINUTE :
189+ return SQL_C_INTERVAL_HOUR_TO_MINUTE ;
190+ case SQL_INTERVAL_HOUR_TO_SECOND :
191+ return SQL_C_INTERVAL_HOUR_TO_SECOND ;
192+ case SQL_INTERVAL_MINUTE :
193+ return SQL_C_INTERVAL_MINUTE ;
194+ case SQL_INTERVAL_MINUTE_TO_SECOND :
195+ return SQL_C_INTERVAL_MINUTE_TO_SECOND ;
196+ case SQL_INTERVAL_SECOND :
197+ return SQL_C_INTERVAL_SECOND ;
198+ case SQL_INTERVAL_YEAR :
199+ return SQL_C_INTERVAL_YEAR ;
200+ case SQL_INTERVAL_YEAR_TO_MONTH :
201+ return SQL_C_INTERVAL_YEAR_TO_MONTH ;
202+ case SQL_INTERVAL_MONTH :
203+ return SQL_C_INTERVAL_MONTH ;
194204
195205 default :
196206 throw DriverException (" Unknown SQL type: " + std::to_string (record.concise_type ),
@@ -691,9 +701,9 @@ void ODBCStatement::CloseCursor(bool suppress_errors) {
691701 has_reached_end_of_result_ = false ;
692702}
693703
694- bool ODBCStatement::GetData (SQLSMALLINT record_number, SQLSMALLINT c_type,
695- SQLPOINTER data_ptr, SQLLEN buffer_length,
696- SQLLEN* indicator_ptr) {
704+ SQLRETURN ODBCStatement::GetData (SQLSMALLINT record_number, SQLSMALLINT c_type,
705+ SQLPOINTER data_ptr, SQLLEN buffer_length,
706+ SQLLEN* indicator_ptr) {
697707 if (record_number == 0 ) {
698708 throw DriverException (" Bookmarks are not supported" , " 07009" );
699709 } else if (record_number > ird_->GetRecords ().size ()) {
0 commit comments