I have a set of classes that are connected by a
HorizontalTypeResolver that are subclasses of an
abstract class. When doing a query on the abstract
class I hit this DNU on #prepare. ReadQuery and
AbstractReadQuery both do not implement prepare.
There are really three problems here.
1) The DNU
2) the fact that the check cache code does not
seperate the query into the seperate concrete tables
which is needed by the HorizontalTypeResolver and the
final code which does seperate the query
readFromDatabase ... does not check the cache.
3) The check cache code even if the prepare is
removed is checking an abstract class.
Ron Teitelbaum
Ron@USMedRec.com
MessageNotUnderstood: ReadQuery>>prepare
28 June 2006 10:21:44 pm
VM: Win32 - a SmalltalkImage
Image: Squeak3.9alpha [latest update: #7035]
ReadQuery(Object)>>doesNotUnderstand: #prepare
Receiver: a ReadQuery
Arguments and temporary variables:
aMessage: prepare
Receiver's instance variables:
session: a GlorpSession
prepared: false
expectedRows: nil
collectionType: nil
ordering: nil
resultClass: USMRSDBObject
whereClause: Base
(USMRSDBObject).networkID = a ByteArray(124 14 163
210 172 116...etc...
base: Base(USMRSDBObject)
limit: 1
offset: nil
proxyType: nil
readsOneObject: true
shouldRefresh: false
tracing: nil
absentBlock: nil
ReadQuery(AbstractReadQuery)>>primaryKeyFrom:
Receiver: a ReadQuery
Arguments and temporary variables:
aDictionary: #()
each: nil
Receiver's instance variables:
session: a GlorpSession
prepared: false
expectedRows: nil
collectionType: nil
ordering: nil
resultClass: USMRSDBObject
whereClause: Base
(USMRSDBObject).networkID = a ByteArray(124 14 163
210 172 116...etc...
base: Base(USMRSDBObject)
limit: 1
offset: nil
proxyType: nil
readsOneObject: true
shouldRefresh: false
tracing: nil
absentBlock: nil
ReadQuery(AbstractReadQuery)
>>checkCacheWithParameters:ifPresent:
Receiver: a ReadQuery
Arguments and temporary variables:
aDictionary: #()
aBlock: [] in ReadQuery
(AbstractReadQuery)>>executeWithParameters:in: {[:hit
| ...etc...
primaryKey: nil
result: nil
filteredResult: nil
Receiver's instance variables:
session: a GlorpSession
prepared: false
expectedRows: nil
collectionType: nil
ordering: nil
resultClass: USMRSDBObject
whereClause: Base
(USMRSDBObject).networkID = a ByteArray(124 14 163
210 172 116...etc...
base: Base(USMRSDBObject)
limit: 1
offset: nil
proxyType: nil
readsOneObject: true
shouldRefresh: false
tracing: nil
absentBlock: nil
ReadQuery(AbstractReadQuery)
>>executeWithParameters:in:
Receiver: a ReadQuery
Arguments and temporary variables:
parameterArray: #()
aSession: a GlorpSession
hit: nil
Receiver's instance variables:
session: a GlorpSession
prepared: false
expectedRows: nil
collectionType: nil
ordering: nil
resultClass: USMRSDBObject
whereClause: Base
(USMRSDBObject).networkID = a ByteArray(124 14 163
210 172 116...etc...
base: Base(USMRSDBObject)
limit: 1
offset: nil
proxyType: nil
readsOneObject: true
shouldRefresh: false
tracing: nil
absentBlock: nil
--- The full stack ---
ReadQuery(Object)>>doesNotUnderstand: #prepare
ReadQuery(AbstractReadQuery)>>primaryKeyFrom:
ReadQuery(AbstractReadQuery)
>>checkCacheWithParameters:ifPresent:
ReadQuery(AbstractReadQuery)
>>executeWithParameters:in:
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
SimpleQuery(AbstractReadQuery)
>>executeWithParameters:in:
GlorpSession>>execute:
GlorpSession>>readOneOf:where:
ByteArray>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[] in TextMorphEditor(ParagraphEditor)