Bug #2195 | CQueryWindow.cpp:470 'Impossible WHERE noticed after reading const tables' | ||
---|---|---|---|
Submitted: | 23 Dec 2003 0:35 | Modified: | 31 Dec 2003 7:23 |
Reporter: | Svetoslav Agafonkin | Email Updates: | |
Status: | Can't repeat | Impact on me: | |
Category: | MySQLCC | Severity: | S3 (Non-critical) |
Version: | 0.9.4 | OS: | Any (All) |
Assigned to: | Dean Ellis | CPU Architecture: | Any |
[23 Dec 2003 0:35]
Svetoslav Agafonkin
[23 Dec 2003 7:44]
Dean Ellis
I cannot repeat this with our MySQLCC 0.9.4 binary. The result pane shows column headings; the message pane shows the EXPLAIN output. Are you sure you are using 0.9.4?
[28 Dec 2003 3:55]
Svetoslav Agafonkin
Yes, I'm sure, I'm using 0.9.4. Older versions have the bug too of course. The result set has to be of type 'const'. For example with: SELECT * FROM foo WHERE ID = 8; and ID _is primary key, uniq, etc. _ and there is no row with ID = 8 EXPLAIN on such SELECT will return 'Impossible WHERE noticed after reading const tables' One, of course can rewrite the SELECT like this: SELECT * FROM foo WHERE ABS(`ID`-8) > 1 and EXPLAIN will return normal output, and default_table will be loaded with the proper value. Svetoslav Agafonkin
[28 Dec 2003 3:58]
Svetoslav Agafonkin
:-) sorry, I meant: SELECT * FROM foo WHERE ABS(`ID`-8) < 1
[30 Dec 2003 8:42]
Dean Ellis
What version of MySQL are you using?
[30 Dec 2003 22:26]
Svetoslav Agafonkin
4.0.17, 4.0.16 and all 4.0.x I presume same with 3.23.x
[31 Dec 2003 7:23]
Dean Ellis
I still cannot repeat it with MySQLCC 0.9.4. I'll see if someone else can spot something that may be causing it for you.
[20 May 2004 0:51]
Luis Daniel Rangel Tovar
Hi there. Got the same error, on MySQLcc 0.9.2 and 0.9.4 I want to get all records fields except those with a NULL value, so I tought using SELECT * FROM MyTable WHERE FIELD IS NOT NULL or somthing like that, but the result was [MyServer] ERROR 1146: Table 'MyTable.Impossible WHERE noticed after reading const tables' doesn't exist then I tried other ways to do this, doing it in code was like accepting to be defeated, so I insisted on doing it in the query, help files in MySQL home page recommended funtions like ISNULL() and NULL-safe equal, so I tried functions: NOT ISNULL(FIELD) NOT FIELD IS NULL NOT FIELD <=> NULL LENGTH(FIELD) > 0 ( Wich works when needs to return several records, but one or none fails with same error ) and many combinations with some other functions but always got the error above, or no NULL-Field filtration at all. My Server is a SparcII running RedHat 7 and MySQL 3.23.54
[8 Jun 2004 11:43]
Henri-Maxime Ducoulombier
Same issue here. Simple query : SELECT * FROM sales WHERE REFFACTURE = 310273 Explain says : "Impossible WHERE noticed after reading const tables" And mySQLCC has an error : [Localhost] ERREUR 1146: Table 'myBase.impossible where noticed after reading const tables' doesn't exist
[8 Jun 2004 11:51]
Henri-Maxime Ducoulombier
I'd like to add that this bug happen only when selecting * SELECT * FROM myTable WHERE myKey = 123456 if rows with myKey = 123456 doesn't exists, the bug will happen. SELECT myValue FROM myTable WHERE myKey = 123456 Will not bug, but return empty set, which is correct.
[22 Sep 2004 16:47]
Gustavo Branco
I've noticed that to repeat this bug the table must be InnoDB with only one primary key. The query mut execute SELECT * , return empty result set, and in the where clasuse only de primary key should be used. SELECT * FROM foo WHERE ID = 6 ID is the only primary key of foo and the table is InnoDB.
[4 Oct 2004 9:39]
Tudor Olariu
Hello there, I got the same error message, and here are some details : I am using version 4.0.17-nt (source distribution) on windows XP. To produce this bug, do this (for example): 1. create a table named test 2. create a field called UniqueID, varchar(100) 3. create a second field called TextField, varchar(100). Don't insert anything into the table, but do EXPLAIN SELECT * FROM test WHERE TextField='1' and this will result in a table with one row and one column with the message: Impossible WHERE noticed after reading const tables
[24 Nov 2004 13:17]
Christian Zemp
Hello I have the same problem, if I use *. But when I use for example 'SELECT id FROM Component WHERE id=6', then it's OK! if you want use *, try this: SELECT Component.* FROM Component WHERE id=6'
[14 Dec 2004 22:29]
Jonathan Lampe
Here's my example (on MySQL 4.0.22-nt-log): EXPLAIN SELECT Relationship FROM FolderPerms WHERE SessionID='0yqus5njv01nhr55wthsft45' AND ID='496532'; | Impossible WHERE noticed after reading const tables | mysql> SELECT Relationship FROM FolderPerms WHERE SessionID='0yqus5njv01nhr55wth sft45' AND ID='496532'; Empty set (0.00 sec) mysql> desc folderperms; +--------------+--------------+------+-----+---------------------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------------------+-------+ | SessionID | varchar(32) | | PRI | | | | PermTime | datetime | YES | MUL | 0000-00-00 00:00:00 | | | Relationship | int(11) | | | 0 | | | ID | int(11) | | PRI | 0 | | | InstID | int(11) | | | 0 | | | Name | varchar(64) | | | | | | FolderPath | varchar(255) | | | | | +--------------+--------------+------+-----+---------------------+-------+ 7 rows in set (0.00 sec)
[13 Jul 2007 13:32]
toni peperoni
I received the same error while executing one of my querys, but i found another solution: I tried to put in a list of possible values the values of the variable in the where, using an IN command: select * from table a where a.col IN (2,4,6,7,8) It runs. Maybe isn't the best solution but it functions.