Type:
Bug
Priority:
Major
Resolution:
Fixed
Affects Version/s:
None
Environment:
linux+otl_v4+mariadb-connector-odbc-3.0.8-ga+mariadb-10.2.12
MADB_SetIrdRecord in ma_desc.c:
switch (Field->type) {
case MYSQL_TYPE_DECIMAL:
case MYSQL_TYPE_NEWDECIMAL:
Record->FixedPrecScale= SQL_FALSE;
Record->NumPrecRadix= 10;
Record->Precision= (SQLSMALLINT)Field->length - 2;
Record->Scale= Field->decimals;
if field type is MYSQL_TYPE_DECIMAL, the precision is Field->length-2, so field type decimal(1,0) will return precision=2-2=0, which makes otl buffer offset wrong.
Test Case:
TABLE:
MariaDB [test] > show create table t1;
------ ----------------------------------------------------------------------------------------------------------------------------+
------ ----------------------------------------------------------------------------------------------------------------------------+
t1
CREATE TABLE `t1` (
`f1` decimal(9,0) DEFAULT NULL,
`f2` decimal(1,0) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
------ ----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
DATA:
MariaDB [test] > select * from t1;
----- -----+
----- -----+
----- -----+
3 rows in set (0.00 sec)
use otl to select f1,f2 from t1,result is wrong if otl_stream first param array_size is 1000:
f1=100,f2=1
f1=100,f2=0
f1=100,f2=0
result is corrent, if otl_stream first param array_size is 1
f1=100,f2=1
f1=100,f2=2
f1=100,f2=3
Test Code:
#include <iostream>
using namespace std;
#include "otl.h"
otl_connect db;
int main()
{
otl_connect::otl_initialize();
try
{
db.rlogon("DSN=mdb_test");
string sql = "select f1,f2 from test.t1";
otl_nocommit_stream select(1000, sql.c_str(), db);
//otl_nocommit_stream select(1, sql.c_str(), db);
while(!select.eof())
{
int f1,f2;
select >> f1 >> f2;
cout<<"f1="<<f1<<",f2="<<f2<<endl;
}
}catch(otl_exception& p)
{
cerr<<p.msg<<endl;
cerr<<p.stm_text<<endl;
cerr<<p.var_info<<endl;
}
db.logoff();
}
{"report":{"fcp":972.5999999046326,"ttfb":134.70000004768372,"pageVisibility":"visible","entityId":72028,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"dd7fd869-a35b-466d-a03a-1e2d255dec82","navigationType":0,"readyForUser":1041.5,"redirectCount":0,"resourceLoadedEnd":1094.4000000953674,"resourceLoadedStart":140,"resourceTiming":[{"duration":340,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2bu7/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":140,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":140,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":480,"responseStart":0,"secureConnectionStart":0},{"duration":339.7999999523163,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2bu7/820016/12ta74/8679b4946efa1a0bb029a3a22206fb5d/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":140.29999995231628,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":140.29999995231628,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":480.09999990463257,"responseStart":0,"secureConnectionStart":0},{"duration":348.7999999523163,"initiatorType":"script","name":"https://jira.mariadb.org/s/fbf975c0cce4b1abf04784eeae9ba1f4-CDN/lu2bu7/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":140.40000009536743,"connectEnd":140.40000009536743,"connectStart":140.40000009536743,"domainLookupEnd":140.40000009536743,"domainLookupStart":140.40000009536743,"fetchStart":140.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":140.40000009536743,"responseEnd":489.2000000476837,"responseStart":489.2000000476837,"secureConnectionStart":140.40000009536743},{"duration":465.90000009536743,"initiatorType":"script","name":"https://jira.mariadb.org/s/099b33461394b8015fc36c0a4b96e19f-CDN/lu2bu7/820016/12ta74/8679b4946efa1a0bb029a3a22206fb5d/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":140.5,"connectEnd":140.5,"connectStart":140.5,"domainLookupEnd":140.5,"domainLookupStart":140.5,"fetchStart":140.5,"redirectEnd":0,"redirectStart":0,"requestStart":140.5,"responseEnd":606.4000000953674,"responseStart":606.4000000953674,"secureConnectionStart":140.5},{"duration":469.39999985694885,"initiatorType":"script","name":"https://jira.mariadb.org/s/94c15bff32baef80f4096a08aceae8bc-CDN/lu2bu7/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":140.70000004768372,"connectEnd":140.70000004768372,"connectStart":140.70000004768372,"domainLookupEnd":140.70000004768372,"domainLookupStart":140.70000004768372,"fetchStart":140.70000004768372,"redirectEnd":0,"redirectStart":0,"requestStart":140.70000004768372,"responseEnd":610.0999999046326,"responseStart":610.0999999046326,"secureConnectionStart":140.70000004768372},{"duration":469.89999985694885,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bu7/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":140.70000004768372,"connectEnd":140.70000004768372,"connectStart":140.70000004768372,"domainLookupEnd":140.70000004768372,"domainLookupStart":140.70000004768372,"fetchStart":140.70000004768372,"redirectEnd":0,"redirectStart":0,"requestStart":140.70000004768372,"responseEnd":610.5999999046326,"responseStart":610.5999999046326,"secureConnectionStart":140.70000004768372},{"duration":470.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bu7/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":140.79999995231628,"connectEnd":140.79999995231628,"connectStart":140.79999995231628,"domainLookupEnd":140.79999995231628,"domainLookupStart":140.79999995231628,"fetchStart":140.79999995231628,"redirectEnd":0,"redirectStart":0,"requestStart":140.79999995231628,"responseEnd":611.2999999523163,"responseStart":611.2999999523163,"secureConnectionStart":140.79999995231628},{"duration":470.69999980926514,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2bu7/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":140.90000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":140.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":611.5999999046326,"responseStart":0,"secureConnectionStart":0},{"duration":470.60000014305115,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":141.09999990463257,"connectEnd":141.09999990463257,"connectStart":141.09999990463257,"domainLookupEnd":141.09999990463257,"domainLookupStart":141.09999990463257,"fetchStart":141.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":141.09999990463257,"responseEnd":611.7000000476837,"responseStart":611.7000000476837,"secureConnectionStart":141.09999990463257},{"duration":470.7999999523163,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2bu7/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":141.29999995231628,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":141.29999995231628,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":612.0999999046326,"responseStart":0,"secureConnectionStart":0},{"duration":470.7999999523163,"initiatorType":"script","name":"https://jira.mariadb.org/s/3339d87fa2538a859872f2df449bf8d0-CDN/lu2bu7/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":141.40000009536743,"connectEnd":141.40000009536743,"connectStart":141.40000009536743,"domainLookupEnd":141.40000009536743,"domainLookupStart":141.40000009536743,"fetchStart":141.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":141.40000009536743,"responseEnd":612.2000000476837,"responseStart":612.2000000476837,"secureConnectionStart":141.40000009536743},{"duration":564.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bu7/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":142,"connectEnd":142,"connectStart":142,"domainLookupEnd":142,"domainLookupStart":142,"fetchStart":142,"redirectEnd":0,"redirectStart":0,"requestStart":142,"responseEnd":706.5,"responseStart":706.5,"secureConnectionStart":142},{"duration":952.3000001907349,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bu7/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":142.09999990463257,"connectEnd":142.09999990463257,"connectStart":142.09999990463257,"domainLookupEnd":142.09999990463257,"domainLookupStart":142.09999990463257,"fetchStart":142.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":142.09999990463257,"responseEnd":1094.4000000953674,"responseStart":1094.4000000953674,"secureConnectionStart":142.09999990463257},{"duration":65,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":642.7000000476837,"connectEnd":642.7000000476837,"connectStart":642.7000000476837,"domainLookupEnd":642.7000000476837,"domainLookupStart":642.7000000476837,"fetchStart":642.7000000476837,"redirectEnd":0,"redirectStart":0,"requestStart":642.7000000476837,"responseEnd":707.7000000476837,"responseStart":707.7000000476837,"secureConnectionStart":642.7000000476837}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":13,"responseStart":134,"responseEnd":136,"domLoading":138,"domInteractive":1111,"domContentLoadedEventStart":1111,"domContentLoadedEventEnd":1149,"domComplete":1810,"loadEventStart":1810,"loadEventEnd":1812,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1096.2000000476837},{"name":"bigPipe.sidebar-id.end","time":1096.9000000953674},{"name":"bigPipe.activity-panel-pipe-id.start","time":1097.0999999046326},{"name":"bigPipe.activity-panel-pipe-id.end","time":1099.4000000953674},{"name":"activityTabFullyLoaded","time":1155.0999999046326}],"measures":[],"correlationId":"b028b245910bf","effectiveType":"4g","downlink":10,"rtt":0,"serverDuration":69,"dbReadsTimeInMs":7,"dbConnsTimeInMs":13,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}