This report id based on actual customer use case.
Spider fails to parse properly the parameter to two of its UDF when the value of a sub-parameter contains a comma - even when the coma is included in correctly quoted string. With these UDF, "parameter" is actually a string which contains a list of comma-separated names and values for multiple sub-parameters to the SQL statement that will be executed.
The primary reason seams for the error to be that Spider simply breaks down the parameter string at each comma, not paying attention when the comma is properly quoted (i.e. part of of a sub-parameter value).
Two Spider UDF functions are affected, spider_bg_direct_sql() and spider_direct_sql, which likely share same parsing code.
Example - create a database in the backend server with a user whose password contains a comma. Note that the comma in "pass,1234" is part of a quoted string and is not a delimiter.
SELECT spider_direct_sql('CREATE DATABASE test123', '', 'host "172.16.1.21", port "3306", user "spider", password "pass,1234" , database "test"') from dual;
|
|
ERROR 12503 (HY000): The UDF parameter 'password "pass' is invalid
|
The error message clearly shows that the parameter string has been split by the comma inside the quoted string.
A possible location of the offending code could be along lines 1160 of spd_direct_sql.cc:
if ((sprit_ptr[1] = strchr(sprit_ptr[0], ',')))
|
{
|
*sprit_ptr[1] = '\0';
|
sprit_ptr[1]++;
|
}
|
strchr() will simply return the next occurrence of the comma without taking into account the surrounding quotes.
{"report":{"fcp":755.8999996185303,"ttfb":186.19999980926514,"pageVisibility":"visible","entityId":79711,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":1,"journeyId":"29906b53-67e1-4786-bf30-de86244d1a6d","navigationType":0,"readyForUser":829.6000003814697,"redirectCount":0,"resourceLoadedEnd":851,"resourceLoadedStart":191.80000019073486,"resourceTiming":[{"duration":50.09999942779541,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":191.80000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":191.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":241.89999961853027,"responseStart":0,"secureConnectionStart":0},{"duration":50.19999980926514,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/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":192.10000038146973,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":192.10000038146973,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":242.30000019073486,"responseStart":0,"secureConnectionStart":0},{"duration":68.30000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/e9b27a47da5fb0f74a35acd57e9847fb-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":192.19999980926514,"connectEnd":192.19999980926514,"connectStart":192.19999980926514,"domainLookupEnd":192.19999980926514,"domainLookupStart":192.19999980926514,"fetchStart":192.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":192.19999980926514,"responseEnd":260.5,"responseStart":260.5,"secureConnectionStart":192.19999980926514},{"duration":135.70000076293945,"initiatorType":"script","name":"https://jira.mariadb.org/s/c32eb0da7ad9831253f8397e6cc26afd-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/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":192.39999961853027,"connectEnd":192.39999961853027,"connectStart":192.39999961853027,"domainLookupEnd":192.39999961853027,"domainLookupStart":192.39999961853027,"fetchStart":192.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":192.39999961853027,"responseEnd":328.1000003814697,"responseStart":328.1000003814697,"secureConnectionStart":192.39999961853027},{"duration":139.0999994277954,"initiatorType":"script","name":"https://jira.mariadb.org/s/bc0bcb146314416123c992714ee00ff7-CDN/lu2bv2/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":192.60000038146973,"connectEnd":192.60000038146973,"connectStart":192.60000038146973,"domainLookupEnd":192.60000038146973,"domainLookupStart":192.60000038146973,"fetchStart":192.60000038146973,"redirectEnd":0,"redirectStart":0,"requestStart":192.60000038146973,"responseEnd":331.69999980926514,"responseStart":331.69999980926514,"secureConnectionStart":192.60000038146973},{"duration":139.30000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":192.80000019073486,"connectEnd":192.80000019073486,"connectStart":192.80000019073486,"domainLookupEnd":192.80000019073486,"domainLookupStart":192.80000019073486,"fetchStart":192.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":192.80000019073486,"responseEnd":332.1000003814697,"responseStart":332.1000003814697,"secureConnectionStart":192.80000019073486},{"duration":139.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":193,"connectEnd":193,"connectStart":193,"domainLookupEnd":193,"domainLookupStart":193,"fetchStart":193,"redirectEnd":0,"redirectStart":0,"requestStart":193,"responseEnd":332.5,"responseStart":332.5,"secureConnectionStart":193},{"duration":210,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2bv2/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":193.10000038146973,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":193.10000038146973,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":403.1000003814697,"responseStart":0,"secureConnectionStart":0},{"duration":139.60000038146973,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":193.39999961853027,"connectEnd":193.39999961853027,"connectStart":193.39999961853027,"domainLookupEnd":193.39999961853027,"domainLookupStart":193.39999961853027,"fetchStart":193.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":193.39999961853027,"responseEnd":333,"responseStart":333,"secureConnectionStart":193.39999961853027},{"duration":209.80000019073486,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2bv2/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":193.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":193.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":403.30000019073486,"responseStart":0,"secureConnectionStart":0},{"duration":139.9000005722046,"initiatorType":"script","name":"https://jira.mariadb.org/s/719848dd97ebe0663199f49a3936487a-CDN/lu2bv2/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":193.69999980926514,"connectEnd":193.69999980926514,"connectStart":193.69999980926514,"domainLookupEnd":193.69999980926514,"domainLookupStart":193.69999980926514,"fetchStart":193.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":193.69999980926514,"responseEnd":333.6000003814697,"responseStart":333.6000003814697,"secureConnectionStart":193.69999980926514},{"duration":343.30000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":194.39999961853027,"connectEnd":194.39999961853027,"connectStart":194.39999961853027,"domainLookupEnd":194.39999961853027,"domainLookupStart":194.39999961853027,"fetchStart":194.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":194.39999961853027,"responseEnd":537.6999998092651,"responseStart":537.6999998092651,"secureConnectionStart":194.39999961853027},{"duration":574.6000003814697,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":194.5,"connectEnd":194.5,"connectStart":194.5,"domainLookupEnd":194.5,"domainLookupStart":194.5,"fetchStart":194.5,"redirectEnd":0,"redirectStart":0,"requestStart":194.5,"responseEnd":769.1000003814697,"responseStart":769.1000003814697,"secureConnectionStart":194.5},{"duration":107.69999980926514,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":430.5,"connectEnd":430.5,"connectStart":430.5,"domainLookupEnd":430.5,"domainLookupStart":430.5,"fetchStart":430.5,"redirectEnd":0,"redirectStart":0,"requestStart":430.5,"responseEnd":538.1999998092651,"responseStart":538.1999998092651,"secureConnectionStart":430.5},{"duration":95.40000057220459,"initiatorType":"link","name":"https://jira.mariadb.org/s/d5715adaadd168a9002b108b2b039b50-CDN/lu2bv2/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/css/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":674.3999996185303,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":674.3999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":769.8000001907349,"responseStart":0,"secureConnectionStart":0},{"duration":170.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/e65b778d185daf5aee24936755b43da6/_/download/contextbatch/js/browser-metrics-plugin.contrib,-_super,-project.issue.navigator,-jira.view.issue,-atl.general/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":675.3000001907349,"connectEnd":675.3000001907349,"connectStart":675.3000001907349,"domainLookupEnd":675.3000001907349,"domainLookupStart":675.3000001907349,"fetchStart":675.3000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":675.3000001907349,"responseEnd":845.8000001907349,"responseStart":845.8000001907349,"secureConnectionStart":675.3000001907349},{"duration":175.30000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/53a43b6764f587426c7bb9a150184c00-CDN/lu2bv2/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/js/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":675.6999998092651,"connectEnd":675.6999998092651,"connectStart":675.6999998092651,"domainLookupEnd":675.6999998092651,"domainLookupStart":675.6999998092651,"fetchStart":675.6999998092651,"redirectEnd":0,"redirectStart":0,"requestStart":675.6999998092651,"responseEnd":851,"responseStart":851,"secureConnectionStart":675.6999998092651}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":39,"responseStart":186,"responseEnd":188,"domLoading":189,"domInteractive":882,"domContentLoadedEventStart":882,"domContentLoadedEventEnd":919,"domComplete":1664,"loadEventStart":1664,"loadEventEnd":1666,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":867},{"name":"bigPipe.sidebar-id.end","time":867.6999998092651},{"name":"bigPipe.activity-panel-pipe-id.start","time":867.8000001907349},{"name":"bigPipe.activity-panel-pipe-id.end","time":870.1999998092651},{"name":"activityTabFullyLoaded","time":931.1000003814697}],"measures":[],"correlationId":"a381e09bdbfd82","effectiveType":"4g","downlink":9,"rtt":0,"serverDuration":90,"dbReadsTimeInMs":9,"dbConnsTimeInMs":16,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}