Bug #8230 select query seems return cached result
Submitted: 1 Feb 2005 7:49 Modified: 1 Feb 2005 17:20
Reporter: [ name withheld ] Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server Severity:S1 (Critical)
Version:4.1.9 OS:Windows (Windows)
Assigned to: CPU Architecture:Any

[1 Feb 2005 7:49] [ name withheld ]
Description:
Environment:

mysqld 4.1.9 on XP
J-connector (mysql-connector-java-3.0.15-ga-bin.jar)
Website: http://www.websina.com/bugzerocn/jsp/login.jsp

The latest JConnector still has the same problem.
However, Mysql 3.58 (on linux) has no problem using
the same jdbc.

A note, the website is now using 3.58 and will not
have this problem.

How to repeat:
On that web site, 
1. select an issue
2. edit the issue and submit
3. click on that issue again, it loads, but the latest edit does not appear.
4. refresh (using browser), it reload the page and the latest edit version
    appears (in the ausdit trail).
5. refresh again, the latest trail dispears again.

Here is the log on mysqld:

TCP Port: 3306, Named Pipe: MySQL
Time                 Id Command    Argument
050129 11:59:07	      1 Connect     root@localhost on 
050129 11:59:24	      1 Query       show variables

050129 12:14:38	      1 Query       select   trail_id,
  entry_id,
  category,
  severity,
  priority,
  state,
  author,
  responsible,
  detail,
  ts,
  cc_mail
FROM demo_trail
WHERE
  entry_id=6
050129 12:15:53	      1 Query       select   trail_id,
  entry_id,
  category,
  severity,
  priority,
  state,
  author,
  responsible,
  detail,
  ts,
  cc_mail
FROM demo_trail
WHERE
  entry_id=7
050129 12:33:56	      4 Connect     bugzero@localhost on bugzero0_db
		      4 Init DB     bugzero0_db
		      4 Query       SELECT 1
		      4 Query       SET NAMES latin1
		      4 Query       SET character_set_results = NULL
		      4 Query       select round('inf'), round('-inf'), round('nan')
		      4 Query       SHOW VARIABLES
		      4 Query       SHOW COLLATION
		      4 Query       SET autocommit=1
		      4 Query       SET autocommit=0
		      4 Query       SELECT
  person_id,
  username, 
  group_code,
  fullname,
  email,
  default_project,
  signature,
  browse_mode
FROM person
WHERE
  username='dev'
  AND password='E77989ED21758E78331B20E477FC5582'
		      4 Query       SELECT
  name, group_type
FROM groupcode
		      4 Query       SELECT
  p.project_id,
  project_name,
  a.access_code
FROM project p LEFT JOIN accesscode a 
  ON (p.project_id=a.project_id and a.person_id=6)
  WHERE (p.project_status IS NULL AND access_code IS NOT NULL)
    OR (p.project_status='A' AND access_code IS NOT NULL)
    OR p.project_status='P'
		      4 Query       SELECT
  query_id,
  query_name
FROM demo_query
WHERE
  person_id=6
050129 12:33:57	      4 Query       SELECT
  project_name,
  project_ssn,
  project_desc,
  project_status,
  email,
  email_subject,
  email_body
FROM project
WHERE
  project_id='demo'
		      4 Query       SELECT
  field_name,
  item,
  item_order
FROM fieldset
WHERE project_id='demo'
ORDER BY field_name,item_order
		      4 Query       SELECT
  field_name,
  field_label,
  max_length,
  mandatory,
  denied_groups,
  ro_groups
FROM fieldname
WHERE project_id='demo'
		      4 Query       SELECT
  field_order
FROM fieldorder
WHERE project_id='demo'
		      4 Query       SELECT
  accesscode.person_id,
  access_code,
  username,
  fullname,
  email
FROM accesscode, person
WHERE project_id='demo'
  AND accesscode.person_id=person.person_id
		      4 Query       SELECT
  assignment.person_id,
  assignable,
  sort_order,
  username
FROM assignment, person
WHERE project_id='demo'
  AND assignment.person_id=person.person_id
ORDER BY sort_order
		      4 Query       SELECT
  w_name,
  w_type,
  w_allowed
FROM workflow
WHERE project_id='demo'
		      4 Query       SELECT
  query_id,
  query_name,
  show_columns,
  show_numbers,
  sort_column,
  sort_order,
  query_usage
FROM demo_query
WHERE person_id=6
  AND query_usage=1
		      4 Query       SELECT
  query_id,
  query_name,
  show_columns,
  show_numbers,
  sort_column,
  sort_order,
  query_usage
FROM demo_query
WHERE person_id=6
  AND query_usage=1
		      4 Query       SELECT SQL_BIG_RESULT
  issue.entry_id,
  issue.author,
  issue.ts as arrived_date,
  issue.synopsis,
  issue.assignable,
  issue.field_1,
  issue.field_2,
  issue.field_3,
  issue.field_4,
  trail.trail_id,
  trail.category,
  trail.severity,
  trail.priority,
  trail.state,
  trail.responsible,
  trail.ts as last_modified
FROM demo_entry issue, demo_trail trail
LEFT JOIN demo_trail t2
  ON (t2.entry_id=issue.entry_id  AND t2.trail_id>trail.trail_id)
WHERE trail.entry_id=issue.entry_id AND t2.trail_id IS NULL
AND trail.state<>'closed'
AND (trail.responsible='dev' OR issue.author='dev' )
ORDER BY trail.ts DESC
		      5 Connect     bugzero@localhost on bugzero0_db
		      5 Init DB     bugzero0_db
		      5 Query       SELECT 1
		      5 Query       SET NAMES latin1
		      5 Query       SET character_set_results = NULL
		      5 Query       select round('inf'), round('-inf'), round('nan')
		      5 Query       SHOW VARIABLES
		      5 Query       SHOW COLLATION
		      5 Query       SET autocommit=1
		      5 Query       SET autocommit=0
		      5 Query       SELECT
  group_code, 
  person_id,
  username,
  password,
  fullname,
  email,
  default_project
FROM person
WHERE
  group_code <> 'admin'
050129 12:34:09	      4 Query       UPDATE SEQUENCE SET SEQ_COUNT=SEQ_COUNT+5 WHERE SEQ_NAME='demo_entry_seq'
		      4 Query       SELECT SEQ_COUNT FROM SEQUENCE WHERE SEQ_NAME='demo_entry_seq'
		      4 Query       commit
		      5 Query       INSERT INTO demo_entry 
  (author,
  ts,
  synopsis,
  assignable,
  field_1,
  field_2,
  field_3,
  field_4,
  field_5,
  field_6,
  field_7,
  field_8,
  field_9,
  field_10,
  field_11,
  field_12,
  field_13,
  field_14,
  field_15,
  field_16,
  field_17,
  field_18,
  field_19,
  field_20,
  entry_id)
VALUES
  ('dev', '2005-01-29 12:34:09', 'sdsd', 'gui', 'alpha1.0', 'build1000', 'Windows 2000', 'Weblogic', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11)
		      4 Query       UPDATE SEQUENCE SET SEQ_COUNT=SEQ_COUNT+5 WHERE SEQ_NAME='demo_trail_seq'
		      4 Query       SELECT SEQ_COUNT FROM SEQUENCE WHERE SEQ_NAME='demo_trail_seq'
		      4 Query       commit
		      5 Query       INSERT INTO demo_trail 
  (entry_id,
  category,
  severity,
  priority,
  state,
  author,
  responsible,
  detail,
  ts,
  cc_mail,
  trail_id)
VALUES
  (11, 'sw-bug', 'normal', 'medium', 'new', 'dev', 'guest', 'sds', '2005-01-29 12:34:09', 'no_email', 51)
		      5 Query       commit
050129 12:34:12	      4 Query       SELECT
  entry_id,
  author,
  ts, 
  synopsis,
  assignable,
  field_1,
  field_2,
  field_3,
  field_4,
  field_5,
  field_6,
  field_7,
  field_8,
  field_9,
  field_10,
  field_11,
  field_12,
  field_13,
  field_14,
  field_15,
  field_16,
  field_17,
  field_18,
  field_19,
  field_20
FROM demo_entry
WHERE
  entry_id=11
		      4 Query       SELECT
  trail_id,
  entry_id,
  category,
  severity,
  priority,
  state,
  author,
  responsible,
  detail,
  ts,
  cc_mail
FROM demo_trail
WHERE
  entry_id=11
ORDER BY trail_id
		      5 Query       SELECT 
  filename,
  file_size
FROM demo_file 
WHERE trail_id=51
050129 12:34:35	      5 Query       SELECT trail.entry_id,
       trail.trail_id as id,
       trail.responsible,
       trail.state
FROM demo_trail trail, demo_trail trail0
WHERE trail.entry_id IN (11)
  AND trail0.entry_id=trail.entry_id
GROUP BY
  trail.trail_id
HAVING id = MAX(trail0.trail_id)
		      4 Query       INSERT INTO demo_trail 
  (entry_id,
  category,
  severity,
  priority,
  state,
  author,
  responsible,
  detail,
  ts,
  cc_mail,
  trail_id)
VALUES
  (11, 'sw-bug', 'normal', 'medium', 'analyzed', 'dev', 'guest', 'sds', '2005-01-29 12:34:35', 'no_email', 52)
		      4 Query       commit
050129 12:34:46	      5 Query       SELECT
  entry_id,
  author,
  ts, 
  synopsis,
  assignable,
  field_1,
  field_2,
  field_3,
  field_4,
  field_5,
  field_6,
  field_7,
  field_8,
  field_9,
  field_10,
  field_11,
  field_12,
  field_13,
  field_14,
  field_15,
  field_16,
  field_17,
  field_18,
  field_19,
  field_20
FROM demo_entry
WHERE
  entry_id=11
		      5 Query       SELECT
  trail_id,
  entry_id,
  category,
  severity,
  priority,
  state,
  author,
  responsible,
  detail,
  ts,
  cc_mail
FROM demo_trail
WHERE
  entry_id=11
ORDER BY trail_id
		      4 Query       SELECT 
  filename,
  file_size
FROM demo_file 
WHERE trail_id=51
050129 12:35:20	      4 Query       SELECT
  entry_id,
  author,
  ts, 
  synopsis,
  assignable,
  field_1,
  field_2,
  field_3,
  field_4,
  field_5,
  field_6,
  field_7,
  field_8,
  field_9,
  field_10,
  field_11,
  field_12,
  field_13,
  field_14,
  field_15,
  field_16,
  field_17,
  field_18,
  field_19,
  field_20
FROM demo_entry
WHERE
  entry_id=11
		      4 Query       SELECT
  trail_id,
  entry_id,
  category,
  severity,
  priority,
  state,
  author,
  responsible,
  detail,
  ts,
  cc_mail
FROM demo_trail
WHERE
  entry_id=11
ORDER BY trail_id
		      5 Query       SELECT 
  filename,
  file_size
FROM demo_file 
WHERE trail_id=51
		      5 Query       SELECT 
  filename,
  file_size
FROM demo_file 
WHERE trail_id=52
050129 12:36:10	      5 Query       SELECT
  entry_id,
  author,
  ts, 
  synopsis,
  assignable,
  field_1,
  field_2,
  field_3,
  field_4,
  field_5,
  field_6,
  field_7,
  field_8,
  field_9,
  field_10,
  field_11,
  field_12,
  field_13,
  field_14,
  field_15,
  field_16,
  field_17,
  field_18,
  field_19,
  field_20
FROM demo_entry
WHERE
  entry_id=11
		      5 Query       SELECT
  trail_id,
  entry_id,
  category,
  severity,
  priority,
  state,
  author,
  responsible,
  detail,
  ts,
  cc_mail
FROM demo_trail
WHERE
  entry_id=11
ORDER BY trail_id
		      4 Query       SELECT 
  filename,
  file_size
FROM demo_file 
WHERE trail_id=51
050129 12:58:32	      1 Query       show variables
050129 13:05:58	      1 Query       select .get(Schema.CC_MAIL)
050129 15:08:42	      4 Query       SELECT
  entry_id,
  author,
  ts, 
  synopsis,
  assignable,
  field_1,
  field_2,
  field_3,
  field_4,
  field_5,
  field_6,
  field_7,
  field_8,
  field_9,
  field_10,
  field_11,
  field_12,
  field_13,
  field_14,
  field_15,
  field_16,
  field_17,
  field_18,
  field_19,
  field_20
FROM demo_entry
WHERE
  entry_id=11
		      4 Query       SELECT
  trail_id,
  entry_id,
  category,
  severity,
  priority,
  state,
  author,
  responsible,
  detail,
  ts,
  cc_mail
FROM demo_trail
WHERE
  entry_id=11
ORDER BY trail_id
		      5 Query       SELECT 
  filename,
  file_size
FROM demo_file 
WHERE trail_id=51
		      5 Query       SELECT 
  filename,
  file_size
FROM demo_file 
WHERE trail_id=52
050129 15:08:52	      5 Query       SELECT
  entry_id,
  author,
  ts, 
  synopsis,
  assignable,
  field_1,
  field_2,
  field_3,
  field_4,
  field_5,
  field_6,
  field_7,
  field_8,
  field_9,
  field_10,
  field_11,
  field_12,
  field_13,
  field_14,
  field_15,
  field_16,
  field_17,
  field_18,
  field_19,
  field_20
FROM demo_entry
WHERE
  entry_id=11
		      5 Query       SELECT
  trail_id,
  entry_id,
  category,
  severity,
  priority,
  state,
  author,
  responsible,
  detail,
  ts,
  cc_mail
FROM demo_trail
WHERE
  entry_id=11
ORDER BY trail_id
		      4 Query       SELECT 
  filename,
  file_size
FROM demo_file 
WHERE trail_id=51
050129 18:25:37	      4 Query       SELECT
  entry_id,
  author,
  ts, 
  synopsis,
  assignable,
  field_1,
  field_2,
  field_3,
  field_4,
  field_5,
  field_6,
  field_7,
  field_8,
  field_9,
  field_10,
  field_11,
  field_12,
  field_13,
  field_14,
  field_15,
  field_16,
  field_17,
  field_18,
  field_19,
  field_20
FROM demo_entry
WHERE
  entry_id=11
		      4 Query       SELECT
  trail_id,
  entry_id,
  category,
  severity,
  priority,
  state,
  author,
  responsible,
  detail,
  ts,
  cc_mail
FROM demo_trail
WHERE
  entry_id=11
ORDER BY trail_id
		      5 Query       SELECT 
  filename,
  file_size
FROM demo_file 
WHERE trail_id=51
		      5 Query       SELECT 
  filename,
  file_size
FROM demo_file 
WHERE trail_id=52
050129 18:26:04	      5 Query       SELECT
  entry_id,
  author,
  ts, 
  synopsis,
  assignable,
  field_1,
  field_2,
  field_3,
  field_4,
  field_5,
  field_6,
  field_7,
  field_8,
  field_9,
  field_10,
  field_11,
  field_12,
  field_13,
  field_14,
  field_15,
  field_16,
  field_17,
  field_18,
  field_19,
  field_20
FROM demo_entry
WHERE
  entry_id=11
		      5 Query       SELECT
  trail_id,
  entry_id,
  category,
  severity,
  priority,
  state,
  author,
  responsible,
  detail,
  ts,
  cc_mail
FROM demo_trail
WHERE
  entry_id=11
ORDER BY trail_id
		      4 Query       SELECT 
  filename,
  file_size
FROM demo_file 
WHERE trail_id=51

----------------------------------------------
As is seen, the page load involves two connection, ID=4 and 5.
One is before insert of the (trail), and the other one is after.
Say, it first use ID =4 connection and load up issue,
which consists multiple rows of trails.
and returns the connection,
it then uses ID=5 to load up some other things.
When it refresh, it uses ID=5 to load up the issue,
and used ID=4 to load up other things...
And the issue is loaded differently.

Even if wait for one hour, still the same thing....

ID=1 is a mysql client, and when I do the same query,
it always gave the correct result.

A note, the website is now using 3.58 and will not
have this problem.
[1 Feb 2005 16:42] [ name withheld ]
I am sorry that I didn't add a summary of the problem:

For a give query (a simple select statement), if the query is done
using two different connections (from a connection pool),
and if there is an insert in between, then, the query
result is different according to which connection
is used to do the select statement. For example,
the original select returns 5 rows, and then, there is an
insert, so the select should now returns 6. But it might not,
it may still return 5 depending what connection I am
using. If you keep doing the select, you will have
results of 5 and 6 (rotating...) forever.

This is done using mysqld 4.1.9 + JConnector.
Tried use latest JConnector, no effect.
Tried to use mysqld 3.58. no such problem noticed.
[1 Feb 2005 17:20] Mark Matthews
According to the query log, you're using transactions (i.e. setAutoCommit(false)). If you're using InnoDB tables, then you are seeing expected behavior, as transactions run by default in an isolation mode of repeatable-read, which means a given connection won't 'see' changes made by other transactions/connections until after commit() or rollback() has been called.

The MySQL client is in 'autocommit' mode by default, which means that each query is an isolated transaction, which is why you'd see the results in the MySQL client, but not the JDBC driver.