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

Window functions lose the VECTOR type through CTAS

    XMLWordPrintable

Details

    • Can result in unexpected behaviour
    • Q4/2026 Server Development

    Description

      CREATE TABLE t (id INT PRIMARY KEY, g INT, v VECTOR(2));
      INSERT INTO t VALUES (1,1,VEC_FromText('[1,2]')), (2,1,VEC_FromText('[3,4]')), (3,2,VEC_FromText('[1,2]')), (4,2,NULL), (5,3,VEC_FromText('[5,6]'));
       
      CREATE TABLE c_copy  AS SELECT v FROM t;
      CREATE TABLE c_min   AS SELECT MIN(v) AS v FROM t;
      CREATE TABLE c_max   AS SELECT MAX(v) AS v FROM t;
      CREATE TABLE c_sub   AS SELECT (SELECT v FROM t WHERE id=1) AS v;
      CREATE TABLE c_first AS SELECT FIRST_VALUE(v) OVER (ORDER BY id) AS v FROM t;
      CREATE TABLE c_last  AS SELECT LAST_VALUE(v) OVER (ORDER BY id) AS v FROM t;
      CREATE TABLE c_nth   AS SELECT NTH_VALUE(v,1) OVER (ORDER BY id) AS v FROM t;
      CREATE TABLE c_lag   AS SELECT LAG(v) OVER (ORDER BY id) AS v FROM t;
      CREATE TABLE c_lead  AS SELECT LEAD(v) OVER (ORDER BY id) AS v FROM t;
      CREATE TABLE c_minw  AS SELECT MIN(v) OVER (ORDER BY id) AS v FROM t;
       
      SELECT TABLE_NAME, COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME LIKE 'c\_%' ORDER BY TABLE_NAME;
      

      CLI Output

      11.8.9-opt>CREATE TABLE t (id INT PRIMARY KEY, g INT, v VECTOR(2));
      R BY id) AS v FROM t;
      CREATE TABLE c_minw  AS SELECT MIN(v) OVER (ORDER BY id) AS v FROM t;
       
      SELECT TABLE_NAME, COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME LIKE 'c\_%' ORDER BY TABLE_NAME;
      Query OK, 0 rows affected (0.009 sec)
       
      11.8.9-opt>INSERT INTO t VALUES (1,1,VEC_FromText('[1,2]')), (2,1,VEC_FromText('[3,4]')), (3,2,VEC_FromText('[1,2]')), (4,2,NULL), (5,3,VEC_FromText('[5,6]'));
      Query OK, 5 rows affected (0.001 sec)
      Records: 5  Duplicates: 0  Warnings: 0
       
      11.8.9-opt>
      11.8.9-opt>CREATE TABLE c_copy  AS SELECT v FROM t;
      Query OK, 5 rows affected (0.010 sec)
      Records: 5  Duplicates: 0  Warnings: 0
       
      11.8.9-opt>CREATE TABLE c_min   AS SELECT MIN(v) AS v FROM t;
      Query OK, 1 row affected (0.009 sec)
      Records: 1  Duplicates: 0  Warnings: 0
       
      11.8.9-opt>CREATE TABLE c_max   AS SELECT MAX(v) AS v FROM t;
      Query OK, 1 row affected (0.007 sec)
      Records: 1  Duplicates: 0  Warnings: 0
       
      11.8.9-opt>CREATE TABLE c_sub   AS SELECT (SELECT v FROM t WHERE id=1) AS v;
      Query OK, 1 row affected (0.008 sec)
      Records: 1  Duplicates: 0  Warnings: 0
       
      11.8.9-opt>CREATE TABLE c_first AS SELECT FIRST_VALUE(v) OVER (ORDER BY id) AS v FROM t;
      Query OK, 5 rows affected (0.010 sec)
      Records: 5  Duplicates: 0  Warnings: 0
       
      11.8.9-opt>CREATE TABLE c_last  AS SELECT LAST_VALUE(v) OVER (ORDER BY id) AS v FROM t;
      Query OK, 5 rows affected (0.006 sec)
      Records: 5  Duplicates: 0  Warnings: 0
       
      11.8.9-opt>CREATE TABLE c_nth   AS SELECT NTH_VALUE(v,1) OVER (ORDER BY id) AS v FROM t;
      Query OK, 5 rows affected (0.008 sec)
      Records: 5  Duplicates: 0  Warnings: 0
       
      11.8.9-opt>CREATE TABLE c_lag   AS SELECT LAG(v) OVER (ORDER BY id) AS v FROM t;
      Query OK, 5 rows affected (0.009 sec)
      Records: 5  Duplicates: 0  Warnings: 0
       
      11.8.9-opt>CREATE TABLE c_lead  AS SELECT LEAD(v) OVER (ORDER BY id) AS v FROM t;
      Query OK, 5 rows affected (0.008 sec)
      Records: 5  Duplicates: 0  Warnings: 0
       
      11.8.9-opt>CREATE TABLE c_minw  AS SELECT MIN(v) OVER (ORDER BY id) AS v FROM t;
      Query OK, 5 rows affected (0.009 sec)
      Records: 5  Duplicates: 0  Warnings: 0
       
      11.8.9-opt>
      11.8.9-opt>SELECT TABLE_NAME, COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME LIKE 'c\_%' ORDER BY TABLE_NAME;
      +------------+--------------+
      | TABLE_NAME | COLUMN_TYPE  |
      +------------+--------------+
      | c_copy     | vector(2)    |
      | c_first    | varbinary(8) |
      | c_lag      | varbinary(8) |
      | c_last     | varbinary(8) |
      | c_lead     | varbinary(8) |
      | c_max      | vector(2)    |
      | c_min      | vector(2)    |
      | c_minw     | varbinary(8) |
      | c_nth      | varbinary(8) |
      | c_sub      | varbinary(8) |
      +------------+--------------+
      10 rows in set (0.001 sec)
       
      11.8.9-opt>
      

      Attachments

        Activity

          People

            raghunandan.bhat Raghunandan Bhat
            ramesh Ramesh Sivaraman
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Time Tracking

                Estimated:
                Original Estimate - 0d
                0d
                Remaining:
                Time Spent - 0.5h Remaining Estimate - 2d
                2d
                Logged:
                Time Spent - 0.5h Remaining Estimate - 2d
                0.5h

                Git Integration

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