With much interest I followed the Thread 'select madness' on this
mailing list. I thought it would also solve a problem I have. But no. So
I decided to ask for:
( I am using V3.21 with Sun's JDK 1.3 on Windows 2000)
Relevant to the problem are two tables (which are "linked" together by
bet.from_oid = gambler2season.oid. So from_oid could be defined as
foreign key, but I started using InstantDB with V3.13 and do not use
this feature of the new version (yet)):
e CREATE TABLE gambler2season (
oid char(16) PRIMARY KEY,
object_version integer,
total int,
gambler_oid char(16) NOT NULL,
season_oid char(16) NOT NULL
);
e CREATE UNIQUE INDEX gambler2season_oid ON gambler2season (oid);
e CREATE INDEX gambler2season_gambler ON gambler2season (gambler_oid);
e CREATE INDEX gambler2season_season ON gambler2season (season_oid);
e CREATE TABLE bet (
oid char(16) PRIMARY KEY,
object_version integer,
value integer,
arrival timestamp,
hscore integer,
ascore integer,
from_oid char(16) NOT NULL,
game_oid char(16) NOT NULL
);
e CREATE UNIQUE INDEX bet_oid ON bet (oid);
e CREATE INDEX bet_from ON bet (from_oid);
e CREATE INDEX bet_game ON bet (game_oid);
They are filled with some sample data (I provide a zipped file with the
DB in a seperate mail). To show the problem I do a series of queries:
1. SELECT COUNT(*) FROM gambler2season
Result: 3
2. SELECT COUNT(*) FROM gambler2season WHERE season_oid =
'________1___1__1'
Result: 3
These two queries show, that the condition (which is used later on) is
met by each record in the table.
3. SELECT COUNT(*) FROM gambler2season g2s, bet b WHERE g2s.oid =
b.from_oid
Result: 27
This join works fine.
4. SELECT COUNT(*) FROM gambler2season g2s, bet b WHERE g2s.season_oid =
'________1___1__1' AND g2s.oid = b.from_oid
Result: 3
Now, simply by adding above condition I get the false result. And when I
try to check which 3 of 27 results InstantDB found, I even get an
exception (which is useless to me).
5. SELECT * FROM gambler2season g2s, bet b WHERE g2s.season_oid =
'________1___1__1' AND g2s.oid = b.from_oid
Exception:
java.sql.SQLException: java.lang.String
at org.enhydra.instantdb.db.SQLProg.execute(SQLProg.java:276)
at
org.enhydra.instantdb.jdbc.idbStatement.execute(idbStatement.java:235)
at org.enhydra.instantdb.JDBCAppl.action(JDBCAppl.java:85)
at java.awt.Component.handleEvent(Component.java:3906)
at org.enhydra.instantdb.JDBCAppl.handleEvent(JDBCAppl.java:212)
at java.awt.Component.postEvent(Component.java:2790)
at java.awt.Component.postEvent(Component.java:2800)
at java.awt.Component.postEvent(Component.java:2800)
at java.awt.Component.postEvent(Component.java:2800)
at java.awt.Component.dispatchEventImpl(Component.java:2607)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:319)
at
java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:103)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)
After reading the 'select madness' thread I happily tried setting
'strictLiterals=1'. But still the same result.
Do you have any explanation on this?
Thanks
Carsten Vosshenrich
-----------------------------------------------------------------------------
To unsubscribe from this mailing list, send email to majordomo@enhydra.org
with the text "unsubscribe instantdb" in the body of the email.
If you have other questions regarding this mailing list, send email to
the list admin at owner-instantdb@enhydra.org.
|