Uploaded image for project: 'MariaDB ColumnStore'
  1. MariaDB ColumnStore
  2. MCOL-4454

"ORDER BY BINARY a" is not like in InnoDB

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • 5.4.3
    • 5.5.2
    • PrimProc
    • None
    • 2021-1

    Description

      DROP TABLE IF EXISTS t1;
      CREATE TABLE t1 (a VARCHAR(32) CHARACTER SET latin1) ENGINE=InnoDB;
      INSERT INTO t1 VALUES ('A'),('A ');
      SELECT QUOTE(a) FROM t1 ORDER BY a, BINARY(a) DESC;
      

      +----------+
      | QUOTE(a) |
      +----------+
      | 'A '     |
      | 'A'      |
      +----------+
      

      DROP TABLE IF EXISTS t1;
      CREATE TABLE t1 (a VARCHAR(32) CHARACTER SET latin1) ENGINE=ColumnStore;
      INSERT INTO t1 VALUES ('A'),('A ');
      SELECT QUOTE(a) FROM t1 ORDER BY a, BINARY(a) DESC;
      

      +----------+
      | QUOTE(a) |
      +----------+
      | 'A'      |
      | 'A '     |
      +----------+
      

      Notice, ColumnStore returns the two records in reverse order.

      Attachments

        Activity

          The same problem is repeatable with HEX() instead of BINARY():

          DROP TABLE IF EXISTS t1;
          CREATE TABLE t1 (a VARCHAR(32) CHARACTER SET latin1) ENGINE=InnoDB;
          INSERT INTO t1 VALUES ('A'),('A ');
          SELECT QUOTE(a) FROM t1 ORDER BY a, HEX(a) DESC;
          

          +----------+
          | QUOTE(a) |
          +----------+
          | 'A '     |
          | 'A'      |
          +----------+
          

          DROP TABLE IF EXISTS t1;
          CREATE TABLE t1 (a VARCHAR(32) CHARACTER SET latin1) ENGINE=ColumnStore;
          INSERT INTO t1 VALUES ('A'),('A ');
          SELECT QUOTE(a) FROM t1 ORDER BY a, HEX(a) DESC;
          

          +----------+
          | QUOTE(a) |
          +----------+
          | 'A'      |
          | 'A '     |
          +----------+		
          

          bar Alexander Barkov added a comment - The same problem is repeatable with HEX() instead of BINARY(): DROP TABLE IF EXISTS t1; CREATE TABLE t1 (a VARCHAR (32) CHARACTER SET latin1) ENGINE=InnoDB; INSERT INTO t1 VALUES ( 'A' ),( 'A ' ); SELECT QUOTE(a) FROM t1 ORDER BY a, HEX(a) DESC ; +----------+ | QUOTE(a) | +----------+ | 'A ' | | 'A' | +----------+ DROP TABLE IF EXISTS t1; CREATE TABLE t1 (a VARCHAR (32) CHARACTER SET latin1) ENGINE=ColumnStore; INSERT INTO t1 VALUES ( 'A' ),( 'A ' ); SELECT QUOTE(a) FROM t1 ORDER BY a, HEX(a) DESC ; +----------+ | QUOTE(a) | +----------+ | 'A' | | 'A ' | +----------+
          bar Alexander Barkov added a comment - - edited

          Note, if I remove "col" from the ORDER BY list, it seems to work fine:

          DROP TABLE IF EXISTS t1;
          CREATE TABLE t1 (a VARCHAR(32) CHARACTER SET latin1) ENGINE=ColumnStore;
          INSERT INTO t1 VALUES ('A'),('A ');
          SELECT QUOTE(a) FROM t1 ORDER BY HEX(a);
          

          +----------+
          | QUOTE(a) |
          +----------+
          | 'A'      |
          | 'A '     |
          +----------+
          

          SELECT QUOTE(a) FROM t1 ORDER BY HEX(a) DESC;
          

          +----------+
          | QUOTE(a) |
          +----------+
          | 'A '     |
          | 'A'      |
          +----------+
          

          Without "col" in ORDER BY, it also works fine with BINARY(a):

          SELECT QUOTE(a) FROM t1 ORDER BY  BINARY(a);
          SELECT QUOTE(a) FROM t1 ORDER BY  BINARY(a) DESC;
          

          bar Alexander Barkov added a comment - - edited Note, if I remove "col" from the ORDER BY list, it seems to work fine: DROP TABLE IF EXISTS t1; CREATE TABLE t1 (a VARCHAR (32) CHARACTER SET latin1) ENGINE=ColumnStore; INSERT INTO t1 VALUES ( 'A' ),( 'A ' ); SELECT QUOTE(a) FROM t1 ORDER BY HEX(a); +----------+ | QUOTE(a) | +----------+ | 'A' | | 'A ' | +----------+ SELECT QUOTE(a) FROM t1 ORDER BY HEX(a) DESC ; +----------+ | QUOTE(a) | +----------+ | 'A ' | | 'A' | +----------+ Without "col" in ORDER BY, it also works fine with BINARY(a): SELECT QUOTE(a) FROM t1 ORDER BY BINARY (a); SELECT QUOTE(a) FROM t1 ORDER BY BINARY (a) DESC ;

          People

            bar Alexander Barkov
            bar Alexander Barkov
            Votes:
            0 Vote for this issue
            Watchers:
            1 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.