vitess icon indicating copy to clipboard operation
vitess copied to clipboard

Bug Report: select on alias result in Unknown column \'xx\' in \'field list\' errors

Open shwetha-manvinkurke opened this issue 2 years ago • 0 comments

Overview of the Issue

I have a query with SELECT (alias) as .. that doesn't work. The same query works in v5 but not v13. We are jumping several versions and I am not sure where it exactly broke.

Slack conversation: https://vitess.slack.com/archives/C0PQY0PTK/p1663334176821599

Reproduction Steps

VSchema:

tables: <
  key: "folders"
  value: <
    auto_increment: <
      column: "id"
      use_v_tickets: true
    >
  >
>
tables: <
  key: "form_field_maps"
  value: <
    auto_increment: <
      column: "db_id"
      use_v_tickets: true
    >
  >
>
tables: <
  key: "permissions"
  value: <
    auto_increment: <
      column: "id"
      use_v_tickets: true
    >
  >
>

Schema:

CREATE TABLE `forms` (
  `portalId` bigint(20) unsigned NOT NULL,
  `formType` tinyint(3) unsigned NOT NULL,
  `createdAt` bigint(20) NOT NULL,
  `updatedAt` bigint(20) unsigned NOT NULL,
  `deletedAt` bigint(20) unsigned DEFAULT NULL,
  `active` tinyint(1) NOT NULL,
  `campaignGuid` char(36) CHARACTER SET ascii COLLATE ascii_bin DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `migratedFrom` varchar(45) DEFAULT NULL,
  `parentId` int(10) unsigned NOT NULL DEFAULT '0',
  `jsonPublished` json DEFAULT NULL,
  `jsonDraft` json DEFAULT NULL,
  `visibleToAll` tinyint(1) unsigned DEFAULT NULL,
  `formGuid` char(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
  `customUid` char(36) CHARACTER SET ascii COLLATE ascii_bin DEFAULT NULL,
  `businessUnitId` bigint(20) unsigned NOT NULL DEFAULT '0',
  `portableKey` char(36) CHARACTER SET ascii COLLATE ascii_bin DEFAULT NULL,
  PRIMARY KEY (`formGuid`),
  UNIQUE KEY `unique_formGuid` (`formGuid`),
  UNIQUE KEY `unique_customUid` (`customUid`,`portalId`),
  UNIQUE KEY `unique_portal_id_portable_key` (`portalId`,`portableKey`),
  KEY `portal_id_updated_at_index` (`portalId`,`updatedAt`),
  KEY `portal_id_name_index` (`portalId`,`name`),
  KEY `createdAt_portalId` (`createdAt`,`portalId`),
  KEY `portalId_active_formType` (`portalId`,`active`,`formType`),
  KEY `parentId` (`parentId`,`portalId`,`active`),
  KEY `portalId_parentId_active_formType` (`portalId`,`parentId`,`active`,`formType`),
  KEY `deleted_at_idx` (`deletedAt`),
  KEY `portal_id_portable_key` (`portalId`,`portableKey`),
  KEY `portal_id_business_unit_id` (`portalId`,`businessUnitId`),
  KEY `portal_id_active_form_guid` (`portalId`,`active`,`formGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8

Query:

SELECT /*+ MAX_EXECUTION_TIME(30000) */(SELECT COUNT(formGuid) from forms WHERE active = 1 AND portalId = 123 AND formType IN (_formTypes_0:0,__formTypes_1:2) 
AND name LIKE CONCAT('%',Folder,'%')) as formsTotal,
(SELECT COUNT(id) from folders WHERE deletedAt = 0 AND portalId = 123 AND name LIKE CONCAT('%',Folder,'%')) as foldersTotal,
(SELECT formsTotal) as formsInFolderTotal

if i instead do this, it works

SELECT /*+ MAX_EXECUTION_TIME(30000) */(SELECT COUNT(formGuid) from forms WHERE active = 1 AND portalId = 123 AND formType IN (_formTypes_0:0,__formTypes_1:2) 
AND name LIKE CONCAT('%',Folder,'%')) as formsTotal,
(SELECT COUNT(id) from folders WHERE deletedAt = 0 AND portalId = 123 AND name LIKE CONCAT('%',Folder,'%')) as foldersTotal,
(SELECT /*+ MAX_EXECUTION_TIME(30000) */(SELECT COUNT(formGuid) from forms WHERE active = 1 AND portalId = 123 AND formType IN (_formTypes_0:0,__formTypes_1:2) 
AND name LIKE CONCAT('%',Folder,'%')) as formsInFolderTotal

Binary Version

v13.0.0, commit bc4a960

Operating System and Environment details

Can reproduce on both macos and linux, running unit tests in Java

Log Fragments

Vitess vtgate error: message: "target: test_db_Fi4w2Y.0.primary: vttablet: rpc error: code = NotFound desc = Unknown column \'formsTotal\' in \'field list\' (errno 1054) (sqlstate 42S22) (CallerID: unsecure_grpc_client): Sql: \"select /*+ MAX_EXECUTION_TIME(30000) */ (select COUNT(formGuid) from forms where active = :vtg1 and portalId = :v1 and businessUnitId = :v2 and formType in (:v3, :v4) and `name` like CONCAT(:vtg2, :v5, :vtg2)) as formsTotal, (select COUNT(id) from folders where deletedAt = :vtg3 and portalId = :v6 and `name` like CONCAT(:vtg2, :v7, :vtg2)) as foldersTotal, formsTotal as formsInFolderTotal from dual\", BindVars: {v1: \"type:INT64 value:\\\"123\\\"\"v2: \"type:INT64 value:\\\"1\\\"\"v3: \"type:INT64 value:\\\"0\\\"\"v4: \"type:INT64 value:\\\"2\\\"\"v5: \"type:VARCHAR value:\\\"unit\\\"\"v6: \"type:INT64 value:\\\"123\\\"\"v7: \"type:VARCHAR value:\\\"unit\\\"\"vtg1: \"type:INT64 value:\\\"1\\\"\"vtg2: \"type:VARCHAR value:\\\"%\\\"\"vtg3: \"type:INT64 value:\\\"0\\\"\"}"
code: NOT_FOUND
 [statement:"SELECT(SELECT COUNT(formGuid) from forms WHERE active = 1 AND portalId = :portalId AND /* FILTER:businessUnitId [businessUnitId = :businessUnitId AND ] */formType IN (<formTypes>) AND name LIKE CONCAT('%',:searchName,'%')) as formsTotal,(SELECT COUNT(id) from folders WHERE deletedAt = 0 AND portalId = :portalId AND name LIKE CONCAT('%',:searchName,'%')) as foldersTotal,(SELECT formsTotal) as formsInFolderTotal", located:"SELECT(SELECT COUNT(formGuid) from forms WHERE active = 1 AND portalId = :portalId AND /* FILTER:businessUnitId [businessUnitId = :businessUnitId AND ] */formType IN (:__formTypes_0,:__formTypes_1) AND name LIKE CONCAT('%',:searchName,'%')) as formsTotal,(SELECT COUNT(id) from folders WHERE deletedAt = 0 AND portalId = :portalId AND name LIKE CONCAT('%',:searchName,'%')) as foldersTotal,(SELECT formsTotal) as formsInFolderTotal", rewritten:"SELECT /*+ MAX_EXECUTION_TIME(30000) */(SELECT COUNT(formGuid) from forms WHERE active = 1 AND portalId = ? AND businessUnitId = ? AND formType IN (?,?) AND name LIKE CONCAT('%',?,'%')) as formsTotal,(SELECT COUNT(id) from folders WHERE deletedAt = 0 AND portalId = ? AND name LIKE CONCAT('%',?,'%')) as foldersTotal,(SELECT formsTotal) as formsInFolderTotal", arguments:{ positional:{}, named:{portalId:123,searchName:'unit',__formTypes_0:0,__formTypes_1:2,businessUnitId:1}, finder:[]}]

shwetha-manvinkurke avatar Sep 16 '22 18:09 shwetha-manvinkurke