A multiple-table UPDATE first performs join operations, then it updates the matching rows.
A multiple-table UPDATE returning a result set does the following:
first performs join operations
for each row of the result of the join it calculates some expressions over the columns of the join and forms from them a row of the returned result set
after this it updates the matching rows
A multiple-table DELETE first performs join operations, then it deletes the matching rows.
A multiple-table DELETE returning a result set does the following:
first performs join operations
for each row of the result of the join it calculates some expressions over the columns of the join and forms from them a row of the returned result set
after this it deletes the matching rows
Attachments
Issue Links
duplicates
MDEV-10448DELETE ... RETURNING support for multi-table deteles
My name is Shubham Tomar and I'm a final Computer Science and Engineering student at KIIT University, India.
I have previously worked at Amazon India Development Centre as an SDE(Intern) for 6 months.
I would like to work on this project as a part of GSoC '18.
Where and How can I begin?
Shubham Tomar
added a comment - Hi,
My name is Shubham Tomar and I'm a final Computer Science and Engineering student at KIIT University, India.
I have previously worked at Amazon India Development Centre as an SDE(Intern) for 6 months.
I would like to work on this project as a part of GSoC '18.
Where and How can I begin?
You could check how MDEV-3814 was implemented. There's also a related MDEV-5092, still open.
But as far as this one is concerned, see how mutli-table UPDATE/DELETE work. Take a look at select_result class — this is what SELECT uses to send results to the client. And multi_delete and multi_update classes.
Sergei Golubchik
added a comment - You could check how MDEV-3814 was implemented. There's also a related MDEV-5092 , still open.
But as far as this one is concerned, see how mutli-table UPDATE/DELETE work. Take a look at select_result class — this is what SELECT uses to send results to the client. And multi_delete and multi_update classes.
I'm Khaled from Egypt. I'm interested in participating in GSoC this year. Any reason this project hasn't been picked up the previous years? Seems like it garnered enough attention from students. Did Google refuse the proposals?
Anyways, so to clarify: This project is about implementing the RETURNING statement for multiple tables UPDATE/DELETE? Or rather implement the the UPDATE/DELETE itself with - of course - RETURNING?
I have downloaded and built MariaDB server. Is there any qualification tasks?
Khaled Emara
added a comment - Hi,
I'm Khaled from Egypt. I'm interested in participating in GSoC this year. Any reason this project hasn't been picked up the previous years? Seems like it garnered enough attention from students. Did Google refuse the proposals?
Anyways, so to clarify: This project is about implementing the RETURNING statement for multiple tables UPDATE/DELETE ? Or rather implement the the UPDATE/DELETE itself with - of course - RETURNING ?
I have downloaded and built MariaDB server. Is there any qualification tasks?
Hi Khaled,
A student tried to implement this for GSoc19, but the attempt was not successful though the task was not harder than INSERT ... RETURNING (see MDEV-10014) that was implemented by another student and finally incorporated into MariaDB. You can look at the implementation of MDEV-10014 to figure out how much work it would be to implement UPDATE ... RETURNING.
Igor Babaev (Inactive)
added a comment - Hi Khaled,
A student tried to implement this for GSoc19, but the attempt was not successful though the task was not harder than INSERT ... RETURNING (see MDEV-10014 ) that was implemented by another student and finally incorporated into MariaDB. You can look at the implementation of MDEV-10014 to figure out how much work it would be to implement UPDATE ... RETURNING.
Greetings! I'm Hammaad, it is really interesting to know how MDEV-10014 was implemented, thank you @Igor Babaev for the information, I'd like to receive some more hints on this topic if available, as it will help me and Khaled as well.
Moreover I would love to contribute to solve this requirement.
Thanks
Mohammed Hammaad Mateen
added a comment - - edited Greetings! I'm Hammaad, it is really interesting to know how MDEV-10014 was implemented, thank you @Igor Babaev for the information, I'd like to receive some more hints on this topic if available, as it will help me and Khaled as well.
Moreover I would love to contribute to solve this requirement.
Thanks
Hi Hammaad,
Have you built MariaDB server from the tree git@github.com:MariaDB/server.git?
If so, have you checked in debugger how INSERT ... RETURNING works?
Igor Babaev (Inactive)
added a comment - Hi Hammaad,
Have you built MariaDB server from the tree git@github.com:MariaDB/server.git?
If so, have you checked in debugger how INSERT ... RETURNING works?
Greetings! Yes, I've built the Awesome Maria DB server. Working on MDEV-14558 currently, once done will surely look upon MDEV-10014.
Mohammed Hammaad Mateen
added a comment - Greetings! Yes, I've built the Awesome Maria DB server. Working on MDEV-14558 currently, once done will surely look upon MDEV-10014 .
People
Sergei Golubchik
Igor Babaev (Inactive)
Votes:
0Vote for this issue
Watchers:
12Start watching this issue
Dates
Created:
Updated:
Git Integration
Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.
{"report":{"fcp":842.2999999523163,"ttfb":245.5,"pageVisibility":"visible","entityId":60666,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":1,"journeyId":"b14731ad-2ade-4951-85c2-0a7642e9ca92","navigationType":0,"readyForUser":918.6000000238419,"redirectCount":0,"resourceLoadedEnd":760.5,"resourceLoadedStart":251.5,"resourceTiming":[{"duration":12,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2bu7/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":251.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":251.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":263.5,"responseStart":0,"secureConnectionStart":0},{"duration":12.300000071525574,"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":251.79999995231628,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":251.79999995231628,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":264.10000002384186,"responseStart":0,"secureConnectionStart":0},{"duration":71.79999995231628,"initiatorType":"script","name":"https://jira.mariadb.org/s/fbf975c0cce4b1abf04784eeae9ba1f4-CDN/lu2bu7/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":252,"connectEnd":252,"connectStart":252,"domainLookupEnd":252,"domainLookupStart":252,"fetchStart":252,"redirectEnd":0,"redirectStart":0,"requestStart":252,"responseEnd":323.7999999523163,"responseStart":323.7999999523163,"secureConnectionStart":252},{"duration":162.40000009536743,"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":252.19999992847443,"connectEnd":252.19999992847443,"connectStart":252.19999992847443,"domainLookupEnd":252.19999992847443,"domainLookupStart":252.19999992847443,"fetchStart":252.19999992847443,"redirectEnd":0,"redirectStart":0,"requestStart":252.19999992847443,"responseEnd":414.60000002384186,"responseStart":414.60000002384186,"secureConnectionStart":252.19999992847443},{"duration":166.60000002384186,"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":252.29999995231628,"connectEnd":252.29999995231628,"connectStart":252.29999995231628,"domainLookupEnd":252.29999995231628,"domainLookupStart":252.29999995231628,"fetchStart":252.29999995231628,"redirectEnd":0,"redirectStart":0,"requestStart":252.29999995231628,"responseEnd":418.89999997615814,"responseStart":418.89999997615814,"secureConnectionStart":252.29999995231628},{"duration":166.79999995231628,"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":252.60000002384186,"connectEnd":252.60000002384186,"connectStart":252.60000002384186,"domainLookupEnd":252.60000002384186,"domainLookupStart":252.60000002384186,"fetchStart":252.60000002384186,"redirectEnd":0,"redirectStart":0,"requestStart":252.60000002384186,"responseEnd":419.39999997615814,"responseStart":419.39999997615814,"secureConnectionStart":252.60000002384186},{"duration":168.30000007152557,"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":252.69999992847443,"connectEnd":252.69999992847443,"connectStart":252.69999992847443,"domainLookupEnd":252.69999992847443,"domainLookupStart":252.69999992847443,"fetchStart":252.69999992847443,"redirectEnd":0,"redirectStart":0,"requestStart":252.69999992847443,"responseEnd":421,"responseStart":421,"secureConnectionStart":252.69999992847443},{"duration":215.29999995231628,"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":252.89999997615814,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":252.89999997615814,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":468.1999999284744,"responseStart":0,"secureConnectionStart":0},{"duration":169,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":253.10000002384186,"connectEnd":253.10000002384186,"connectStart":253.10000002384186,"domainLookupEnd":253.10000002384186,"domainLookupStart":253.10000002384186,"fetchStart":253.10000002384186,"redirectEnd":0,"redirectStart":0,"requestStart":253.10000002384186,"responseEnd":422.10000002384186,"responseStart":422.10000002384186,"secureConnectionStart":253.10000002384186},{"duration":215,"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":253.29999995231628,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":253.29999995231628,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":468.2999999523163,"responseStart":0,"secureConnectionStart":0},{"duration":169.89999997615814,"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":253.5,"connectEnd":253.5,"connectStart":253.5,"domainLookupEnd":253.5,"domainLookupStart":253.5,"fetchStart":253.5,"redirectEnd":0,"redirectStart":0,"requestStart":253.5,"responseEnd":423.39999997615814,"responseStart":423.39999997615814,"secureConnectionStart":253.5},{"duration":451.59999990463257,"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":254.60000002384186,"connectEnd":254.60000002384186,"connectStart":254.60000002384186,"domainLookupEnd":254.60000002384186,"domainLookupStart":254.60000002384186,"fetchStart":254.60000002384186,"redirectEnd":0,"redirectStart":0,"requestStart":254.60000002384186,"responseEnd":706.1999999284744,"responseStart":706.1999999284744,"secureConnectionStart":254.60000002384186},{"duration":490.10000002384186,"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":254.69999992847443,"connectEnd":254.69999992847443,"connectStart":254.69999992847443,"domainLookupEnd":254.69999992847443,"domainLookupStart":254.69999992847443,"fetchStart":254.69999992847443,"redirectEnd":0,"redirectStart":0,"requestStart":254.69999992847443,"responseEnd":744.7999999523163,"responseStart":744.7999999523163,"secureConnectionStart":254.69999992847443},{"duration":224.80000007152557,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":481.7999999523163,"connectEnd":481.7999999523163,"connectStart":481.7999999523163,"domainLookupEnd":481.7999999523163,"domainLookupStart":481.7999999523163,"fetchStart":481.7999999523163,"redirectEnd":0,"redirectStart":0,"requestStart":481.7999999523163,"responseEnd":706.6000000238419,"responseStart":706.6000000238419,"secureConnectionStart":481.7999999523163},{"duration":17.600000023841858,"initiatorType":"link","name":"https://jira.mariadb.org/s/d5715adaadd168a9002b108b2b039b50-CDN/lu2bu7/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":742.8999999761581,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":742.8999999761581,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":760.5,"responseStart":0,"secureConnectionStart":0}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":69,"responseStart":246,"responseEnd":247,"domLoading":249,"domInteractive":982,"domContentLoadedEventStart":982,"domContentLoadedEventEnd":1043,"domComplete":1296,"loadEventStart":1296,"loadEventEnd":1297,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":951.2999999523163},{"name":"bigPipe.sidebar-id.end","time":952},{"name":"bigPipe.activity-panel-pipe-id.start","time":952.1999999284744},{"name":"bigPipe.activity-panel-pipe-id.end","time":955.1999999284744},{"name":"activityTabFullyLoaded","time":1061.1999999284744}],"measures":[],"correlationId":"b155d483fb35b0","effectiveType":"4g","downlink":9.2,"rtt":0,"serverDuration":117,"dbReadsTimeInMs":17,"dbConnsTimeInMs":25,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}
hi is this issue is assign to anyone or it is by default it is assign...