[BUG] OmniBase 'Improper store into indexable object'
Derek Brans
brans at nerdonawire.com
Fri Jul 4 17:58:10 UTC 2003
Below is code that produces an error. You can add this method to OmniBase on the class side and run it.
test21
"test if btrees mark themselves dirty when they aren't persistent"
| db col btree |
^ [db _ OmniBase openOn: self testDir.
[btree _ OmniBase newBTreeDictionary: 5.
btree at: 'test2' put: 'item2'.
col _ OrderedCollection new.
col add: btree.
OmniBase root at: 'col' put: col.
]
evaluateAndCommitIn: db newTransaction.
[btree _ (OmniBase root at: 'col') first. "Craps out here"
btree at: 'test1' put: 'item1'.
]
evaluateAndCommitIn: db newTransaction.
[btree _ (OmniBase root at: 'col') first.
((btree at: 'test1')
= 'item1' and: [(btree at: 'test2') = 'item2'])
ifFalse: [self error: 'Object was not stored']]
evaluateIn: db newTransaction]
ensure: [db close]
Here's the stack trace:
VM: Win32 - Squeak3.4 of 1 March 2003 [latest update: #5170]
Image: Squeak3.5 [latest update: #5180]
ByteArray(Object)>>error:
Receiver: a ByteArray(58 0 0 0 0)
Arguments and temporary variables:
aString: 'Improper store into indexable object'
Receiver's instance variables:
a ByteArray(58 0 0 0 0)
ByteArray(Object)>>errorImproperStore
Receiver: a ByteArray(58 0 0 0 0)
Arguments and temporary variables:
Receiver's instance variables:
a ByteArray(58 0 0 0 0)
ByteArray(Object)>>basicAt:put:
Receiver: a ByteArray(58 0 0 0 0)
Arguments and temporary variables:
index: 2
value: -50
Receiver's instance variables:
a ByteArray(58 0 0 0 0)
ByteArray class(Object class)>>odbLoadVariables:classInfo:
Receiver: ByteArray
Arguments and temporary variables:
deserializer: an ODBDeserializer
classInfo: an ODBClassDescription
stream: an ODBMemoryReadStream
order: nil
iSize: nil
object: a ByteArray(58 0 0 0 0)
basicSize: 5
varArray: nil
i: 2
iLimiT: nil
Receiver's instance variables:
superclass: ArrayedCollection
methodDict: a MethodDictionary(#asBtreeKeyOfSize:->a CompiledMethod (198) #asBy...etc...
format: 1026
instanceVariables: nil
organization: ('accessing' atAllPut: byteAt: byteAt:put: byteSize bytesPerEleme...etc...
subclasses: #(CompiledMethod CompiledApplescript ExternalAddress UUID)
name: #ByteArray
classPool: a Dictionary()
sharedPools: nil
environment: nil
category: nil
--- The full stack ---
ByteArray(Object)>>error:
ByteArray(Object)>>errorImproperStore
ByteArray(Object)>>basicAt:put:
ByteArray class(Object class)>>odbLoadVariables:classInfo:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ODBDeserializer>>newObjectNewClass
ODBNewObjectNewClass class>>odbDeserialize:
ODBDeserializer>>nextObject
Array class>>odbDeserialize:
ODBDeserializer>>nextObject
ODBSortedDictionary class(Object class)>>odbLoadVariables:classInfo:
ODBDeserializer>>newObjectNewClass
ODBNewObjectNewClass class>>odbDeserialize:
ODBDeserializer>>nextObject
ODBBTreeDictionary class(Object class)>>odbLoadVariables:classInfo:
ODBDeserializer>>newObjectNewClass
ODBNewObjectNewClass class>>odbDeserialize:
ODBDeserializer>>nextObject
[] in OrderedCollection class>>odbDeserialize:
SmallInteger(Integer)>>timesRepeat:
OrderedCollection class>>odbDeserialize:
ODBDeserializer>>nextObject
ODBDeserializer>>deserializeFrom:referenceManager:transaction:
ODBSerializedDBObjectWithoutReferences>>makeTransactionObject:
[] in ODBLocalTransaction(ODBTransaction)>>transactionObjectAt:
BlockContext>>ifCurtailed:
[] in ODBLocalTransaction(ODBTransaction)>>transactionObjectAt:
BlockContext>>ensure:
BlockContext>>valueUnpreemptively
ODBLocalTransaction(ODBTransaction)>>transactionObjectAt:
ODBDemandLoader>>getObject
ODBDemandLoader>>perform:withArguments:
ODBReference>>doesNotUnderstand:
[] in OmniBase class>>DoIt
BlockContext>>ifCurtailed:
[] in BlockContext>>evaluateAndCommitIn:
BlockContext>>ensure:
BlockContext>>evaluateAndCommitIn:
[] in OmniBase class>>DoIt
BlockContext>>ensure:
OmniBase class>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:
[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
BlockContext>>on:do:
TextMorphEditor(ParagraphEditor)>>evaluateSelection
TextMorphEditor(ParagraphEditor)>>doIt
[] in TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(Controller)>>terminateAndInitializeAround:
TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(ParagraphEditor)>>dispatchOnCharacter:with:
TextMorphEditor>>dispatchOnCharacter:with:
TextMorphEditor(ParagraphEditor)>>readKeyboard
TextMorphEditor>>readKeyboard
[] in TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent:
TextMorphForEditView>>handleInteraction:fromEvent:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
-- and more not shown --
Derek Brans
Nerd on a Wire
Web design that's anything but square
http://www.nerdonawire.com
mailto: brans at nerdonawire.com
phone: 604.874.6463
toll-free: 1-877-NERD-ON-A-WIRE
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20030704/2c0a53e5/attachment.htm
More information about the Squeak-dev
mailing list
|