-
Notifications
You must be signed in to change notification settings - Fork 5.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
INFORMATION_SCHEMA.COLUMNS Incorrect subquery filtering results #45231
Labels
Comments
The plan seems not right:
Comparing with
|
/assign @hawkingrei |
13 tasks
It has been fixed by #40935 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Bug Report
Please answer these questions before submitting your issue. Thanks!
1. Minimal reproduce step (Required)
select * from
(select 6 id from INFORMATION_SCHEMA.COLUMNS) t
where t.id =1 ;
2. What did you expect to see? (Required)
null
3. What did you see instead (Required)
a lot of 6
4. What is your TiDB version? (Required)
6.5.3
Release Version: v6.5.3
Edition: Community
Git Commit Hash: 71e6696
Git Branch: heads/refs/tags/v6.5.3
UTC Build Time: 2023-06-12 13:52:32
GoVersion: go1.19.9
Race Enabled: false
TiKV Min Version: 6.2.0-alpha
Check Table Before Drop: false
Store: tikv
Since upgrading from 4.0.15 to 6.5.3, .net's ef framework update model failed.
The reason is that there is a sql query result in 4.0.15 is correct, but the query result in 6.5.3 is wrong.
The original sql statement is:
SELECT
UnionAll1
.C5
ASC1
,Extent1
.Catalog
,Extent1
.Schema
,Extent1
.Name
,UnionAll1
.Name
ASC2
,UnionAll1
.C1
ASC3
,UnionAll1
.IsNullable
ASC4
,UnionAll1
.TypeName
ASC5
,UnionAll1
.C2
ASC6
,UnionAll1
.C3
ASC7
,UnionAll1
.DateTimePrecision
ASC8
,UnionAll1
.C4
ASC9
,UnionAll1
.IsIdentity
ASC10
,UnionAll1
.IsStoreGenerated
ASC11
, CASE WHEN (Project5
.C2
IS NOT NULL) THEN (Project5
.C2
) ELSE (0) END ASC12
FROM ( SELECT /* Tables / CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) ASId
, TABLE_CATALOG ASCatalog
, TABLE_SCHEMA ASSchema
, TABLE_NAME ASName
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA=schema() ) ASExtent1
INNER JOIN ((SELECTExtent2
.Id
,Extent2
.Name
,Extent2
.Ordinal
ASC1
,Extent2
.IsNullable
,Extent2
.TypeName
,Extent2
.MaxLength
ASC2
,Extent2
.Precision
ASC3
,Extent2
.DateTimePrecision
,Extent2
.Scale
ASC4
,Extent2
.IsIdentity
,Extent2
.IsStoreGenerated
, 0 ASC5
,Extent2
.ParentId
FROM ( SELECT / Table columns / CONCAT(TABLE_SCHEMA, '.', TABLE_NAME, '.', COLUMN_NAME) ASId
, CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) ASParentId
, COLUMN_NAME ASName
, ORDINAL_POSITION ASOrdinal
, CASE IS_NULLABLE WHEN 'YES' THEN 1 ELSE 0 END ASIsNullable
, IF(LEFT(COLUMN_TYPE,10) = 'tinyint(1)', 'bool', IF (LEFT(COLUMN_TYPE,10) = 'binary(16)' OR LEFT(COLUMN_TYPE,8) = 'char(36)', 'guid', IF (INSTR(COLUMN_TYPE, 'unsigned') = 0, DATA_TYPE, CONCAT('u', DATA_TYPE)))) ASTypeName
, IF (CHARACTER_MAXIMUM_LENGTH > 2147483647, 2147483647, CHARACTER_MAXIMUM_LENGTH) ASMaxLength
, CASE WHEN NUMERIC_PRECISION > 0 THEN CAST(NUMERIC_PRECISION AS CHAR) WHEN DATETIME_PRECISION > 0 THEN CAST(DATETIME_PRECISION AS CHAR) ELSE 0 END ASPrecision
, DATETIME_PRECISION ASDateTimePrecision
, NUMERIC_SCALE ASScale
, NULL ASCollationCatalog
, NULL ASCollationSchema
, COLLATION_NAME ASCollationName
, NULL ASCharacterSetCatalog
, NULL ASCharacterSetSchema
, CHARACTER_SET_NAME ASCharacterSetName
, 0 ASIsMultiSet
, CASE WHEN COLUMN_DEFAULT LIKE 'CURRENT_TIMESTAMP' THEN 1 WHEN EXTRA LIKE '%auto%' THEN 1 ELSE 0 END ASIsIdentity
, CASE WHEN COLUMN_DEFAULT LIKE 'CURRENT_TIMESTAMP' THEN 1 WHEN EXTRA LIKE '%auto%' THEN 1 ELSE 0 END ASIsStoreGenerated
, COLUMN_DEFAULT ASDefault
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=schema() ) ASExtent2
) UNION ALL (SELECTExtent3
.Id
,Extent3
.Name
,Extent3
.Ordinal
ASC1
,Extent3
.IsNullable
,Extent3
.TypeName
,Extent3
.MaxLength
ASC2
,Extent3
.Precision
ASC3
,Extent3
.DateTimePrecision
,Extent3
.Scale
ASC4
,Extent3
.IsIdentity
,Extent3
.IsStoreGenerated
, 6 ASC5
,Extent3
.ParentId
FROM ( SELECT / View columns / CONCAT(TABLE_SCHEMA, '.', TABLE_NAME, '.', COLUMN_NAME) ASId
, CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) ASParentId
, COLUMN_NAME ASName
, ORDINAL_POSITION ASOrdinal
, CASE IS_NULLABLE WHEN 'YES' THEN 1 ELSE 0 END ASIsNullable
, IF(LEFT(COLUMN_TYPE,10) = 'tinyint(1)', 'bool', IF (LEFT(COLUMN_TYPE,10) = 'binary(16)' OR LEFT(COLUMN_TYPE,8) = 'char(36)', 'guid', IF (INSTR(COLUMN_TYPE, 'unsigned') = 0, DATA_TYPE, CONCAT('u', DATA_TYPE)))) ASTypeName
, IF (CHARACTER_MAXIMUM_LENGTH > 2147483647, 2147483647, CHARACTER_MAXIMUM_LENGTH) ASMaxLength
, CASE WHEN NUMERIC_PRECISION > 0 THEN CAST(NUMERIC_PRECISION AS UNSIGNED INTEGER) WHEN DATETIME_PRECISION > 0 THEN CAST(DATETIME_PRECISION AS UNSIGNED INTEGER) ELSE 0 END ASPrecision
, 0 ASDateTimePrecision
, NUMERIC_SCALE ASScale
, NULL ASCollationCatalog
, NULL ASCollationSchema
, COLLATION_NAME ASCollationName
, NULL ASCharacterSetCatalog
, NULL ASCharacterSetSchema
, CHARACTER_SET_NAME ASCharacterSetName
, 0 ASIsMultiSet
, CASE WHEN COLUMN_DEFAULT LIKE 'CURRENT_TIMESTAMP' THEN 1 WHEN EXTRA LIKE '%auto%' THEN 1 ELSE 0 END ASIsIdentity
, CASE WHEN COLUMN_DEFAULT LIKE 'CURRENT_TIMESTAMP' THEN 1 WHEN EXTRA LIKE '%auto%' THEN 1 ELSE 0 END ASIsStoreGenerated
, COLUMN_DEFAULT ASDefault
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=schema() ) ASExtent3
)) ASUnionAll1
ON (0 =UnionAll1
.C5
) AND (Extent1
.Id
=UnionAll1
.ParentId
) LEFT OUTER JOIN (SELECTUnionAll2
.Id
ASC1
, 1 ASC2
FROM ( SELECT / Constraints / CONCAT(CONSTRAINT_SCHEMA, '.', TABLE_NAME, '.', CONSTRAINT_NAME) ASId
, CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) ASParentId
, CONSTRAINT_NAME ASName
, CONSTRAINT_TYPE ASConstraintType
, 0 ASIsDeferrable
, 0 ASIsInitiallyDeferred
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE != 'CHECK' AND TABLE_SCHEMA=schema() ) ASExtent4
INNER JOIN ((SELECT 7 ASC1
,Extent5
.ConstraintId
,Extent6
.Id
FROM ( SELECT / Constraint columns / CONCAT(CONSTRAINT_SCHEMA, '.', TABLE_NAME, '.', CONSTRAINT_NAME) ASConstraintId
, CONCAT(TABLE_SCHEMA, '.', TABLE_NAME, '.', COLUMN_NAME) ASColumnId
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA=schema() ) ASExtent5
INNER JOIN ( SELECT / Table columns / CONCAT(TABLE_SCHEMA, '.', TABLE_NAME, '.', COLUMN_NAME) ASId
, CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) ASParentId
, COLUMN_NAME ASName
, ORDINAL_POSITION ASOrdinal
, CASE IS_NULLABLE WHEN 'YES' THEN 1 ELSE 0 END ASIsNullable
, IF(LEFT(COLUMN_TYPE,10) = 'tinyint(1)', 'bool', IF (LEFT(COLUMN_TYPE,10) = 'binary(16)' OR LEFT(COLUMN_TYPE,8) = 'char(36)', 'guid', IF (INSTR(COLUMN_TYPE, 'unsigned') = 0, DATA_TYPE, CONCAT('u', DATA_TYPE)))) ASTypeName
, IF (CHARACTER_MAXIMUM_LENGTH > 2147483647, 2147483647, CHARACTER_MAXIMUM_LENGTH) ASMaxLength
, CASE WHEN NUMERIC_PRECISION > 0 THEN CAST(NUMERIC_PRECISION AS CHAR) WHEN DATETIME_PRECISION > 0 THEN CAST(DATETIME_PRECISION AS CHAR) ELSE 0 END ASPrecision
, DATETIME_PRECISION ASDateTimePrecision
, NUMERIC_SCALE ASScale
, NULL ASCollationCatalog
, NULL ASCollationSchema
, COLLATION_NAME ASCollationName
, NULL ASCharacterSetCatalog
, NULL ASCharacterSetSchema
, CHARACTER_SET_NAME ASCharacterSetName
, 0 ASIsMultiSet
, CASE WHEN COLUMN_DEFAULT LIKE 'CURRENT_TIMESTAMP' THEN 1 WHEN EXTRA LIKE '%auto%' THEN 1 ELSE 0 END ASIsIdentity
, CASE WHEN COLUMN_DEFAULT LIKE 'CURRENT_TIMESTAMP' THEN 1 WHEN EXTRA LIKE '%auto%' THEN 1 ELSE 0 END ASIsStoreGenerated
, COLUMN_DEFAULT ASDefault
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=schema() ) ASExtent6
ONExtent6
.Id
=Extent5
.ColumnId
) UNION ALL (SELECT 11 ASC1
,Extent7
.ConstraintId
,Extent8
.Id
FROM ( SELECT / View constraint columns / NULL ASConstraintId
, NULL ASColumnId
) ASExtent7
INNER JOIN ( SELECT / View columns */ CONCAT(TABLE_SCHEMA, '.', TABLE_NAME, '.', COLUMN_NAME) ASId
, CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) ASParentId
, COLUMN_NAME ASName
, ORDINAL_POSITION ASOrdinal
, CASE IS_NULLABLE WHEN 'YES' THEN 1 ELSE 0 END ASIsNullable
, IF(LEFT(COLUMN_TYPE,10) = 'tinyint(1)', 'bool', IF (LEFT(COLUMN_TYPE,10) = 'binary(16)' OR LEFT(COLUMN_TYPE,8) = 'char(36)', 'guid', IF (INSTR(COLUMN_TYPE, 'unsigned') = 0, DATA_TYPE, CONCAT('u', DATA_TYPE)))) ASTypeName
, IF (CHARACTER_MAXIMUM_LENGTH > 2147483647, 2147483647, CHARACTER_MAXIMUM_LENGTH) ASMaxLength
, CASE WHEN NUMERIC_PRECISION > 0 THEN CAST(NUMERIC_PRECISION AS UNSIGNED INTEGER) WHEN DATETIME_PRECISION > 0 THEN CAST(DATETIME_PRECISION AS UNSIGNED INTEGER) ELSE 0 END ASPrecision
, 0 ASDateTimePrecision
, NUMERIC_SCALE ASScale
, NULL ASCollationCatalog
, NULL ASCollationSchema
, COLLATION_NAME ASCollationName
, NULL ASCharacterSetCatalog
, NULL ASCharacterSetSchema
, CHARACTER_SET_NAME ASCharacterSetName
, 0 ASIsMultiSet
, CASE WHEN COLUMN_DEFAULT LIKE 'CURRENT_TIMESTAMP' THEN 1 WHEN EXTRA LIKE '%auto%' THEN 1 ELSE 0 END ASIsIdentity
, CASE WHEN COLUMN_DEFAULT LIKE 'CURRENT_TIMESTAMP' THEN 1 WHEN EXTRA LIKE '%auto%' THEN 1 ELSE 0 END ASIsStoreGenerated
, COLUMN_DEFAULT ASDefault
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=schema() ) ASExtent8
ONExtent8
.Id
=Extent7
.ColumnId
)) ASUnionAll2
ON (7 =UnionAll2
.C1
) AND (Extent4
.Id
=UnionAll2
.ConstraintId
) WHEREExtent4
.ConstraintType
= 'PRIMARY KEY') ASProject5
ONUnionAll1
.Id
=Project5
.C1
WHEREExtent1
.Name
LIKE '%'The text was updated successfully, but these errors were encountered: