Bug Report
In wordpress 5.5.1, this query is emitted:
SELECT SQL_CALC_FOUND_ROWS DISTINCT posts.ID FROM posts WHERE 1=1 AND posts.post_type = 'post' AND ((posts.post_status = 'future')) ORDER BY posts.post_date DESC LIMIT 0, 10;
This causes a syntax error, it works in mysql:
MySQL [www_database]> SELECT SQL_CALC_FOUND_ROWS DISTINCT posts.ID FROM posts WHERE 1=1 AND posts.post_type = 'post' AND ((posts.post_status = 'future')) ORDER BY posts.post_date DESC LIMIT 0, 10;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 35 near "DISTINCT posts.ID FROM posts WHERE 1=1 AND posts.post_type = 'post' AND ((posts.post_status = 'future')) ORDER BY posts.post_date DESC LIMIT 0, 10"
MySQL [www_database]>
I have looked at https://docs.pingcap.com/tidb/v2.1/sql-statement-select/ which says:
SQL_CALC_FOUND_ROWS | To guarantee compatibility with MySQL, TiDB parses this syntax, but will ignore it.
-- | --
but it may not w/ distinct?
1. Minimal reproduce step (Required)
+------------------------+
| Tables_in_www_database |
+------------------------+
| commentmeta |
| comments |
| links |
| manage_schedule |
| options |
| postmeta |
| posts |
| sm_sync |
| term_relationships |
| term_taxonomy |
| termmeta |
| terms |
| usermeta |
| users |
| wpcsplog |
+------------------------+
CREATE TABLE `posts` (
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`post_author` bigint(20) unsigned NOT NULL DEFAULT 0,
`post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`post_content` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
`post_title` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
`post_excerpt` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
`post_status` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'publish',
`comment_status` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'open',
`ping_status` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'open',
`post_password` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
`post_name` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
`to_ping` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
`pinged` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
`post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`post_content_filtered` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
`post_parent` bigint(20) unsigned NOT NULL DEFAULT 0,
`guid` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
`menu_order` int(11) NOT NULL DEFAULT 0,
`post_type` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'post',
`post_mime_type` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
`comment_count` bigint(20) NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`),
KEY `post_name` (`post_name`(191)),
KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`),
KEY `post_parent` (`post_parent`),
KEY `post_author` (`post_author`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci AUTO_INCREMENT=124960 |
2. What did you expect to see? (Required)
I expected 0 rows and no sql errors
3. What did you see instead (Required)
sql syntax error around distinc
4. What is your TiDB version? (Required)
MySQL [www_database]> SHOW VARIABLES LIKE "%version%";
+-------------------------+--------------------------------------------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------------------------------------------+
| innodb_version | 5.6.25 |
| protocol_version | 10 |
| tidb_row_format_version | 2 |
| tls_version | TLSv1,TLSv1.1,TLSv1.2 |
| version | 5.7.25-TiDB-v4.0.6 |
| version_comment | TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible |
| version_compile_machine | x86_64 |
| version_compile_os | osx10.8 |
+-------------------------+--------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tidb_version() |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Release Version: v4.0.6
Edition: Community
Git Commit Hash: 51d365fc45fdfc039eb204a96268c5bd1c55075f
Git Branch: heads/refs/tags/v4.0.6
UTC Build Time: 2020-09-15 09:50:30
GoVersion: go1.13
Race Enabled: false
TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
Check Table Before Drop: false |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Bug Report
In wordpress 5.5.1, this query is emitted:
SELECT SQL_CALC_FOUND_ROWS DISTINCT posts.ID FROM posts WHERE 1=1 AND posts.post_type = 'post' AND ((posts.post_status = 'future')) ORDER BY posts.post_date DESC LIMIT 0, 10;This causes a syntax error, it works in mysql:
I have looked at https://docs.pingcap.com/tidb/v2.1/sql-statement-select/ which says:
but it may not w/ distinct?
1. Minimal reproduce step (Required)
2. What did you expect to see? (Required)
I expected 0 rows and no sql errors
3. What did you see instead (Required)
sql syntax error around distinc
4. What is your TiDB version? (Required)