Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-6499

Creating CONNECT table with SRCDEF in a stored procedure

    XMLWordPrintable

Details

    Description

      I found this while trying to workaround MDEV-6488.

      DROP PROCEDURE IF EXISTS `_`.`materialize_sql`;
      DELIMITER ||
      CREATE PROCEDURE `_`.`materialize_sql`(IN p_name VARCHAR(56), IN p_sql TEXT)
      	MODIFIES SQL DATA
      BEGIN
      	# SET p_name := CONCAT('`', REPLACE(p_name, '`', '``'), '`');
      	
      	-- create table
      	SET @v_materialized_sql := CONCAT_WS('',
      		  'CREATE OR REPLACE TEMPORARY TABLE `_`.', p_name
      		, ' ENGINE = CONNECT'
      		, ' TABLE_TYPE = MYSQL'
      		, ' SRCDEF = ''', REPLACE(p_sql, '''', ''''''), ''''
      		, ' CONNECTION = ''_'''
      		);
      	PREPARE stmt_materialized_sql FROM @v_materialized_sql;
      	EXECUTE stmt_materialized_sql;
      END ||
      DELIMITER ;
      CALL materialize_sql('x', 'SHOW MASTER STATUS');
      DESC x;
      SELECT * FROM x;

      There are 3 things to note:

      1) The table structure (DESC x) is correct, but SELECT x returns only empty fields, without a good reason.

      2) If you remove the TEMPORARY keyword, the output will be different: we get 0 rows without a good readon.

      3) If you remove TEMPORARY and uncomment the SET statement, the behaviour is correct (no bug). But "x" is not a special char...

      I still couldn't find any way to create a temporary CONNECT table with a procedure.

      Attachments

        Activity

          People

            serg Sergei Golubchik
            f_razzoli Federico Razzoli
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.