Execute Stored Procedure Smart Service & 18.3

Last week we had upgraded our Development environment to 18.3. We quickly found out that our implementation of certain Stored Procedures on MySQL no longer worked - we were getting a GTID enforcement message that we hadn't seen before. We've now rolled back to 18.2 and are exploring options for addressing this issue. 

It seems we were abusing the CREATE TEMPORARY TABLE aspect of Stored Procs in MySQL when invoked via the plug in Smart Service. 18.2 and lower the stored procs worked correctly, post 18.3 they errored. 

I've reached out to the Plug In author to see what he suggests but wondered if anyone else out there has already encountered this issue and if they have what solutions were used ? 

We've got a variety of options on the table, some seem straight forward and others quite complicated - so I'm trying to find that happy balance of what works but more importantly what is right. 

Many thanks 

Paul.

  Discussion posts and replies are publicly visible

Parents
  • Paul,

    I have a few options that may work for you, depending on your specific use case:

    1. Disable GTID in your environment. This isn't highly recommended but may suit your needs. I've seen this work as a temporary measure.
    2. Refactor your stored procedures to not create temporary tables.
    3. Implement a custom plugin to execute stored procedures without wrapping them in a transaction. This was applied on a project I worked on.
  • Sorry - forgot to say we are Cloud based so disabling GTID enforcement is not an option. One of the things we're exploring is to create a persistent table for the Stored Proc to write results to - the equivalent of a temp table to hold data for the duration of the Stored Proc Execution - ie writing to, joining and then deleting the data from the persistent temp table
Reply
  • Sorry - forgot to say we are Cloud based so disabling GTID enforcement is not an option. One of the things we're exploring is to create a persistent table for the Stored Proc to write results to - the equivalent of a temp table to hold data for the duration of the Stored Proc Execution - ie writing to, joining and then deleting the data from the persistent temp table
Children
No Data