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

Integer literal is typed as MYSQL_TYPE_LONG



    • Bug
    • Status: Closed (View Workflow)
    • Minor
    • Resolution: Not a Bug
    • 10.3.7
    • N/A
    • Data types
    • mariadb:10.3.7 Docker image, i.e., Debian Jessie


      In MariaDB 10.2 (and MySQL 5.7, MySQL 8.0), executing SELECT 1; returns a text result set where the column definition packet specifies a type of MYSQL_TYPE_LONGLONG (0x08), i.e., a 64-bit integer.

      In MariaDB 10.3, the same query returns a text result set with the type MYSQL_TYPE_LONG (0x03), i.e., a 32-bit integer.

      I've attached two packet captures that show the difference: dump-10_2.pcap and dump-10_3.pcap.

      This could be a breaking protocol change for strongly-typed clients. For example, in .NET (with the Connector/NET or MySqlConnector libraries), the following code has a breaking change:

      using (var connection = new MySqlConnection("..."))
      	using (var command = new MySqlCommand("SELECT 1;", connection))
      		var result = command.ExecuteScalar();
      		// result.GetType() is System.Int64 in MariaDB 10.2, System.Int32 in MariaDB 10.3
      		// throws an InvalidCastException with MariaDB 10.3 because .NET cannot unbox an int directly into a long
      		var numericResult = (long) command.ExecuteScalar();

      In .NET, there are workarounds, such as Convert.ToInt32. And perhaps this kind of statement is rare in practice. And while the protocol documentation doesn't specify (AFAIK) how numeric literals should be represented on the wire, I didn't find documentation of this as a deliberate change in behaviour.

      Note that SELECT 100000000000; (or some other number outside of the range of a 32-bit signed integer) will automatically promote the type in the result set to LONGLONG.


        Issue Links



              bar Alexander Barkov
              bgrainger Bradley Grainger
              0 Vote for this issue
              6 Start watching this issue



                Git Integration

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