I fordward the email to the list.
On Thu, Oct 1, 2009 at 4:05 PM, John Toohey jt@parspro.com wrote:
Hey,Haven't loaded the latest yet, as I'm still debugging my connection timeout issue.
Ok, let's go step by step :)
No closer to the cause, but I have a better idea of what is happening now. In all my methods in my DB class, I call a method to get the glorpSession. In this method, I have a check to see if I am still logged in, and break if I am not. Now I see that, as I lazily initialize objects that are referred by foreign keys, the Glorp Proxy will make a DB call on my behalf, whenever I reference one of these objects. The Proxy calls #basicExecuteSQLString in the DataAccessor, and that calls #execute in DBXConnection. That is where the code check if the connection is open, and fails there.
Do you have any suggestions about how I can hook into that, and perhaps try to re-connect on that error?
Great progress!!! I am glad at least that our error handling is working properly ;)
The thing is that any thing you do, is a kind of hack. For example, I cannot reopen a connection in SqueakDBX in that case. Perhaps that change should be done in Glorp?
A hack could be to reopen the connection in #basicExecuteSQLString when that errors happen. Remember you already have a reOpen method in DBXConnection. I can add a reConnect if necessary. They good this that this is very easy, as you don't need to send the querySettings again as the connection already has it as an instance variable :)
Anyway, I don't understand something. The same connection was perfect some time ago it fails, Ok ? so...if it then disconnect or close, who closes that ? the GC? you ? glorp ? We don't handle timeouts or something like that and close the connection.
Cheers,
Mariano
On Wed, Sep 30, 2009 at 11:34, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Of course it would be excellent if you can run all tests not only the one with the problem so that to be sure I didn't break something else ;)
cheers,
mariano
On Wed, Sep 30, 2009 at 12:16 PM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Done:
Name: OpenDBX-Core-MarianoMartinezPeck.231 Author: MarianoMartinezPeck Time: 30 September 2009, 12:14:49 pm UUID: 780ee5d8-3d5f-0e46-b3c0-d22ca512b498 Ancestors: OpenDBX-Core-Mariano.230
Fix to possible bug. Now DBXPlatform uses the timeout of the QuerySetttings instead of the default.
Just download that version from monticello.
However, here at work I only have Sqlite3. So, I should test with all backend in Linux and Windows tonight at home.
Tell me if it works.
Best
Mariano
On Wed, Sep 30, 2009 at 11:23 AM, John Toohey jt@parspro.com wrote:
Good, let me know when there is an update, and how to install it, and I can test again.
On Wed, Sep 30, 2009 at 09:37, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Thanks John. I think you found a bug ;) The weird thing is that I cannot reproduce it here. Perhaps it is because of the client library for Mac. It's the only difference I see.
Tonight I will test the fix I have just did and if everything is ok I will commit it.
Thank you very much.
On Wed, Sep 30, 2009 at 10:02 AM, John Toohey jt@parspro.com wrote:
This is the full stack :- UndefinedObject(Object)>>doesNotUnderstand: #asMiliseconds Receiver: nil Arguments and temporary variables: aMessage: asMiliseconds exception: MessageNotUnderstood: receiver of "asMiliseconds" is nil resumeValue: nil Receiver's instance variables: nil
[] in [] in DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: Receiver: a DBXPostgresPlatform Arguments and temporary variables: aConnection: 0 aQuerySettings: 1 returnCode: a DBXConnection handle: a DBXQuerySettings code: #(1) Receiver's instance variables: a DBXPostgresPlatform
DBXPostgresPlatform(DBXPlatform)>>nextResultSet:querySettings:onReturn: Receiver: a DBXPostgresPlatform Arguments and temporary variables: aConnection: a DBXConnection aQuerySettings: a DBXQuerySettings aBlock: [closure] in [] in DBXPostgresPlatform(DBXPlatform)>>processNextResultS...etc... handle: 0 err: 1 handleArray: a WordArray(0) Receiver's instance variables: a DBXPostgresPlatform
[] in DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: Receiver: a DBXPostgresPlatform Arguments and temporary variables: aConnection: a DBXConnection aQuerySettings: a DBXQuerySettings returnCode: #(1) Receiver's instance variables: a DBXPostgresPlatform
BlockClosure>>doWhileTrue: Receiver: [closure] in DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: Arguments and temporary variables: conditionBlock: [closure] in DBXPostgresPlatform(DBXPlatform)>>processNextResul...etc... result: nil Receiver's instance variables: outerContext: DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySetti...etc... startpc: 91 numArgs: 0
DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: Receiver: a DBXPostgresPlatform Arguments and temporary variables: aConnection: a DBXConnection aQuerySettings: a DBXQuerySettings returnCode: #(1) Receiver's instance variables: a DBXPostgresPlatform
DBXPostgresPlatform(DBXPlatform)>>executeStatement:on:querySettings: Receiver: a DBXPostgresPlatform Arguments and temporary variables: aString: 'select * from student' aConnection: a DBXConnection aQuerySettings: a DBXQuerySettings err: 0 result: nil Receiver's instance variables: a DBXPostgresPlatform
DBXConnection>>execute:querySettings: Receiver: a DBXConnection Arguments and temporary variables: aString: 'select * from student' aQuerySettings: a DBXQuerySettings aResult: nil Receiver's instance variables: platform: a DBXPostgresPlatform settings: a DBXConnectionSettings handle: 3118944 open: a ValueHolder connected: a ValueHolder result: nil
DBXQueryTimeoutTest>>testNoTimeout Receiver: DBXQueryTimeoutTest>>#testNoTimeout Arguments and temporary variables: conn: a DBXConnection aQuerySettings: a DBXQuerySettings rows: 5000 Receiver's instance variables: testSelector: #testNoTimeout facility: a DBXPostgreFacility connection: a DBXConnection
DBXQueryTimeoutTest(TestCase)>>performTest Receiver: DBXQueryTimeoutTest>>#testNoTimeout Arguments and temporary variables:
Receiver's instance variables: testSelector: #testNoTimeout facility: a DBXPostgreFacility connection: a DBXConnection
[] in DBXQueryTimeoutTest(TestCase)>>runCase Receiver: DBXQueryTimeoutTest>>#testNoTimeout Arguments and temporary variables:
Receiver's instance variables: testSelector: #testNoTimeout facility: a DBXPostgreFacility connection: a DBXConnection
BlockClosure>>ensure: Receiver: [closure] in DBXQueryTimeoutTest(TestCase)>>runCase Arguments and temporary variables: aBlock: [closure] in DBXQueryTimeoutTest(TestCase)>>runCase returnValue: nil b: nil Receiver's instance variables: outerContext: DBXQueryTimeoutTest(TestCase)>>runCase startpc: 33 numArgs: 0
DBXQueryTimeoutTest(TestCase)>>runCase Receiver: DBXQueryTimeoutTest>>#testNoTimeout Arguments and temporary variables:
Receiver's instance variables: testSelector: #testNoTimeout facility: a DBXPostgreFacility connection: a DBXConnection
[] in DBXQueryTimeoutTest(TestCase)>>debug Receiver: DBXQueryTimeoutTest>>#testNoTimeout Arguments and temporary variables:
Receiver's instance variables: testSelector: #testNoTimeout facility: a DBXPostgreFacility connection: nil
BlockClosure>>ensure: Receiver: [closure] in DBXQueryTimeoutTest(TestCase)>>debug Arguments and temporary variables: aBlock: [closure] in DBXQueryTimeoutTest(TestCase)>>debug returnValue: nil b: nil Receiver's instance variables: outerContext: DBXQueryTimeoutTest(TestCase)>>debug startpc: 62 numArgs: 0
DBXQueryTimeoutTest(TestCase)>>debug Receiver: DBXQueryTimeoutTest>>#testNoTimeout Arguments and temporary variables:
Receiver's instance variables: testSelector: #testNoTimeout facility: a DBXPostgreFacility connection: nil
[] in TestRunner>>debugSuite: Receiver: a TestRunner Arguments and temporary variables: <<error during printing> Receiver's instance variables: categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc... categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' #'OpenDBX-Core-Tests' #'...etc... classes: {DBXBaseTest . DBXCompleteExamplesTest . DBXConnectionTest . DBXDescri...etc... classIndex: 0 classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) failedList: #() failedSelected: nil errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) errorSelected: DBXQueryTimeoutTest>>#testNoTimeout lastUpdate: 3431753837 result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, 0 unexpecte...etc... previousRun: nil
OrderedCollection>>do: Receiver: an OrderedCollection(DBXQueryTimeoutTest>>#testNoTimeout) Arguments and temporary variables: aBlock: [closure] in TestRunner>>debugSuite: index: 3 Receiver's instance variables: array: an Array(nil nil DBXQueryTimeoutTest>>#testNoTimeout nil nil nil nil nil...etc... firstIndex: 3 lastIndex: 3
[] in TestRunner>>basicRunSuite:do: Receiver: a TestRunner Arguments and temporary variables: aTestSuite: a TestSuite aBlock: [closure] in TestRunner>>debugSuite: Receiver's instance variables: categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc... categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' #'OpenDBX-Core-Tests' #'...etc... classes: {DBXBaseTest . DBXCompleteExamplesTest . DBXConnectionTest . DBXDescri...etc... classIndex: 0 classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) failedList: #() failedSelected: nil errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) errorSelected: DBXQueryTimeoutTest>>#testNoTimeout lastUpdate: 3431753837 result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, 0 unexpecte...etc... previousRun: nil
BlockClosure>>ensure: Receiver: [closure] in TestRunner>>basicRunSuite:do: Arguments and temporary variables: aBlock: [closure] in TestRunner>>basicRunSuite:do: returnValue: nil b: nil Receiver's instance variables: outerContext: TestRunner>>basicRunSuite:do: startpc: 51 numArgs: 0
TestRunner>>basicRunSuite:do: Receiver: a TestRunner Arguments and temporary variables: aTestSuite: a TestSuite aBlock: [closure] in TestRunner>>debugSuite: Receiver's instance variables: categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc... categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' #'OpenDBX-Core-Tests' #'...etc... classes: {DBXBaseTest . DBXCompleteExamplesTest . DBXConnectionTest . DBXDescri...etc... classIndex: 0 classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) failedList: #() failedSelected: nil errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) errorSelected: DBXQueryTimeoutTest>>#testNoTimeout lastUpdate: 3431753837 result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, 0 unexpecte...etc... previousRun: nil
TestRunner>>debugSuite: Receiver: a TestRunner Arguments and temporary variables: aTestSuite: a TestSuite Receiver's instance variables: categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc... categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' #'OpenDBX-Core-Tests' #'...etc... classes: {DBXBaseTest . DBXCompleteExamplesTest . DBXConnectionTest . DBXDescri...etc... classIndex: 0 classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) failedList: #() failedSelected: nil errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) errorSelected: DBXQueryTimeoutTest>>#testNoTimeout lastUpdate: 3431753837 result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, 0 unexpecte...etc... previousRun: nil
TestRunner>>debug: Receiver: a TestRunner Arguments and temporary variables: aTestCase: DBXQueryTimeoutTest>>#testNoTimeout Receiver's instance variables: categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc... categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' #'OpenDBX-Core-Tests' #'...etc... classes: {DBXBaseTest . DBXCompleteExamplesTest . DBXConnectionTest . DBXDescri...etc... classIndex: 0 classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) failedList: #() failedSelected: nil errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) errorSelected: DBXQueryTimeoutTest>>#testNoTimeout lastUpdate: 3431753837 result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, 0 unexpecte...etc... previousRun: nil
TestRunner>>errorSelected: Receiver: a TestRunner Arguments and temporary variables: anInteger: 1 Receiver's instance variables: categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc... categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' #'OpenDBX-Core-Tests' #'...etc... classes: {DBXBaseTest . DBXCompleteExamplesTest . DBXConnectionTest . DBXDescri...etc... classIndex: 0 classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) failedList: #() failedSelected: nil errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) errorSelected: DBXQueryTimeoutTest>>#testNoTimeout lastUpdate: 3431753837 result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, 0 unexpecte...etc... previousRun: nil
PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection: Receiver: a PluggableListMorphPlus(3968) Arguments and temporary variables: anInteger: 1 Receiver's instance variables: bounds: 1481@397 corner: 1792@583 owner: a PluggableStandardWindow(1639) submorphs: an Array(a TransformMorph(3663)) fullBounds: 1481@397 corner: 1792@583 color: Color white extension: a MorphExtension (3283) [locked] [other: (layoutFrame -> a LayoutF...etc... borderWidth: 1 borderColor: (Color r: 0.667 g: 0.667 b: 0.667) model: a TestRunner slotName: nil open: false scrollBar: a ScrollBar(2643) scroller: a TransformMorph(3663) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #errorMenu: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(2842) list: #('DBXQueryTimeoutTest>>#testNoTimeout') getListSelector: #errorList getListSizeSelector: nil getListElementSelector: nil getIndexSelector: #errorSelected setIndexSelector: #errorSelected: keystrokeActionSelector: nil autoDeselect: true lastKeystrokeTime: 0 lastKeystrokes: '' doubleClickSelector: nil handlesBasicKeys: nil potentialDropRow: nil listMorph: a LazyListMorph(884) hScrollRangeCache: nil dragItemSelector: nil dropItemSelector: nil wantsDropSelector: nil
PluggableListMorphPlus(PluggableListMorph)>>mouseUp: Receiver: a PluggableListMorphPlus(3968) Arguments and temporary variables: event: [1546@408 mouseUp 57402925 nil] row: 1 mdr: 1 Receiver's instance variables: bounds: 1481@397 corner: 1792@583 owner: a PluggableStandardWindow(1639) submorphs: an Array(a TransformMorph(3663)) fullBounds: 1481@397 corner: 1792@583 color: Color white extension: a MorphExtension (3283) [locked] [other: (layoutFrame -> a LayoutF...etc... borderWidth: 1 borderColor: (Color r: 0.667 g: 0.667 b: 0.667) model: a TestRunner slotName: nil open: false scrollBar: a ScrollBar(2643) scroller: a TransformMorph(3663) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #errorMenu: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(2842) list: #('DBXQueryTimeoutTest>>#testNoTimeout') getListSelector: #errorList getListSizeSelector: nil getListElementSelector: nil getIndexSelector: #errorSelected setIndexSelector: #errorSelected: keystrokeActionSelector: nil autoDeselect: true lastKeystrokeTime: 0 lastKeystrokes: '' doubleClickSelector: nil handlesBasicKeys: nil potentialDropRow: nil listMorph: a LazyListMorph(884) hScrollRangeCache: nil dragItemSelector: nil dropItemSelector: nil wantsDropSelector: nil
PluggableListMorphPlus(Morph)>>handleMouseUp: Receiver: a PluggableListMorphPlus(3968) Arguments and temporary variables: anEvent: [1546@408 mouseUp 57402925 nil] Receiver's instance variables: bounds: 1481@397 corner: 1792@583 owner: a PluggableStandardWindow(1639) submorphs: an Array(a TransformMorph(3663)) fullBounds: 1481@397 corner: 1792@583 color: Color white extension: a MorphExtension (3283) [locked] [other: (layoutFrame -> a LayoutF...etc... borderWidth: 1 borderColor: (Color r: 0.667 g: 0.667 b: 0.667) model: a TestRunner slotName: nil open: false scrollBar: a ScrollBar(2643) scroller: a TransformMorph(3663) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #errorMenu: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(2842) list: #('DBXQueryTimeoutTest>>#testNoTimeout') getListSelector: #errorList getListSizeSelector: nil getListElementSelector: nil getIndexSelector: #errorSelected setIndexSelector: #errorSelected: keystrokeActionSelector: nil autoDeselect: true lastKeystrokeTime: 0 lastKeystrokes: '' doubleClickSelector: nil handlesBasicKeys: nil potentialDropRow: nil listMorph: a LazyListMorph(884) hScrollRangeCache: nil dragItemSelector: nil dropItemSelector: nil wantsDropSelector: nil
MouseButtonEvent>>sentTo: Receiver: [1546@408 mouseUp 57402925 nil] Arguments and temporary variables: anObject: a PluggableListMorphPlus(3968) Receiver's instance variables: timeStamp: 57402925 source: a HandMorph(3216) windowIndex: nil type: #mouseUp buttons: 0 position: 1546@408 handler: nil wasHandled: true whichButton: 4
PluggableListMorphPlus(Morph)>>handleEvent: Receiver: a PluggableListMorphPlus(3968) Arguments and temporary variables: anEvent: [1546@408 mouseUp 57402925 nil] Receiver's instance variables: bounds: 1481@397 corner: 1792@583 owner: a PluggableStandardWindow(1639) submorphs: an Array(a TransformMorph(3663)) fullBounds: 1481@397 corner: 1792@583 color: Color white extension: a MorphExtension (3283) [locked] [other: (layoutFrame -> a LayoutF...etc... borderWidth: 1 borderColor: (Color r: 0.667 g: 0.667 b: 0.667) model: a TestRunner slotName: nil open: false scrollBar: a ScrollBar(2643) scroller: a TransformMorph(3663) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #errorMenu: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(2842) list: #('DBXQueryTimeoutTest>>#testNoTimeout') getListSelector: #errorList getListSizeSelector: nil getListElementSelector: nil getIndexSelector: #errorSelected setIndexSelector: #errorSelected: keystrokeActionSelector: nil autoDeselect: true lastKeystrokeTime: 0 lastKeystrokes: '' doubleClickSelector: nil handlesBasicKeys: nil potentialDropRow: nil listMorph: a LazyListMorph(884) hScrollRangeCache: nil dragItemSelector: nil dropItemSelector: nil wantsDropSelector: nil
MorphicEventDispatcher>>dispatchDefault:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [1546@408 mouseUp 57402925 nil] aMorph: a PluggableListMorphPlus(3968) localEvt: [1546@408 mouseUp 57402925 nil] index: 2 child: a TransformMorph(3663) morphs: an Array(a TransformMorph(3663)) inside: true Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with: Receiver: a MorphicEventDispatcher Arguments and temporary variables: anEvent: [1546@408 mouseUp 57402925 nil] aMorph: a PluggableListMorphPlus(3968) Receiver's instance variables: lastType: #mouseUp lastDispatch: #dispatchDefault:with:
PluggableListMorphPlus(Morph)>>processEvent:using: Receiver: a PluggableListMorphPlus(3968) Arguments and temporary variables: anEvent: [1546@408 mouseUp 57402925 nil] defaultDispatcher: a MorphicEventDispatcher Receiver's instance variables: bounds: 1481@397 corner: 1792@583 owner: a PluggableStandardWindow(1639) submorphs: an Array(a TransformMorph(3663)) fullBounds: 1481@397 corner: 1792@583 color: Color white extension: a MorphExtension (3283) [locked] [other: (layoutFrame -> a LayoutF...etc... borderWidth: 1 borderColor: (Color r: 0.667 g: 0.667 b: 0.667) model: a TestRunner slotName: nil open: false scrollBar: a ScrollBar(2643) scroller: a TransformMorph(3663) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #errorMenu: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(2842) list: #('DBXQueryTimeoutTest>>#testNoTimeout') getListSelector: #errorList getListSizeSelector: nil getListElementSelector: nil getIndexSelector: #errorSelected setIndexSelector: #errorSelected: keystrokeActionSelector: nil autoDeselect: true lastKeystrokeTime: 0 lastKeystrokes: '' doubleClickSelector: nil handlesBasicKeys: nil potentialDropRow: nil listMorph: a LazyListMorph(884) hScrollRangeCache: nil dragItemSelector: nil dropItemSelector: nil wantsDropSelector: nil
PluggableListMorphPlus(Morph)>>processEvent: Receiver: a PluggableListMorphPlus(3968) Arguments and temporary variables: anEvent: [1546@408 mouseUp 57402925 nil] Receiver's instance variables: bounds: 1481@397 corner: 1792@583 owner: a PluggableStandardWindow(1639) submorphs: an Array(a TransformMorph(3663)) fullBounds: 1481@397 corner: 1792@583 color: Color white extension: a MorphExtension (3283) [locked] [other: (layoutFrame -> a LayoutF...etc... borderWidth: 1 borderColor: (Color r: 0.667 g: 0.667 b: 0.667) model: a TestRunner slotName: nil open: false scrollBar: a ScrollBar(2643) scroller: a TransformMorph(3663) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #errorMenu: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(2842) list: #('DBXQueryTimeoutTest>>#testNoTimeout') getListSelector: #errorList getListSizeSelector: nil getListElementSelector: nil getIndexSelector: #errorSelected setIndexSelector: #errorSelected: keystrokeActionSelector: nil autoDeselect: true lastKeystrokeTime: 0 lastKeystrokes: '' doubleClickSelector: nil handlesBasicKeys: nil potentialDropRow: nil listMorph: a LazyListMorph(884) hScrollRangeCache: nil dragItemSelector: nil dropItemSelector: nil wantsDropSelector: nil
PluggableListMorphPlus(PluggableListMorph)>>handleFocusEvent: Receiver: a PluggableListMorphPlus(3968) Arguments and temporary variables: anEvent: [1546@408 mouseUp 57402925 nil] Receiver's instance variables: bounds: 1481@397 corner: 1792@583 owner: a PluggableStandardWindow(1639) submorphs: an Array(a TransformMorph(3663)) fullBounds: 1481@397 corner: 1792@583 color: Color white extension: a MorphExtension (3283) [locked] [other: (layoutFrame -> a LayoutF...etc... borderWidth: 1 borderColor: (Color r: 0.667 g: 0.667 b: 0.667) model: a TestRunner slotName: nil open: false scrollBar: a ScrollBar(2643) scroller: a TransformMorph(3663) retractableScrollBar: false scrollBarOnLeft: false getMenuSelector: #errorMenu: getMenuTitleSelector: nil hasFocus: false hScrollBar: a ScrollBar(2842) list: #('DBXQueryTimeoutTest>>#testNoTimeout') getListSelector: #errorList getListSizeSelector: nil getListElementSelector: nil getIndexSelector: #errorSelected setIndexSelector: #errorSelected: keystrokeActionSelector: nil autoDeselect: true lastKeystrokeTime: 0 lastKeystrokes: '' doubleClickSelector: nil handlesBasicKeys: nil potentialDropRow: nil listMorph: a LazyListMorph(884) hScrollRangeCache: nil dragItemSelector: nil dropItemSelector: nil wantsDropSelector: nil
[] in HandMorph>>sendFocusEvent:to:clear: Receiver: a HandMorph(3216) Arguments and temporary variables: <<error during printing> Receiver's instance variables: bounds: 1071@619 corner: 1087@635 owner: a PasteUpMorph(1622) [world] submorphs: #() fullBounds: 1071@619 corner: 1087@635 color: Color blue extension: a MorphExtension (539) [eventHandler = an EventHandler] mouseFocus: nil keyboardFocus: nil eventListeners: nil mouseListeners: nil keyboardListeners: nil mouseClickState: nil mouseOverHandler: a MouseOverHandler lastMouseEvent: [1071@619 1071@619 mouseMove 57619819 nil] targetOffset: 188@12 damageRecorder: a DamageRecorder cacheCanvas: nil cachedCanvasHasHoles: true temporaryCursor: nil temporaryCursorOffset: nil hardwareCursor: nil hasChanged: true savedPatch: nil userInitials: '' lastEventBuffer: #(1 57619819 1071 619 0 0 0 1) lastKeyScanCode: 36 combinedChar: nil
[] in PasteUpMorph>>becomeActiveDuring: Receiver: a PasteUpMorph(1622) [world] Arguments and temporary variables: <<error during printing> Receiver's instance variables: bounds: 0@0 corner: 1920@1178 owner: nil submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a PluggableStanda...etc... fullBounds: 0@0 corner: 1920@1178 color: Color gray extension: a MorphExtension (2543) [eventHandler = an EventHandler] [other: (...etc... borderWidth: 0 borderColor: (Color r: 0.5 g: 0.5 b: 0.5) presenter: a Presenter (1246) model: a MorphicModel(1926) cursor: 1 padding: 3 backgroundMorph: nil isPartsBin: nil autoLineLayout: false indicateCursor: nil resizeToFit: nil wantsMouseOverHalos: nil worldState: a WorldState griddingOn: nil
BlockClosure>>on:do: Receiver: [closure] in PasteUpMorph>>becomeActiveDuring: Arguments and temporary variables: exception: Error handlerAction: [closure] in PasteUpMorph>>becomeActiveDuring: handlerActive: false Receiver's instance variables: outerContext: PasteUpMorph>>becomeActiveDuring: startpc: 67 numArgs: 0
PasteUpMorph>>becomeActiveDuring: Receiver: a PasteUpMorph(1622) [world] Arguments and temporary variables: aBlock: [closure] in HandMorph>>sendFocusEvent:to:clear: priorWorld: a PasteUpMorph(1622) [world] priorHand: a HandMorph(3216) priorEvent: [1546@408 mouseOver red nil nil] Receiver's instance variables: bounds: 0@0 corner: 1920@1178 owner: nil submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a PluggableStanda...etc... fullBounds: 0@0 corner: 1920@1178 color: Color gray extension: a MorphExtension (2543) [eventHandler = an EventHandler] [other: (...etc... borderWidth: 0 borderColor: (Color r: 0.5 g: 0.5 b: 0.5) presenter: a Presenter (1246) model: a MorphicModel(1926) cursor: 1 padding: 3 backgroundMorph: nil isPartsBin: nil autoLineLayout: false indicateCursor: nil resizeToFit: nil wantsMouseOverHalos: nil worldState: a WorldState griddingOn: nil
HandMorph>>sendFocusEvent:to:clear: Receiver: a HandMorph(3216) Arguments and temporary variables: anEvent: [1546@408 mouseUp 57402925 nil] focusHolder: a PluggableListMorphPlus(3968) aBlock: [closure] in HandMorph>>sendMouseEvent: w: a PasteUpMorph(1622) [world] result: #(nil) Receiver's instance variables: bounds: 1071@619 corner: 1087@635 owner: a PasteUpMorph(1622) [world] submorphs: #() fullBounds: 1071@619 corner: 1087@635 color: Color blue extension: a MorphExtension (539) [eventHandler = an EventHandler] mouseFocus: nil keyboardFocus: nil eventListeners: nil mouseListeners: nil keyboardListeners: nil mouseClickState: nil mouseOverHandler: a MouseOverHandler lastMouseEvent: [1071@619 1071@619 mouseMove 57619819 nil] targetOffset: 188@12 damageRecorder: a DamageRecorder cacheCanvas: nil cachedCanvasHasHoles: true temporaryCursor: nil temporaryCursorOffset: nil hardwareCursor: nil hasChanged: true savedPatch: nil userInitials: '' lastEventBuffer: #(1 57619819 1071 619 0 0 0 1) lastKeyScanCode: 36 combinedChar: nil
--- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #asMiliseconds [] in [] in DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings:
DBXPostgresPlatform(DBXPlatform)>>nextResultSet:querySettings:onReturn: [] in DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: BlockClosure>>doWhileTrue: DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: DBXPostgresPlatform(DBXPlatform)>>executeStatement:on:querySettings: DBXConnection>>execute:querySettings: DBXQueryTimeoutTest>>testNoTimeout DBXQueryTimeoutTest(TestCase)>>performTest [] in DBXQueryTimeoutTest(TestCase)>>runCase BlockClosure>>ensure: DBXQueryTimeoutTest(TestCase)>>runCase [] in DBXQueryTimeoutTest(TestCase)>>debug BlockClosure>>ensure: DBXQueryTimeoutTest(TestCase)>>debug [] in TestRunner>>debugSuite: OrderedCollection>>do: [] in TestRunner>>basicRunSuite:do: BlockClosure>>ensure: TestRunner>>basicRunSuite:do: TestRunner>>debugSuite: TestRunner>>debug: TestRunner>>errorSelected: PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection: PluggableListMorphPlus(PluggableListMorph)>>mouseUp: PluggableListMorphPlus(Morph)>>handleMouseUp: MouseButtonEvent>>sentTo: PluggableListMorphPlus(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: PluggableListMorphPlus(Morph)>>processEvent:using: PluggableListMorphPlus(Morph)>>processEvent: PluggableListMorphPlus(PluggableListMorph)>>handleFocusEvent: [] in HandMorph>>sendFocusEvent:to:clear: [] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess [] in BlockClosure>>newProcess
On Tue, Sep 29, 2009 at 23:14, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
> > > On Fri, Sep 25, 2009 at 12:07 PM, John Toohey jt@parspro.comwrote: > >> Had to rebuild a new image, changes file full, and Pharo still >> cannot condense a change file. So, now I have a refresh image with just >> GlorpDBX installed. Ran the tests and have 94 passed and one failure. The >> failed test is DBXQueryNoTimeout and the failing method is #testNoTimeOut. >> The DBXQuerySetting object's timeout property is Nil, and this throws a DNU >> exception. >> > > John: I am seeing this test but is green for me here in Linux and > Windows :( > I mean, I set a nil to the timeout property but I never send a > message to that object. I just send a null trough FFI. > > Can you tell me where does the DNU occur, who DNU a message and which > message was not understood ? It would be excellent you can send me the > stacktrace. > > Thanks a lot for the testing! > > Mariano > > > >> Going to try to install Seaside now, and hopefully my own app then. >> >> >> On Fri, Sep 25, 2009 at 09:38, Mariano Martinez Peck < >> marianopeck@gmail.com> wrote: >> >>> >>> >>> On Fri, Sep 25, 2009 at 12:21 PM, Mariano Martinez Peck < >>> marianopeck@gmail.com> wrote: >>> >>>> >>>> >>>> On Fri, Sep 25, 2009 at 12:04 PM, John Toohey jt@parspro.comwrote: >>>> >>>>> I now have a new image with Seaside 3 installed, however when I >>>>> run the follow :- >>>>> Installer ss project: 'SqueakDBX'; install: >>>>> 'SqueakDBXPharoLoader'. >>>>> SqueakDBXPharoLoader loadGlorpDBX >>>>> >>>>> This package depends on the following classes: >>>>> PGConnection >>>>> You must resolve these dependencies before you will be able to >>>>> load these definitions: >>>>> PGConnection classSide>>buildDefaultFieldConverters >>>>> PGConnection classSide>>buildStateTransitionTable >>>>> >>>>> Do I need to install the Postgres driver before I do this? I >>>>> thought it was part of the GlorpDBX install. >>>>> >>>> >>>> Yeah, I know :( >>>> It is difficult to explain but there is some places of Glorp which >>>> still reference to PGConnection. However, it is not used. Don't worry. Do a >>>> "proceed" and everything will be ok. >>>> >>> >>> Ok. I found the problem. It's time to restrucutre some packages >>> about Glorp. >>> >>> >>> >>>> I will then try to see how to fix this. >>>> >>>> what happened to SqueakDBX tests and the amount of connections? >>>> did it work my commit ? >>>> >>>> Here is a summary of the things we did to GLorp and how to run >>>> GlorpDBX tests: >>>> >>>> http://squeakdbx.smallworks.com.ar/GLORP integration >>>> >>>> Ok, it was a secret that webpage. It is our own website with >>>> seaside and pier to replace the swiki :) We will then do the public ANN >>>> hahaha. >>>> >>>> >>>> >>>> >>>>> >>>>> >>>>> On Thu, Sep 24, 2009 at 21:16, Mariano Martinez Peck < >>>>> marianopeck@gmail.com> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Thu, Sep 24, 2009 at 10:12 PM, John Toohey jt@parspro.comwrote: >>>>>> >>>>>>> I am running the OpenDBX-Core tests both from the TestRunner >>>>>>> and the OBPackageBrowser. The tests run successfully until my DB runs out of >>>>>>> connections. Latest Pharo, and latest GlorpDBX installed. >>>>>>> >>>>>>> >>>>>> John: I have just noticed that a lot of SqueakDBX tests don't >>>>>> release the DB connections, as you guessed. I have just commit. can you >>>>>> please test it and let me know ? of course, you must first reboot or kill >>>>>> all the active connections ;) >>>>>> >>>>>> >>>>>> >>>>>> "Name: OpenDBX-Core-Mariano.230 >>>>>> Author: Mariano >>>>>> Time: 24 September 2009, 10:15:03 pm >>>>>> UUID: 19ce8340-3070-4495-a21d-cbe2b63aca0e >>>>>> Ancestors: OpenDBX-Core-HMC.229 >>>>>> >>>>>> There were a lot of SqueakDBX tests that don't release the >>>>>> connection after testing. So, this can result in a "Too many connections >>>>>> error". Now, all tests release connections." >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> >>>>>>> On Thu, Sep 24, 2009 at 20:52, Mariano Martinez Peck < >>>>>>> marianopeck@gmail.com> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Sep 24, 2009 at 3:13 PM, John Toohey jt@parspro.comwrote: >>>>>>>> >>>>>>>>> Okay, I've installed SqueakGlorp into my existing image, and >>>>>>>>> added the symlink to the VM for openDBX. I can get up to 44 tests to pass, >>>>>>>>> but it seems that the tests are not releasing their DB connections, so after >>>>>>>>> a while the rest fail with a "Too many connections error" >>>>>>>> >>>>>>>> >>>>>>>> These tests you are talking about are SqueakDBX tests or Glorp >>>>>>>> tests when using SqueakDBX as the driver ? >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> Is this how it should be for those tests? I am just selecting >>>>>>>>> the test package and selecting "run tests". >>>>>>>>> >>>>>>>>> >>>>>>>> I need to know which tests are you running, if >>>>>>>> OpenDBX-Core-Tests or GlorpTest. Anyway, tests should release connections. >>>>>>>> If this is not done, so we have a bug in our tests. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Sep 24, 2009 at 12:24, Mariano Martinez Peck < >>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Sep 24, 2009 at 3:06 PM, John Toohey < >>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>> >>>>>>>>>>> - I've managed to build it on a VMWare VM running Ubunto, >>>>>>>>>>> and using the --disable-utils switch, I've built it on OSX also. However on >>>>>>>>>>> both systems when I run the test suite I see this :- >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Excellent news!!! I tell you: there is an utility called >>>>>>>>>> odbx-sql that let you send queries trough OpenDBX. However, that utility >>>>>>>>>> requires external libraries which seem to have problems, at least in >>>>>>>>>> Windows. So, when we compile in Windows, we must disable that utility. But >>>>>>>>>> remember this is an utility, not OpenDBX core or feature. It is not >>>>>>>>>> important. I didn't know it has problems also with MacOS, so I will update >>>>>>>>>> the webpage. Thanks for the testing!!!! >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> `--> ./odbxtest -b pgsql -h localhost -p 5432 -d juliet -u >>>>>>>>>>> postgres -w postgres >>>>>>>>>>> ODBX_CAP_BASIC: 1 >>>>>>>>>>> ODBX_CAP_LO: 0 >>>>>>>>>>> ODBX_OPT_API_VERSION: 10200 >>>>>>>>>>> ODBX_OPT_THREAD_SAFE: 1 >>>>>>>>>>> ODBX_OPT_TLS: 1 >>>>>>>>>>> ODBX_OPT_CONNECT_TIMEOUT: 1 (using) >>>>>>>>>>> ODBX_OPT_MULTI_STATEMENTS: 1 (using) >>>>>>>>>>> ODBX_OPT_PAGED_RESULTS: 0 >>>>>>>>>>> ODBX_OPT_COMPRESS: 0 >>>>>>>>>>> ODBX_CAP_BASIC: 1 >>>>>>>>>>> ODBX_CAP_LO: 0 >>>>>>>>>>> ODBX_OPT_API_VERSION: 10200 >>>>>>>>>>> ODBX_OPT_THREAD_SAFE: 1 >>>>>>>>>>> ODBX_OPT_TLS: 1 >>>>>>>>>>> ODBX_OPT_CONNECT_TIMEOUT: 1 (using) >>>>>>>>>>> ODBX_OPT_MULTI_STATEMENTS: 1 (using) >>>>>>>>>>> ODBX_OPT_PAGED_RESULTS: 0 >>>>>>>>>>> ODBX_OPT_COMPRESS: 0 >>>>>>>>>>> WARNING: nonstandard use of \ in a string literal >>>>>>>>>>> LINE 1: SELECT * FROM odbxtest WHERE col = 'a''''\''b' >>>>>>>>>>> ^ >>>>>>>>>>> HINT: Use the escape string syntax for backslashes, e.g., >>>>>>>>>>> E'\'. >>>>>>>>>>> Error in odbx_result(): ERROR: relation "odbxtest" does >>>>>>>>>>> not exist >>>>>>>>>>> >>>>>>>>>>> Error in odbx_result(): ERROR: relation "odbxtest" does >>>>>>>>>>> not exist >>>>>>>>>>> >>>>>>>>>>> Not sure if this means there is a problem with the build (I >>>>>>>>>>> downloaded to latest one) or a problem with the test suite. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> As you guessed this seems to be a problem with the test >>>>>>>>>> suit, but the build is seems to be perfect. I will send this part to OpenDBX >>>>>>>>>> mailing list and see if I receive some help. Thanks for the report. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> In order to continue and install GlorpDBX into my Pharo >>>>>>>>>>> image, do I need to build a new image, as my current one already has >>>>>>>>>>> Pharo-Glorp installed. I've never figured out how to uninstall packages in >>>>>>>>>>> Smalltalk. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Yeah. Me neither :( >>>>>>>>>> >>>>>>>>>> But, what you can do is install just SqueakDBX in that image >>>>>>>>>> and run the SqueakDBX tests, using PostgreSQL to see if everything is ok. >>>>>>>>>> You should have all green tests. If you get this, I would really appreciate >>>>>>>>>> if you can make a binary for MacOS :) >>>>>>>>>> >>>>>>>>>> Then, you can take a new image and install GlorpDBX as >>>>>>>>>> explained in the wiki. Most of the tests should be green. I say "most" >>>>>>>>>> because there are some that fails because of what I told you that we don't >>>>>>>>>> support large database fields. >>>>>>>>>> >>>>>>>>>> Best, >>>>>>>>>> >>>>>>>>>> Mariano >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Thu, Sep 24, 2009 at 11:15, Mariano Martinez Peck < >>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Thu, Sep 24, 2009 at 1:59 PM, John Toohey < >>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> I'm currently trying to build openDBX on OSX. I've >>>>>>>>>>>>> finally found the postgres client libs and include files, and I've run >>>>>>>>>>>>> ./configure -with-backends="pgsql", but when I run make I get this error :- >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Excellent you are giving SqueakDBX at least a try. The >>>>>>>>>>>> real thing is this: The squeakDBX team is composed by 4 people. Only one has >>>>>>>>>>>> a Mac and he is very busy with his work. I have ALL databases working on >>>>>>>>>>>> Linux and Windows. And I have also prepared binaries for that because I can >>>>>>>>>>>> (dlls, .deb and .rpm). But I cannot do it with Mac because I don't have a >>>>>>>>>>>> mac and I don't know how binaries work on Mac. If you make it work, I would >>>>>>>>>>>> really love you help me generating the binaries so that I can update them to >>>>>>>>>>>> OpenDBX website. >>>>>>>>>>>> >>>>>>>>>>>> Which OpenDBX version are you trying to compile? You >>>>>>>>>>>> should try 1.4.3. >>>>>>>>>>>> >>>>>>>>>>>> Can you try configuring this way please ? >>>>>>>>>>>> >>>>>>>>>>>> ./configure --disable-utils --with-backends="pgsql" >>>>>>>>>>>> >>>>>>>>>>>> If it works, I then explain you why that :) >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Making all in po >>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-argmap.o -MD -MP -MF >>>>>>>>>>>>> .deps/odbx_sql-argmap.Tpo -c -o odbx_sql-argmap.o `test -f 'argmap.cpp' || >>>>>>>>>>>>> echo './'`argmap.cpp >>>>>>>>>>>>> mv -f .deps/odbx_sql-argmap.Tpo .deps/odbx_sql-argmap.Po >>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-commands.o -MD -MP >>>>>>>>>>>>> -MF .deps/odbx_sql-commands.Tpo -c -o odbx_sql-commands.o `test -f >>>>>>>>>>>>> 'commands.cpp' || echo './'`commands.cpp >>>>>>>>>>>>> mv -f .deps/odbx_sql-commands.Tpo >>>>>>>>>>>>> .deps/odbx_sql-commands.Po >>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-completion.o -MD -MP >>>>>>>>>>>>> -MF .deps/odbx_sql-completion.Tpo -c -o odbx_sql-completion.o `test -f >>>>>>>>>>>>> 'completion.cpp' || echo './'`completion.cpp >>>>>>>>>>>>> mv -f .deps/odbx_sql-completion.Tpo >>>>>>>>>>>>> .deps/odbx_sql-completion.Po >>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-odbx-sql.o -MD -MP >>>>>>>>>>>>> -MF .deps/odbx_sql-odbx-sql.Tpo -c -o odbx_sql-odbx-sql.o `test -f >>>>>>>>>>>>> 'odbx-sql.cpp' || echo './'`odbx-sql.cpp >>>>>>>>>>>>> odbx-sql.cpp: In function 'int main(int, char**)': >>>>>>>>>>>>> odbx-sql.cpp:228: error: invalid conversion from 'char* >>>>>>>>>>>>> (*)(const char*, int)' to 'int (*)(const char*, int)' >>>>>>>>>>>>> make[3]: *** [odbx_sql-odbx-sql.o] Error 1 >>>>>>>>>>>>> make[2]: *** [all-recursive] Error 1 >>>>>>>>>>>>> make[1]: *** [all-recursive] Error 1 >>>>>>>>>>>>> make: *** [all] Error 2 >>>>>>>>>>>>> >>>>>>>>>>>>> Do you know of any pre-built binaries that will work on >>>>>>>>>>>>> OSX? >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> I don't know, but I would love to have them!!! >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Wed, Sep 23, 2009 at 23:09, Mariano Martinez Peck < >>>>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 11:27 PM, John Toohey < >>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hey, >>>>>>>>>>>>>>> Thanks for looking into this for me. I'm just using >>>>>>>>>>>>>>> Pharo as my app is using the beta of Seaside 3.0. I'm going to do as you >>>>>>>>>>>>>>> suggested and put some debug statements in PGConnection, and see where that >>>>>>>>>>>>>>> leads. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> Ok, let us know what the problem was if you find it :) >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Is it a lot of changes from me to switch to DBX on >>>>>>>>>>>>>>> Pharo? >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> No. Your application shouldn't have any changes. You >>>>>>>>>>>>>> application will use just Glorp. But in this case Glorp won't use the native >>>>>>>>>>>>>> PostgreSQL driver, but SqueakDBX with PostgreSQL. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> I assume there are no changes in my Glorp code, but >>>>>>>>>>>>>>> what else do I need to do. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> The only thing you must do is: >>>>>>>>>>>>>> >>>>>>>>>>>>>> - Install the PostgreSQL client library (if you don't >>>>>>>>>>>>>> have it already installed). >>>>>>>>>>>>>> - Compile or Install (if you are in Linux you can use >>>>>>>>>>>>>> the .rpm or .deb) OpenDBX with PostgreSQL, >>>>>>>>>>>>>> >>>>>>>>>>>>>> You can read how to do it here: >>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6129 >>>>>>>>>>>>>> >>>>>>>>>>>>>> You must do it only once. Once this is done, everything >>>>>>>>>>>>>> is easy and you can take advantage of all the SqueakDBX features ( >>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6106). OpenDBX works >>>>>>>>>>>>>> perfect with PostgreSQL in Linux, Mac and Windows. We have also have >>>>>>>>>>>>>> GlorpDBX working with SqueakDBX and PostgreSQL and it is very easy to >>>>>>>>>>>>>> install: >>>>>>>>>>>>>> >>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6130 (where it says >>>>>>>>>>>>>> GlorpDBX). >>>>>>>>>>>>>> >>>>>>>>>>>>>> The only limitation we have right now is that we don't >>>>>>>>>>>>>> support large objects (blob, clob, etc) yet. >>>>>>>>>>>>>> >>>>>>>>>>>>>> If you try it and have any problem, please, let us >>>>>>>>>>>>>> know!!! >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> I develop on OSX and deploy to Linux for production. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> No problem. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Best, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 21:03, Mariano Martinez Peck < >>>>>>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I was thinking if you have the problem in Squeak also >>>>>>>>>>>>>>>> or just Pharo ? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:12 PM, Mariano Martinez Peck >>>>>>>>>>>>>>>> marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:25 PM, John Toohey < >>>>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi John! This list is SqueakDBX related, so perhaps I >>>>>>>>>>>>>>>>> am not the best one to help you. I just make Glorp and PostgreSQL native >>>>>>>>>>>>>>>>> driver to work on Pharo. Actually, the only thing I did is to have all green >>>>>>>>>>>>>>>>> tests. No more than that. I don't have a Glorp + native postgresql driver >>>>>>>>>>>>>>>>> application. Anyway, I will try to help you ;) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> My app frequently losses the connection the >>>>>>>>>>>>>>>>>> Postgres, and throws a "Connection not Valid" exception. Unfortunately on >>>>>>>>>>>>>>>>>> the latest Pharo images, there is a bug that causes this to write the stack >>>>>>>>>>>>>>>>>> trace to disk, and then the image locks up. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> you meat there is a Pharo bug that when there is a >>>>>>>>>>>>>>>>> walkback and the stacktrace is written to disk, it freezes the image ? is >>>>>>>>>>>>>>>>> there a bug report of that ? Could you reproduce that ? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I think the socket on the PGConnection class is >>>>>>>>>>>>>>>>>> being closed or times out, and I need to know is there someway that I can >>>>>>>>>>>>>>>>>> debug this or if its a know issue. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Yes, that's probably the case. I can see in code that >>>>>>>>>>>>>>>>> the error 'Connection not valid' when the connection is not connected or if >>>>>>>>>>>>>>>>> it is nil. If you see your stacktrace, you can see that the socket variable >>>>>>>>>>>>>>>>> is nil. That's why the error. Now, the question is why the socket is nil ? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I looked for the code to see where can be the socket >>>>>>>>>>>>>>>>> set to nil, and I found some places: PGConnection stTerminalError: , >>>>>>>>>>>>>>>>> stTerminated >>>>>>>>>>>>>>>>> Perhaps you can put a "self halt" in those methods >>>>>>>>>>>>>>>>> and then debug them. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> The PGConnection seems to do a lot of "self log: >>>>>>>>>>>>>>>>> 'XXXX'". So, perhaps you can have a Transcript opened to see that. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Finally, why don't you give a try to GlorpDBX + >>>>>>>>>>>>>>>>> SqueakDBX ? It works pretty well and has good performance. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I hope this helps. Remember I am not a native >>>>>>>>>>>>>>>>> postgresql driver guru. Perhaps you can ask also in squeak-dev or pharo >>>>>>>>>>>>>>>>> mailing lists. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I am using the latest Pharo image, with the latest >>>>>>>>>>>>>>>>>> Pharo-Glorp package, and the newest Postgres driver. I think this is the >>>>>>>>>>>>>>>>>> relevant part of the stack trace :- >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> PGConnection(Object)>>error: >>>>>>>>>>>>>>>>>> Receiver: a PGConnection >>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>> aString: 'Connection not valid' >>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>> trace: 0 >>>>>>>>>>>>>>>>>> state: #Terminated >>>>>>>>>>>>>>>>>> events: an OrderedCollection() >>>>>>>>>>>>>>>>>> socket: nil >>>>>>>>>>>>>>>>>> readBuffer: 'PblankT id ��name �$password >>>>>>>>>>>>>>>>>> �6client...etc... >>>>>>>>>>>>>>>>>> readIndex: 384 >>>>>>>>>>>>>>>>>> lastReadIndex: 384 >>>>>>>>>>>>>>>>>> writeBuffer: nil >>>>>>>>>>>>>>>>>> processId: 28132 >>>>>>>>>>>>>>>>>> secretKey: 1795051851 >>>>>>>>>>>>>>>>>> sql: 'SELECT t1.id, t1.name, t1.password, >>>>>>>>>>>>>>>>>> t1.client, t1.role, t1.mobile, t1.ema...etc... >>>>>>>>>>>>>>>>>> functionCallOid: nil >>>>>>>>>>>>>>>>>> functionCallArgs: nil >>>>>>>>>>>>>>>>>> copyStream: nil >>>>>>>>>>>>>>>>>> result: a PGResult >>>>>>>>>>>>>>>>>> connectionArgs: a PGConnectionArgs >>>>>>>>>>>>>>>>>> notificationSubscribers: nil >>>>>>>>>>>>>>>>>> fieldConverters: an >>>>>>>>>>>>>>>>>> IdentityDictionary(16->[closure] in PGConnection class>>boo...etc... >>>>>>>>>>>>>>>>>> sqlStringConverter: [closure] in >>>>>>>>>>>>>>>>>> PGConnection>>clientEncoding: >>>>>>>>>>>>>>>>>> receivingTextConverter: an UTF8TextConverter >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> PGConnection>>execute: >>>>>>>>>>>>>>>>>> Receiver: a PGConnection >>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>> sqlString: 'SELECT t1.id, t1.typename, >>>>>>>>>>>>>>>>>> t1.description, t1.selectioncount, t1.pr...etc... >>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>> trace: 0 >>>>>>>>>>>>>>>>>> state: #Terminated >>>>>>>>>>>>>>>>>> events: an OrderedCollection() >>>>>>>>>>>>>>>>>> socket: nil >>>>>>>>>>>>>>>>>> readBuffer: 'PblankT id ��name �$password >>>>>>>>>>>>>>>>>> �6client...etc... >>>>>>>>>>>>>>>>>> readIndex: 384 >>>>>>>>>>>>>>>>>> lastReadIndex: 384 >>>>>>>>>>>>>>>>>> writeBuffer: nil >>>>>>>>>>>>>>>>>> processId: 28132 >>>>>>>>>>>>>>>>>> secretKey: 1795051851 >>>>>>>>>>>>>>>>>> sql: 'SELECT t1.id, t1.name, t1.password, >>>>>>>>>>>>>>>>>> t1.client, t1.role, t1.mobile, t1.ema...etc... >>>>>>>>>>>>>>>>>> functionCallOid: nil >>>>>>>>>>>>>>>>>> functionCallArgs: nil >>>>>>>>>>>>>>>>>> copyStream: nil >>>>>>>>>>>>>>>>>> result: a PGResult >>>>>>>>>>>>>>>>>> connectionArgs: a PGConnectionArgs >>>>>>>>>>>>>>>>>> notificationSubscribers: nil >>>>>>>>>>>>>>>>>> fieldConverters: an >>>>>>>>>>>>>>>>>> IdentityDictionary(16->[closure] in PGConnection class>>boo...etc... >>>>>>>>>>>>>>>>>> sqlStringConverter: [closure] in >>>>>>>>>>>>>>>>>> PGConnection>>clientEncoding: >>>>>>>>>>>>>>>>>> receivingTextConverter: an UTF8TextConverter >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> SqueakDatabaseAccessor>>basicExecuteSQLString: >>>>>>>>>>>>>>>>>> Receiver: a SqueakDatabaseAccessor >>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>> aString: 'SELECT t1.id, t1.typename, >>>>>>>>>>>>>>>>>> t1.description, t1.selectioncount, t1.prio...etc... >>>>>>>>>>>>>>>>>> result: nil >>>>>>>>>>>>>>>>>> rowCollection: nil >>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>> connection: a PGConnection >>>>>>>>>>>>>>>>>> currentLogin: a Login(a PostgreSQLPlatform, >>>>>>>>>>>>>>>>>> 'postgres', '847129', 'localhost_ju...etc... >>>>>>>>>>>>>>>>>> logging: true >>>>>>>>>>>>>>>>>> reusePreparedStatements: nil >>>>>>>>>>>>>>>>>> deniedCommands: nil >>>>>>>>>>>>>>>>>> mutex: a Semaphore() >>>>>>>>>>>>>>>>>> dependents: nil >>>>>>>>>>>>>>>>>> isInTransaction: false >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Any help would be appreciated, as this is stopping >>>>>>>>>>>>>>>>>> me from going to a Beta test at the moment. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>> SqueakDBX mailing list >>>>>>>>>>>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> -JT >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> -JT >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> -JT >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> SqueakDBX mailing list >>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> -JT >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> SqueakDBX mailing list >>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> -JT >>>>> >>>>> >>>>> >>>> >>> >>> _______________________________________________ >>> SqueakDBX mailing list >>> SqueakDBX@lists.squeakfoundation.org >>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>> >>> >> >> >> -- >> -JT >> >> >> >
-- -JT
-- -JT
-- -JT
Okay, I think now I know what is going on. In my Seaside app, I allow the user to logout, and this method disconnects from the DB, and expires the Seaside session. I also have an expiration timeout set on the session. I think that Seaside is sending me a #unregistered message, after I have logged back in, and this method is calling #disconnect. I have removed some of the session handling code, and things are working a lot better now. However, I have know noticed something that was working fine with Glorp, and seems broken now. One of my classes that inserts new records in the DB is missing the id (sequence, pk) field. I can see from the GlorpDBX debug, that a call is made to Postgres for the next sequence number, but the insert statement is missing the id field. Here is the trace messages :-
odbx_query: called with values: handle = 380908736 query = select nextval('TOURNAMENTMARKETS_id_SEQ') from pg_attribute limit 1 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 3 odbx_result resultSet handle returned: 381100928 odbx_column_count: called with values: resultSet handle = 381100928 odbx_row_fetch: called with values: resultSet handle = 381100928 odbx_row_fetch call returned 1 odbx_row_fetch: called with values: resultSet handle = 381100928 odbx_row_fetch call returned 0 odbx_result_finish: called with values: resultSet handle = 381100928 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 0 odbx_result resultSet handle returned: 0 odbx_query: called with values: handle = 380908736 query = INSERT INTO TOURNAMENTS (bookmaker,event,name,status,fee,prizewin,prizeplace,payout,buyin,opentime,closetime,tournamenttype,maxpunters,odds,favourite,version) VALUES (1,1,'Tourney-A1','Unpublished',5,0,0,76,false,'2009-10-03 12:00:00','2009-10-03 12:00:00','Pari-Mutual',90,NULL,NULL,1) odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: -1 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 0 odbx_result resultSet handle returned: 0 12:27:22 pm - GlorpDatabaseWriteError: RECOVERABLE OpenDBX: ERROR: null value in column "id" violates not-null constraint
On Thu, Oct 1, 2009 at 15:33, Mariano Martinez Peck marianopeck@gmail.comwrote:
I fordward the email to the list.
On Thu, Oct 1, 2009 at 4:05 PM, John Toohey jt@parspro.com wrote:
Hey,Haven't loaded the latest yet, as I'm still debugging my connection timeout issue.
Ok, let's go step by step :)
No closer to the cause, but I have a better idea of what is happening now. In all my methods in my DB class, I call a method to get the glorpSession. In this method, I have a check to see if I am still logged in, and break if I am not. Now I see that, as I lazily initialize objects that are referred by foreign keys, the Glorp Proxy will make a DB call on my behalf, whenever I reference one of these objects. The Proxy calls #basicExecuteSQLString in the DataAccessor, and that calls #execute in DBXConnection. That is where the code check if the connection is open, and fails there.
Do you have any suggestions about how I can hook into that, and perhaps try to re-connect on that error?
Great progress!!! I am glad at least that our error handling is working properly ;)
The thing is that any thing you do, is a kind of hack. For example, I cannot reopen a connection in SqueakDBX in that case. Perhaps that change should be done in Glorp?
A hack could be to reopen the connection in #basicExecuteSQLString when that errors happen. Remember you already have a reOpen method in DBXConnection. I can add a reConnect if necessary. They good this that this is very easy, as you don't need to send the querySettings again as the connection already has it as an instance variable :)
Anyway, I don't understand something. The same connection was perfect some time ago it fails, Ok ? so...if it then disconnect or close, who closes that ? the GC? you ? glorp ? We don't handle timeouts or something like that and close the connection.
Cheers,
Mariano
On Wed, Sep 30, 2009 at 11:34, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Of course it would be excellent if you can run all tests not only the one with the problem so that to be sure I didn't break something else ;)
cheers,
mariano
On Wed, Sep 30, 2009 at 12:16 PM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Done:
Name: OpenDBX-Core-MarianoMartinezPeck.231 Author: MarianoMartinezPeck Time: 30 September 2009, 12:14:49 pm UUID: 780ee5d8-3d5f-0e46-b3c0-d22ca512b498 Ancestors: OpenDBX-Core-Mariano.230
Fix to possible bug. Now DBXPlatform uses the timeout of the QuerySetttings instead of the default.
Just download that version from monticello.
However, here at work I only have Sqlite3. So, I should test with all backend in Linux and Windows tonight at home.
Tell me if it works.
Best
Mariano
On Wed, Sep 30, 2009 at 11:23 AM, John Toohey jt@parspro.com wrote:
Good, let me know when there is an update, and how to install it, and I can test again.
On Wed, Sep 30, 2009 at 09:37, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Thanks John. I think you found a bug ;) The weird thing is that I cannot reproduce it here. Perhaps it is because of the client library for Mac. It's the only difference I see.
Tonight I will test the fix I have just did and if everything is ok I will commit it.
Thank you very much.
On Wed, Sep 30, 2009 at 10:02 AM, John Toohey jt@parspro.com wrote:
> This is the full stack :- > UndefinedObject(Object)>>doesNotUnderstand: #asMiliseconds > Receiver: nil > Arguments and temporary variables: > aMessage: asMiliseconds > exception: MessageNotUnderstood: receiver of "asMiliseconds" is nil > resumeValue: nil > Receiver's instance variables: > nil > > [] in [] in > DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: > Receiver: a DBXPostgresPlatform > Arguments and temporary variables: > aConnection: 0 > aQuerySettings: 1 > returnCode: a DBXConnection > handle: a DBXQuerySettings > code: #(1) > Receiver's instance variables: > a DBXPostgresPlatform > > > DBXPostgresPlatform(DBXPlatform)>>nextResultSet:querySettings:onReturn: > Receiver: a DBXPostgresPlatform > Arguments and temporary variables: > aConnection: a DBXConnection > aQuerySettings: a DBXQuerySettings > aBlock: [closure] in [] in > DBXPostgresPlatform(DBXPlatform)>>processNextResultS...etc... > handle: 0 > err: 1 > handleArray: a WordArray(0) > Receiver's instance variables: > a DBXPostgresPlatform > > [] in > DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: > Receiver: a DBXPostgresPlatform > Arguments and temporary variables: > aConnection: a DBXConnection > aQuerySettings: a DBXQuerySettings > returnCode: #(1) > Receiver's instance variables: > a DBXPostgresPlatform > > BlockClosure>>doWhileTrue: > Receiver: [closure] in > DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: > Arguments and temporary variables: > conditionBlock: [closure] in > DBXPostgresPlatform(DBXPlatform)>>processNextResul...etc... > result: nil > Receiver's instance variables: > outerContext: > DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySetti...etc... > startpc: 91 > numArgs: 0 > > DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: > Receiver: a DBXPostgresPlatform > Arguments and temporary variables: > aConnection: a DBXConnection > aQuerySettings: a DBXQuerySettings > returnCode: #(1) > Receiver's instance variables: > a DBXPostgresPlatform > > DBXPostgresPlatform(DBXPlatform)>>executeStatement:on:querySettings: > Receiver: a DBXPostgresPlatform > Arguments and temporary variables: > aString: 'select * from student' > aConnection: a DBXConnection > aQuerySettings: a DBXQuerySettings > err: 0 > result: nil > Receiver's instance variables: > a DBXPostgresPlatform > > DBXConnection>>execute:querySettings: > Receiver: a DBXConnection > Arguments and temporary variables: > aString: 'select * from student' > aQuerySettings: a DBXQuerySettings > aResult: nil > Receiver's instance variables: > platform: a DBXPostgresPlatform > settings: a DBXConnectionSettings > handle: 3118944 > open: a ValueHolder > connected: a ValueHolder > result: nil > > DBXQueryTimeoutTest>>testNoTimeout > Receiver: DBXQueryTimeoutTest>>#testNoTimeout > Arguments and temporary variables: > conn: a DBXConnection > aQuerySettings: a DBXQuerySettings > rows: 5000 > Receiver's instance variables: > testSelector: #testNoTimeout > facility: a DBXPostgreFacility > connection: a DBXConnection > > DBXQueryTimeoutTest(TestCase)>>performTest > Receiver: DBXQueryTimeoutTest>>#testNoTimeout > Arguments and temporary variables: > > Receiver's instance variables: > testSelector: #testNoTimeout > facility: a DBXPostgreFacility > connection: a DBXConnection > > [] in DBXQueryTimeoutTest(TestCase)>>runCase > Receiver: DBXQueryTimeoutTest>>#testNoTimeout > Arguments and temporary variables: > > Receiver's instance variables: > testSelector: #testNoTimeout > facility: a DBXPostgreFacility > connection: a DBXConnection > > BlockClosure>>ensure: > Receiver: [closure] in DBXQueryTimeoutTest(TestCase)>>runCase > Arguments and temporary variables: > aBlock: [closure] in DBXQueryTimeoutTest(TestCase)>>runCase > returnValue: nil > b: nil > Receiver's instance variables: > outerContext: DBXQueryTimeoutTest(TestCase)>>runCase > startpc: 33 > numArgs: 0 > > DBXQueryTimeoutTest(TestCase)>>runCase > Receiver: DBXQueryTimeoutTest>>#testNoTimeout > Arguments and temporary variables: > > Receiver's instance variables: > testSelector: #testNoTimeout > facility: a DBXPostgreFacility > connection: a DBXConnection > > [] in DBXQueryTimeoutTest(TestCase)>>debug > Receiver: DBXQueryTimeoutTest>>#testNoTimeout > Arguments and temporary variables: > > Receiver's instance variables: > testSelector: #testNoTimeout > facility: a DBXPostgreFacility > connection: nil > > BlockClosure>>ensure: > Receiver: [closure] in DBXQueryTimeoutTest(TestCase)>>debug > Arguments and temporary variables: > aBlock: [closure] in DBXQueryTimeoutTest(TestCase)>>debug > returnValue: nil > b: nil > Receiver's instance variables: > outerContext: DBXQueryTimeoutTest(TestCase)>>debug > startpc: 62 > numArgs: 0 > > DBXQueryTimeoutTest(TestCase)>>debug > Receiver: DBXQueryTimeoutTest>>#testNoTimeout > Arguments and temporary variables: > > Receiver's instance variables: > testSelector: #testNoTimeout > facility: a DBXPostgreFacility > connection: nil > > [] in TestRunner>>debugSuite: > Receiver: a TestRunner > Arguments and temporary variables: > <<error during printing> > Receiver's instance variables: > categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' > #'AutomaticMetho...etc... > categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' > #'OpenDBX-Core-Tests' #'...etc... > classes: {DBXBaseTest . DBXCompleteExamplesTest . DBXConnectionTest > . DBXDescri...etc... > classIndex: 0 > classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) > failedList: #() > failedSelected: nil > errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) > errorSelected: DBXQueryTimeoutTest>>#testNoTimeout > lastUpdate: 3431753837 > result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, > 0 unexpecte...etc... > previousRun: nil > > OrderedCollection>>do: > Receiver: an OrderedCollection(DBXQueryTimeoutTest>>#testNoTimeout) > Arguments and temporary variables: > aBlock: [closure] in TestRunner>>debugSuite: > index: 3 > Receiver's instance variables: > array: an Array(nil nil DBXQueryTimeoutTest>>#testNoTimeout nil nil > nil nil nil...etc... > firstIndex: 3 > lastIndex: 3 > > [] in TestRunner>>basicRunSuite:do: > Receiver: a TestRunner > Arguments and temporary variables: > aTestSuite: a TestSuite > aBlock: [closure] in TestRunner>>debugSuite: > Receiver's instance variables: > categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' > #'AutomaticMetho...etc... > categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' > #'OpenDBX-Core-Tests' #'...etc... > classes: {DBXBaseTest . DBXCompleteExamplesTest . DBXConnectionTest > . DBXDescri...etc... > classIndex: 0 > classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) > failedList: #() > failedSelected: nil > errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) > errorSelected: DBXQueryTimeoutTest>>#testNoTimeout > lastUpdate: 3431753837 > result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, > 0 unexpecte...etc... > previousRun: nil > > BlockClosure>>ensure: > Receiver: [closure] in TestRunner>>basicRunSuite:do: > Arguments and temporary variables: > aBlock: [closure] in TestRunner>>basicRunSuite:do: > returnValue: nil > b: nil > Receiver's instance variables: > outerContext: TestRunner>>basicRunSuite:do: > startpc: 51 > numArgs: 0 > > TestRunner>>basicRunSuite:do: > Receiver: a TestRunner > Arguments and temporary variables: > aTestSuite: a TestSuite > aBlock: [closure] in TestRunner>>debugSuite: > Receiver's instance variables: > categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' > #'AutomaticMetho...etc... > categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' > #'OpenDBX-Core-Tests' #'...etc... > classes: {DBXBaseTest . DBXCompleteExamplesTest . DBXConnectionTest > . DBXDescri...etc... > classIndex: 0 > classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) > failedList: #() > failedSelected: nil > errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) > errorSelected: DBXQueryTimeoutTest>>#testNoTimeout > lastUpdate: 3431753837 > result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, > 0 unexpecte...etc... > previousRun: nil > > TestRunner>>debugSuite: > Receiver: a TestRunner > Arguments and temporary variables: > aTestSuite: a TestSuite > Receiver's instance variables: > categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' > #'AutomaticMetho...etc... > categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' > #'OpenDBX-Core-Tests' #'...etc... > classes: {DBXBaseTest . DBXCompleteExamplesTest . DBXConnectionTest > . DBXDescri...etc... > classIndex: 0 > classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) > failedList: #() > failedSelected: nil > errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) > errorSelected: DBXQueryTimeoutTest>>#testNoTimeout > lastUpdate: 3431753837 > result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, > 0 unexpecte...etc... > previousRun: nil > > TestRunner>>debug: > Receiver: a TestRunner > Arguments and temporary variables: > aTestCase: DBXQueryTimeoutTest>>#testNoTimeout > Receiver's instance variables: > categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' > #'AutomaticMetho...etc... > categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' > #'OpenDBX-Core-Tests' #'...etc... > classes: {DBXBaseTest . DBXCompleteExamplesTest . DBXConnectionTest > . DBXDescri...etc... > classIndex: 0 > classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) > failedList: #() > failedSelected: nil > errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) > errorSelected: DBXQueryTimeoutTest>>#testNoTimeout > lastUpdate: 3431753837 > result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, > 0 unexpecte...etc... > previousRun: nil > > TestRunner>>errorSelected: > Receiver: a TestRunner > Arguments and temporary variables: > anInteger: 1 > Receiver's instance variables: > categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' > #'AutomaticMetho...etc... > categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' > #'OpenDBX-Core-Tests' #'...etc... > classes: {DBXBaseTest . DBXCompleteExamplesTest . DBXConnectionTest > . DBXDescri...etc... > classIndex: 0 > classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) > failedList: #() > failedSelected: nil > errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) > errorSelected: DBXQueryTimeoutTest>>#testNoTimeout > lastUpdate: 3431753837 > result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, > 0 unexpecte...etc... > previousRun: nil > > PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection: > Receiver: a PluggableListMorphPlus(3968) > Arguments and temporary variables: > anInteger: 1 > Receiver's instance variables: > bounds: 1481@397 corner: 1792@583 > owner: a PluggableStandardWindow(1639) > submorphs: an Array(a TransformMorph(3663)) > fullBounds: 1481@397 corner: 1792@583 > color: Color white > extension: a MorphExtension (3283) [locked] [other: (layoutFrame > -> a LayoutF...etc... > borderWidth: 1 > borderColor: (Color r: 0.667 g: 0.667 b: 0.667) > model: a TestRunner > slotName: nil > open: false > scrollBar: a ScrollBar(2643) > scroller: a TransformMorph(3663) > retractableScrollBar: false > scrollBarOnLeft: false > getMenuSelector: #errorMenu: > getMenuTitleSelector: nil > hasFocus: false > hScrollBar: a ScrollBar(2842) > list: #('DBXQueryTimeoutTest>>#testNoTimeout') > getListSelector: #errorList > getListSizeSelector: nil > getListElementSelector: nil > getIndexSelector: #errorSelected > setIndexSelector: #errorSelected: > keystrokeActionSelector: nil > autoDeselect: true > lastKeystrokeTime: 0 > lastKeystrokes: '' > doubleClickSelector: nil > handlesBasicKeys: nil > potentialDropRow: nil > listMorph: a LazyListMorph(884) > hScrollRangeCache: nil > dragItemSelector: nil > dropItemSelector: nil > wantsDropSelector: nil > > PluggableListMorphPlus(PluggableListMorph)>>mouseUp: > Receiver: a PluggableListMorphPlus(3968) > Arguments and temporary variables: > event: [1546@408 mouseUp 57402925 nil] > row: 1 > mdr: 1 > Receiver's instance variables: > bounds: 1481@397 corner: 1792@583 > owner: a PluggableStandardWindow(1639) > submorphs: an Array(a TransformMorph(3663)) > fullBounds: 1481@397 corner: 1792@583 > color: Color white > extension: a MorphExtension (3283) [locked] [other: (layoutFrame > -> a LayoutF...etc... > borderWidth: 1 > borderColor: (Color r: 0.667 g: 0.667 b: 0.667) > model: a TestRunner > slotName: nil > open: false > scrollBar: a ScrollBar(2643) > scroller: a TransformMorph(3663) > retractableScrollBar: false > scrollBarOnLeft: false > getMenuSelector: #errorMenu: > getMenuTitleSelector: nil > hasFocus: false > hScrollBar: a ScrollBar(2842) > list: #('DBXQueryTimeoutTest>>#testNoTimeout') > getListSelector: #errorList > getListSizeSelector: nil > getListElementSelector: nil > getIndexSelector: #errorSelected > setIndexSelector: #errorSelected: > keystrokeActionSelector: nil > autoDeselect: true > lastKeystrokeTime: 0 > lastKeystrokes: '' > doubleClickSelector: nil > handlesBasicKeys: nil > potentialDropRow: nil > listMorph: a LazyListMorph(884) > hScrollRangeCache: nil > dragItemSelector: nil > dropItemSelector: nil > wantsDropSelector: nil > > PluggableListMorphPlus(Morph)>>handleMouseUp: > Receiver: a PluggableListMorphPlus(3968) > Arguments and temporary variables: > anEvent: [1546@408 mouseUp 57402925 nil] > Receiver's instance variables: > bounds: 1481@397 corner: 1792@583 > owner: a PluggableStandardWindow(1639) > submorphs: an Array(a TransformMorph(3663)) > fullBounds: 1481@397 corner: 1792@583 > color: Color white > extension: a MorphExtension (3283) [locked] [other: (layoutFrame > -> a LayoutF...etc... > borderWidth: 1 > borderColor: (Color r: 0.667 g: 0.667 b: 0.667) > model: a TestRunner > slotName: nil > open: false > scrollBar: a ScrollBar(2643) > scroller: a TransformMorph(3663) > retractableScrollBar: false > scrollBarOnLeft: false > getMenuSelector: #errorMenu: > getMenuTitleSelector: nil > hasFocus: false > hScrollBar: a ScrollBar(2842) > list: #('DBXQueryTimeoutTest>>#testNoTimeout') > getListSelector: #errorList > getListSizeSelector: nil > getListElementSelector: nil > getIndexSelector: #errorSelected > setIndexSelector: #errorSelected: > keystrokeActionSelector: nil > autoDeselect: true > lastKeystrokeTime: 0 > lastKeystrokes: '' > doubleClickSelector: nil > handlesBasicKeys: nil > potentialDropRow: nil > listMorph: a LazyListMorph(884) > hScrollRangeCache: nil > dragItemSelector: nil > dropItemSelector: nil > wantsDropSelector: nil > > MouseButtonEvent>>sentTo: > Receiver: [1546@408 mouseUp 57402925 nil] > Arguments and temporary variables: > anObject: a PluggableListMorphPlus(3968) > Receiver's instance variables: > timeStamp: 57402925 > source: a HandMorph(3216) > windowIndex: nil > type: #mouseUp > buttons: 0 > position: 1546@408 > handler: nil > wasHandled: true > whichButton: 4 > > PluggableListMorphPlus(Morph)>>handleEvent: > Receiver: a PluggableListMorphPlus(3968) > Arguments and temporary variables: > anEvent: [1546@408 mouseUp 57402925 nil] > Receiver's instance variables: > bounds: 1481@397 corner: 1792@583 > owner: a PluggableStandardWindow(1639) > submorphs: an Array(a TransformMorph(3663)) > fullBounds: 1481@397 corner: 1792@583 > color: Color white > extension: a MorphExtension (3283) [locked] [other: (layoutFrame > -> a LayoutF...etc... > borderWidth: 1 > borderColor: (Color r: 0.667 g: 0.667 b: 0.667) > model: a TestRunner > slotName: nil > open: false > scrollBar: a ScrollBar(2643) > scroller: a TransformMorph(3663) > retractableScrollBar: false > scrollBarOnLeft: false > getMenuSelector: #errorMenu: > getMenuTitleSelector: nil > hasFocus: false > hScrollBar: a ScrollBar(2842) > list: #('DBXQueryTimeoutTest>>#testNoTimeout') > getListSelector: #errorList > getListSizeSelector: nil > getListElementSelector: nil > getIndexSelector: #errorSelected > setIndexSelector: #errorSelected: > keystrokeActionSelector: nil > autoDeselect: true > lastKeystrokeTime: 0 > lastKeystrokes: '' > doubleClickSelector: nil > handlesBasicKeys: nil > potentialDropRow: nil > listMorph: a LazyListMorph(884) > hScrollRangeCache: nil > dragItemSelector: nil > dropItemSelector: nil > wantsDropSelector: nil > > MorphicEventDispatcher>>dispatchDefault:with: > Receiver: a MorphicEventDispatcher > Arguments and temporary variables: > anEvent: [1546@408 mouseUp 57402925 nil] > aMorph: a PluggableListMorphPlus(3968) > localEvt: [1546@408 mouseUp 57402925 nil] > index: 2 > child: a TransformMorph(3663) > morphs: an Array(a TransformMorph(3663)) > inside: true > Receiver's instance variables: > lastType: #mouseUp > lastDispatch: #dispatchDefault:with: > > MorphicEventDispatcher>>dispatchEvent:with: > Receiver: a MorphicEventDispatcher > Arguments and temporary variables: > anEvent: [1546@408 mouseUp 57402925 nil] > aMorph: a PluggableListMorphPlus(3968) > Receiver's instance variables: > lastType: #mouseUp > lastDispatch: #dispatchDefault:with: > > PluggableListMorphPlus(Morph)>>processEvent:using: > Receiver: a PluggableListMorphPlus(3968) > Arguments and temporary variables: > anEvent: [1546@408 mouseUp 57402925 nil] > defaultDispatcher: a MorphicEventDispatcher > Receiver's instance variables: > bounds: 1481@397 corner: 1792@583 > owner: a PluggableStandardWindow(1639) > submorphs: an Array(a TransformMorph(3663)) > fullBounds: 1481@397 corner: 1792@583 > color: Color white > extension: a MorphExtension (3283) [locked] [other: (layoutFrame > -> a LayoutF...etc... > borderWidth: 1 > borderColor: (Color r: 0.667 g: 0.667 b: 0.667) > model: a TestRunner > slotName: nil > open: false > scrollBar: a ScrollBar(2643) > scroller: a TransformMorph(3663) > retractableScrollBar: false > scrollBarOnLeft: false > getMenuSelector: #errorMenu: > getMenuTitleSelector: nil > hasFocus: false > hScrollBar: a ScrollBar(2842) > list: #('DBXQueryTimeoutTest>>#testNoTimeout') > getListSelector: #errorList > getListSizeSelector: nil > getListElementSelector: nil > getIndexSelector: #errorSelected > setIndexSelector: #errorSelected: > keystrokeActionSelector: nil > autoDeselect: true > lastKeystrokeTime: 0 > lastKeystrokes: '' > doubleClickSelector: nil > handlesBasicKeys: nil > potentialDropRow: nil > listMorph: a LazyListMorph(884) > hScrollRangeCache: nil > dragItemSelector: nil > dropItemSelector: nil > wantsDropSelector: nil > > PluggableListMorphPlus(Morph)>>processEvent: > Receiver: a PluggableListMorphPlus(3968) > Arguments and temporary variables: > anEvent: [1546@408 mouseUp 57402925 nil] > Receiver's instance variables: > bounds: 1481@397 corner: 1792@583 > owner: a PluggableStandardWindow(1639) > submorphs: an Array(a TransformMorph(3663)) > fullBounds: 1481@397 corner: 1792@583 > color: Color white > extension: a MorphExtension (3283) [locked] [other: (layoutFrame > -> a LayoutF...etc... > borderWidth: 1 > borderColor: (Color r: 0.667 g: 0.667 b: 0.667) > model: a TestRunner > slotName: nil > open: false > scrollBar: a ScrollBar(2643) > scroller: a TransformMorph(3663) > retractableScrollBar: false > scrollBarOnLeft: false > getMenuSelector: #errorMenu: > getMenuTitleSelector: nil > hasFocus: false > hScrollBar: a ScrollBar(2842) > list: #('DBXQueryTimeoutTest>>#testNoTimeout') > getListSelector: #errorList > getListSizeSelector: nil > getListElementSelector: nil > getIndexSelector: #errorSelected > setIndexSelector: #errorSelected: > keystrokeActionSelector: nil > autoDeselect: true > lastKeystrokeTime: 0 > lastKeystrokes: '' > doubleClickSelector: nil > handlesBasicKeys: nil > potentialDropRow: nil > listMorph: a LazyListMorph(884) > hScrollRangeCache: nil > dragItemSelector: nil > dropItemSelector: nil > wantsDropSelector: nil > > PluggableListMorphPlus(PluggableListMorph)>>handleFocusEvent: > Receiver: a PluggableListMorphPlus(3968) > Arguments and temporary variables: > anEvent: [1546@408 mouseUp 57402925 nil] > Receiver's instance variables: > bounds: 1481@397 corner: 1792@583 > owner: a PluggableStandardWindow(1639) > submorphs: an Array(a TransformMorph(3663)) > fullBounds: 1481@397 corner: 1792@583 > color: Color white > extension: a MorphExtension (3283) [locked] [other: (layoutFrame > -> a LayoutF...etc... > borderWidth: 1 > borderColor: (Color r: 0.667 g: 0.667 b: 0.667) > model: a TestRunner > slotName: nil > open: false > scrollBar: a ScrollBar(2643) > scroller: a TransformMorph(3663) > retractableScrollBar: false > scrollBarOnLeft: false > getMenuSelector: #errorMenu: > getMenuTitleSelector: nil > hasFocus: false > hScrollBar: a ScrollBar(2842) > list: #('DBXQueryTimeoutTest>>#testNoTimeout') > getListSelector: #errorList > getListSizeSelector: nil > getListElementSelector: nil > getIndexSelector: #errorSelected > setIndexSelector: #errorSelected: > keystrokeActionSelector: nil > autoDeselect: true > lastKeystrokeTime: 0 > lastKeystrokes: '' > doubleClickSelector: nil > handlesBasicKeys: nil > potentialDropRow: nil > listMorph: a LazyListMorph(884) > hScrollRangeCache: nil > dragItemSelector: nil > dropItemSelector: nil > wantsDropSelector: nil > > [] in HandMorph>>sendFocusEvent:to:clear: > Receiver: a HandMorph(3216) > Arguments and temporary variables: > <<error during printing> > Receiver's instance variables: > bounds: 1071@619 corner: 1087@635 > owner: a PasteUpMorph(1622) [world] > submorphs: #() > fullBounds: 1071@619 corner: 1087@635 > color: Color blue > extension: a MorphExtension (539) [eventHandler = an EventHandler] > mouseFocus: nil > keyboardFocus: nil > eventListeners: nil > mouseListeners: nil > keyboardListeners: nil > mouseClickState: nil > mouseOverHandler: a MouseOverHandler > lastMouseEvent: [1071@619 1071@619 mouseMove 57619819 nil] > targetOffset: 188@12 > damageRecorder: a DamageRecorder > cacheCanvas: nil > cachedCanvasHasHoles: true > temporaryCursor: nil > temporaryCursorOffset: nil > hardwareCursor: nil > hasChanged: true > savedPatch: nil > userInitials: '' > lastEventBuffer: #(1 57619819 1071 619 0 0 0 1) > lastKeyScanCode: 36 > combinedChar: nil > > [] in PasteUpMorph>>becomeActiveDuring: > Receiver: a PasteUpMorph(1622) [world] > Arguments and temporary variables: > <<error during printing> > Receiver's instance variables: > bounds: 0@0 corner: 1920@1178 > owner: nil > submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a > PluggableStanda...etc... > fullBounds: 0@0 corner: 1920@1178 > color: Color gray > extension: a MorphExtension (2543) [eventHandler = an EventHandler] > [other: (...etc... > borderWidth: 0 > borderColor: (Color r: 0.5 g: 0.5 b: 0.5) > presenter: a Presenter (1246) > model: a MorphicModel(1926) > cursor: 1 > padding: 3 > backgroundMorph: nil > isPartsBin: nil > autoLineLayout: false > indicateCursor: nil > resizeToFit: nil > wantsMouseOverHalos: nil > worldState: a WorldState > griddingOn: nil > > BlockClosure>>on:do: > Receiver: [closure] in PasteUpMorph>>becomeActiveDuring: > Arguments and temporary variables: > exception: Error > handlerAction: [closure] in PasteUpMorph>>becomeActiveDuring: > handlerActive: false > Receiver's instance variables: > outerContext: PasteUpMorph>>becomeActiveDuring: > startpc: 67 > numArgs: 0 > > PasteUpMorph>>becomeActiveDuring: > Receiver: a PasteUpMorph(1622) [world] > Arguments and temporary variables: > aBlock: [closure] in HandMorph>>sendFocusEvent:to:clear: > priorWorld: a PasteUpMorph(1622) [world] > priorHand: a HandMorph(3216) > priorEvent: [1546@408 mouseOver red nil nil] > Receiver's instance variables: > bounds: 0@0 corner: 1920@1178 > owner: nil > submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a > PluggableStanda...etc... > fullBounds: 0@0 corner: 1920@1178 > color: Color gray > extension: a MorphExtension (2543) [eventHandler = an EventHandler] > [other: (...etc... > borderWidth: 0 > borderColor: (Color r: 0.5 g: 0.5 b: 0.5) > presenter: a Presenter (1246) > model: a MorphicModel(1926) > cursor: 1 > padding: 3 > backgroundMorph: nil > isPartsBin: nil > autoLineLayout: false > indicateCursor: nil > resizeToFit: nil > wantsMouseOverHalos: nil > worldState: a WorldState > griddingOn: nil > > HandMorph>>sendFocusEvent:to:clear: > Receiver: a HandMorph(3216) > Arguments and temporary variables: > anEvent: [1546@408 mouseUp 57402925 nil] > focusHolder: a PluggableListMorphPlus(3968) > aBlock: [closure] in HandMorph>>sendMouseEvent: > w: a PasteUpMorph(1622) [world] > result: #(nil) > Receiver's instance variables: > bounds: 1071@619 corner: 1087@635 > owner: a PasteUpMorph(1622) [world] > submorphs: #() > fullBounds: 1071@619 corner: 1087@635 > color: Color blue > extension: a MorphExtension (539) [eventHandler = an EventHandler] > mouseFocus: nil > keyboardFocus: nil > eventListeners: nil > mouseListeners: nil > keyboardListeners: nil > mouseClickState: nil > mouseOverHandler: a MouseOverHandler > lastMouseEvent: [1071@619 1071@619 mouseMove 57619819 nil] > targetOffset: 188@12 > damageRecorder: a DamageRecorder > cacheCanvas: nil > cachedCanvasHasHoles: true > temporaryCursor: nil > temporaryCursorOffset: nil > hardwareCursor: nil > hasChanged: true > savedPatch: nil > userInitials: '' > lastEventBuffer: #(1 57619819 1071 619 0 0 0 1) > lastKeyScanCode: 36 > combinedChar: nil > > > --- The full stack --- > UndefinedObject(Object)>>doesNotUnderstand: #asMiliseconds > [] in [] in > DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: > > DBXPostgresPlatform(DBXPlatform)>>nextResultSet:querySettings:onReturn: > [] in > DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: > BlockClosure>>doWhileTrue: > DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: > DBXPostgresPlatform(DBXPlatform)>>executeStatement:on:querySettings: > DBXConnection>>execute:querySettings: > DBXQueryTimeoutTest>>testNoTimeout > DBXQueryTimeoutTest(TestCase)>>performTest > [] in DBXQueryTimeoutTest(TestCase)>>runCase > BlockClosure>>ensure: > DBXQueryTimeoutTest(TestCase)>>runCase > [] in DBXQueryTimeoutTest(TestCase)>>debug > BlockClosure>>ensure: > DBXQueryTimeoutTest(TestCase)>>debug > [] in TestRunner>>debugSuite: > OrderedCollection>>do: > [] in TestRunner>>basicRunSuite:do: > BlockClosure>>ensure: > TestRunner>>basicRunSuite:do: > TestRunner>>debugSuite: > TestRunner>>debug: > TestRunner>>errorSelected: > PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection: > PluggableListMorphPlus(PluggableListMorph)>>mouseUp: > PluggableListMorphPlus(Morph)>>handleMouseUp: > MouseButtonEvent>>sentTo: > PluggableListMorphPlus(Morph)>>handleEvent: > MorphicEventDispatcher>>dispatchDefault:with: > MorphicEventDispatcher>>dispatchEvent:with: > PluggableListMorphPlus(Morph)>>processEvent:using: > PluggableListMorphPlus(Morph)>>processEvent: > PluggableListMorphPlus(PluggableListMorph)>>handleFocusEvent: > [] in HandMorph>>sendFocusEvent:to:clear: > [] in PasteUpMorph>>becomeActiveDuring: > BlockClosure>>on:do: > PasteUpMorph>>becomeActiveDuring: > HandMorph>>sendFocusEvent:to:clear: > - - - - - - - - - - - - - - - > - - - - - - - - - - - - - - - - - - > HandMorph>>sendEvent:focus:clear: > HandMorph>>sendMouseEvent: > HandMorph>>handleEvent: > HandMorph>>processEvents > [] in WorldState>>doOneCycleNowFor: > Array(SequenceableCollection)>>do: > WorldState>>handsDo: > WorldState>>doOneCycleNowFor: > WorldState>>doOneCycleFor: > PasteUpMorph>>doOneCycle > [] in Project class>>spawnNewProcess > [] in BlockClosure>>newProcess > > > On Tue, Sep 29, 2009 at 23:14, Mariano Martinez Peck < > marianopeck@gmail.com> wrote: > >> >> >> On Fri, Sep 25, 2009 at 12:07 PM, John Toohey jt@parspro.comwrote: >> >>> Had to rebuild a new image, changes file full, and Pharo still >>> cannot condense a change file. So, now I have a refresh image with just >>> GlorpDBX installed. Ran the tests and have 94 passed and one failure. The >>> failed test is DBXQueryNoTimeout and the failing method is #testNoTimeOut. >>> The DBXQuerySetting object's timeout property is Nil, and this throws a DNU >>> exception. >>> >> >> John: I am seeing this test but is green for me here in Linux and >> Windows :( >> I mean, I set a nil to the timeout property but I never send a >> message to that object. I just send a null trough FFI. >> >> Can you tell me where does the DNU occur, who DNU a message and >> which message was not understood ? It would be excellent you can send me >> the stacktrace. >> >> Thanks a lot for the testing! >> >> Mariano >> >> >> >>> Going to try to install Seaside now, and hopefully my own app then. >>> >>> >>> On Fri, Sep 25, 2009 at 09:38, Mariano Martinez Peck < >>> marianopeck@gmail.com> wrote: >>> >>>> >>>> >>>> On Fri, Sep 25, 2009 at 12:21 PM, Mariano Martinez Peck < >>>> marianopeck@gmail.com> wrote: >>>> >>>>> >>>>> >>>>> On Fri, Sep 25, 2009 at 12:04 PM, John Toohey jt@parspro.comwrote: >>>>> >>>>>> I now have a new image with Seaside 3 installed, however when I >>>>>> run the follow :- >>>>>> Installer ss project: 'SqueakDBX'; install: >>>>>> 'SqueakDBXPharoLoader'. >>>>>> SqueakDBXPharoLoader loadGlorpDBX >>>>>> >>>>>> This package depends on the following classes: >>>>>> PGConnection >>>>>> You must resolve these dependencies before you will be able to >>>>>> load these definitions: >>>>>> PGConnection classSide>>buildDefaultFieldConverters >>>>>> PGConnection classSide>>buildStateTransitionTable >>>>>> >>>>>> Do I need to install the Postgres driver before I do this? I >>>>>> thought it was part of the GlorpDBX install. >>>>>> >>>>> >>>>> Yeah, I know :( >>>>> It is difficult to explain but there is some places of Glorp >>>>> which still reference to PGConnection. However, it is not used. Don't worry. >>>>> Do a "proceed" and everything will be ok. >>>>> >>>> >>>> Ok. I found the problem. It's time to restrucutre some packages >>>> about Glorp. >>>> >>>> >>>> >>>>> I will then try to see how to fix this. >>>>> >>>>> what happened to SqueakDBX tests and the amount of connections? >>>>> did it work my commit ? >>>>> >>>>> Here is a summary of the things we did to GLorp and how to run >>>>> GlorpDBX tests: >>>>> >>>>> http://squeakdbx.smallworks.com.ar/GLORP integration >>>>> >>>>> Ok, it was a secret that webpage. It is our own website with >>>>> seaside and pier to replace the swiki :) We will then do the public ANN >>>>> hahaha. >>>>> >>>>> >>>>> >>>>> >>>>>> >>>>>> >>>>>> On Thu, Sep 24, 2009 at 21:16, Mariano Martinez Peck < >>>>>> marianopeck@gmail.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Thu, Sep 24, 2009 at 10:12 PM, John Toohey jt@parspro.comwrote: >>>>>>> >>>>>>>> I am running the OpenDBX-Core tests both from the TestRunner >>>>>>>> and the OBPackageBrowser. The tests run successfully until my DB runs out of >>>>>>>> connections. Latest Pharo, and latest GlorpDBX installed. >>>>>>>> >>>>>>>> >>>>>>> John: I have just noticed that a lot of SqueakDBX tests don't >>>>>>> release the DB connections, as you guessed. I have just commit. can you >>>>>>> please test it and let me know ? of course, you must first reboot or kill >>>>>>> all the active connections ;) >>>>>>> >>>>>>> >>>>>>> >>>>>>> "Name: OpenDBX-Core-Mariano.230 >>>>>>> Author: Mariano >>>>>>> Time: 24 September 2009, 10:15:03 pm >>>>>>> UUID: 19ce8340-3070-4495-a21d-cbe2b63aca0e >>>>>>> Ancestors: OpenDBX-Core-HMC.229 >>>>>>> >>>>>>> There were a lot of SqueakDBX tests that don't release the >>>>>>> connection after testing. So, this can result in a "Too many connections >>>>>>> error". Now, all tests release connections." >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> On Thu, Sep 24, 2009 at 20:52, Mariano Martinez Peck < >>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Sep 24, 2009 at 3:13 PM, John Toohey <jt@parspro.com >>>>>>>>> > wrote: >>>>>>>>> >>>>>>>>>> Okay, I've installed SqueakGlorp into my existing image, and >>>>>>>>>> added the symlink to the VM for openDBX. I can get up to 44 tests to pass, >>>>>>>>>> but it seems that the tests are not releasing their DB connections, so after >>>>>>>>>> a while the rest fail with a "Too many connections error" >>>>>>>>> >>>>>>>>> >>>>>>>>> These tests you are talking about are SqueakDBX tests or >>>>>>>>> Glorp tests when using SqueakDBX as the driver ? >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> Is this how it should be for those tests? I am just >>>>>>>>>> selecting the test package and selecting "run tests". >>>>>>>>>> >>>>>>>>>> >>>>>>>>> I need to know which tests are you running, if >>>>>>>>> OpenDBX-Core-Tests or GlorpTest. Anyway, tests should release connections. >>>>>>>>> If this is not done, so we have a bug in our tests. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Sep 24, 2009 at 12:24, Mariano Martinez Peck < >>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Thu, Sep 24, 2009 at 3:06 PM, John Toohey < >>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> - I've managed to build it on a VMWare VM running Ubunto, >>>>>>>>>>>> and using the --disable-utils switch, I've built it on OSX also. However on >>>>>>>>>>>> both systems when I run the test suite I see this :- >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Excellent news!!! I tell you: there is an utility called >>>>>>>>>>> odbx-sql that let you send queries trough OpenDBX. However, that utility >>>>>>>>>>> requires external libraries which seem to have problems, at least in >>>>>>>>>>> Windows. So, when we compile in Windows, we must disable that utility. But >>>>>>>>>>> remember this is an utility, not OpenDBX core or feature. It is not >>>>>>>>>>> important. I didn't know it has problems also with MacOS, so I will update >>>>>>>>>>> the webpage. Thanks for the testing!!!! >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> `--> ./odbxtest -b pgsql -h localhost -p 5432 -d juliet -u >>>>>>>>>>>> postgres -w postgres >>>>>>>>>>>> ODBX_CAP_BASIC: 1 >>>>>>>>>>>> ODBX_CAP_LO: 0 >>>>>>>>>>>> ODBX_OPT_API_VERSION: 10200 >>>>>>>>>>>> ODBX_OPT_THREAD_SAFE: 1 >>>>>>>>>>>> ODBX_OPT_TLS: 1 >>>>>>>>>>>> ODBX_OPT_CONNECT_TIMEOUT: 1 (using) >>>>>>>>>>>> ODBX_OPT_MULTI_STATEMENTS: 1 (using) >>>>>>>>>>>> ODBX_OPT_PAGED_RESULTS: 0 >>>>>>>>>>>> ODBX_OPT_COMPRESS: 0 >>>>>>>>>>>> ODBX_CAP_BASIC: 1 >>>>>>>>>>>> ODBX_CAP_LO: 0 >>>>>>>>>>>> ODBX_OPT_API_VERSION: 10200 >>>>>>>>>>>> ODBX_OPT_THREAD_SAFE: 1 >>>>>>>>>>>> ODBX_OPT_TLS: 1 >>>>>>>>>>>> ODBX_OPT_CONNECT_TIMEOUT: 1 (using) >>>>>>>>>>>> ODBX_OPT_MULTI_STATEMENTS: 1 (using) >>>>>>>>>>>> ODBX_OPT_PAGED_RESULTS: 0 >>>>>>>>>>>> ODBX_OPT_COMPRESS: 0 >>>>>>>>>>>> WARNING: nonstandard use of \ in a string literal >>>>>>>>>>>> LINE 1: SELECT * FROM odbxtest WHERE col = 'a''''\''b' >>>>>>>>>>>> ^ >>>>>>>>>>>> HINT: Use the escape string syntax for backslashes, e.g., >>>>>>>>>>>> E'\'. >>>>>>>>>>>> Error in odbx_result(): ERROR: relation "odbxtest" does >>>>>>>>>>>> not exist >>>>>>>>>>>> >>>>>>>>>>>> Error in odbx_result(): ERROR: relation "odbxtest" does >>>>>>>>>>>> not exist >>>>>>>>>>>> >>>>>>>>>>>> Not sure if this means there is a problem with the build >>>>>>>>>>>> (I downloaded to latest one) or a problem with the test suite. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> As you guessed this seems to be a problem with the test >>>>>>>>>>> suit, but the build is seems to be perfect. I will send this part to OpenDBX >>>>>>>>>>> mailing list and see if I receive some help. Thanks for the report. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> In order to continue and install GlorpDBX into my Pharo >>>>>>>>>>>> image, do I need to build a new image, as my current one already has >>>>>>>>>>>> Pharo-Glorp installed. I've never figured out how to uninstall packages in >>>>>>>>>>>> Smalltalk. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Yeah. Me neither :( >>>>>>>>>>> >>>>>>>>>>> But, what you can do is install just SqueakDBX in that >>>>>>>>>>> image and run the SqueakDBX tests, using PostgreSQL to see if everything is >>>>>>>>>>> ok. You should have all green tests. If you get this, I would really >>>>>>>>>>> appreciate if you can make a binary for MacOS :) >>>>>>>>>>> >>>>>>>>>>> Then, you can take a new image and install GlorpDBX as >>>>>>>>>>> explained in the wiki. Most of the tests should be green. I say "most" >>>>>>>>>>> because there are some that fails because of what I told you that we don't >>>>>>>>>>> support large database fields. >>>>>>>>>>> >>>>>>>>>>> Best, >>>>>>>>>>> >>>>>>>>>>> Mariano >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Thu, Sep 24, 2009 at 11:15, Mariano Martinez Peck < >>>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, Sep 24, 2009 at 1:59 PM, John Toohey < >>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> I'm currently trying to build openDBX on OSX. I've >>>>>>>>>>>>>> finally found the postgres client libs and include files, and I've run >>>>>>>>>>>>>> ./configure -with-backends="pgsql", but when I run make I get this error :- >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Excellent you are giving SqueakDBX at least a try. The >>>>>>>>>>>>> real thing is this: The squeakDBX team is composed by 4 people. Only one has >>>>>>>>>>>>> a Mac and he is very busy with his work. I have ALL databases working on >>>>>>>>>>>>> Linux and Windows. And I have also prepared binaries for that because I can >>>>>>>>>>>>> (dlls, .deb and .rpm). But I cannot do it with Mac because I don't have a >>>>>>>>>>>>> mac and I don't know how binaries work on Mac. If you make it work, I would >>>>>>>>>>>>> really love you help me generating the binaries so that I can update them to >>>>>>>>>>>>> OpenDBX website. >>>>>>>>>>>>> >>>>>>>>>>>>> Which OpenDBX version are you trying to compile? You >>>>>>>>>>>>> should try 1.4.3. >>>>>>>>>>>>> >>>>>>>>>>>>> Can you try configuring this way please ? >>>>>>>>>>>>> >>>>>>>>>>>>> ./configure --disable-utils --with-backends="pgsql" >>>>>>>>>>>>> >>>>>>>>>>>>> If it works, I then explain you why that :) >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Making all in po >>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-argmap.o -MD -MP -MF >>>>>>>>>>>>>> .deps/odbx_sql-argmap.Tpo -c -o odbx_sql-argmap.o `test -f 'argmap.cpp' || >>>>>>>>>>>>>> echo './'`argmap.cpp >>>>>>>>>>>>>> mv -f .deps/odbx_sql-argmap.Tpo .deps/odbx_sql-argmap.Po >>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-commands.o -MD -MP >>>>>>>>>>>>>> -MF .deps/odbx_sql-commands.Tpo -c -o odbx_sql-commands.o `test -f >>>>>>>>>>>>>> 'commands.cpp' || echo './'`commands.cpp >>>>>>>>>>>>>> mv -f .deps/odbx_sql-commands.Tpo >>>>>>>>>>>>>> .deps/odbx_sql-commands.Po >>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-completion.o -MD -MP >>>>>>>>>>>>>> -MF .deps/odbx_sql-completion.Tpo -c -o odbx_sql-completion.o `test -f >>>>>>>>>>>>>> 'completion.cpp' || echo './'`completion.cpp >>>>>>>>>>>>>> mv -f .deps/odbx_sql-completion.Tpo >>>>>>>>>>>>>> .deps/odbx_sql-completion.Po >>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-odbx-sql.o -MD -MP >>>>>>>>>>>>>> -MF .deps/odbx_sql-odbx-sql.Tpo -c -o odbx_sql-odbx-sql.o `test -f >>>>>>>>>>>>>> 'odbx-sql.cpp' || echo './'`odbx-sql.cpp >>>>>>>>>>>>>> odbx-sql.cpp: In function 'int main(int, char**)': >>>>>>>>>>>>>> odbx-sql.cpp:228: error: invalid conversion from 'char* >>>>>>>>>>>>>> (*)(const char*, int)' to 'int (*)(const char*, int)' >>>>>>>>>>>>>> make[3]: *** [odbx_sql-odbx-sql.o] Error 1 >>>>>>>>>>>>>> make[2]: *** [all-recursive] Error 1 >>>>>>>>>>>>>> make[1]: *** [all-recursive] Error 1 >>>>>>>>>>>>>> make: *** [all] Error 2 >>>>>>>>>>>>>> >>>>>>>>>>>>>> Do you know of any pre-built binaries that will work on >>>>>>>>>>>>>> OSX? >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> I don't know, but I would love to have them!!! >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 23:09, Mariano Martinez Peck < >>>>>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 11:27 PM, John Toohey < >>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hey, >>>>>>>>>>>>>>>> Thanks for looking into this for me. I'm just using >>>>>>>>>>>>>>>> Pharo as my app is using the beta of Seaside 3.0. I'm going to do as you >>>>>>>>>>>>>>>> suggested and put some debug statements in PGConnection, and see where that >>>>>>>>>>>>>>>> leads. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Ok, let us know what the problem was if you find it :) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Is it a lot of changes from me to switch to DBX on >>>>>>>>>>>>>>>> Pharo? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> No. Your application shouldn't have any changes. You >>>>>>>>>>>>>>> application will use just Glorp. But in this case Glorp won't use the native >>>>>>>>>>>>>>> PostgreSQL driver, but SqueakDBX with PostgreSQL. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I assume there are no changes in my Glorp code, but >>>>>>>>>>>>>>>> what else do I need to do. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The only thing you must do is: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> - Install the PostgreSQL client library (if you don't >>>>>>>>>>>>>>> have it already installed). >>>>>>>>>>>>>>> - Compile or Install (if you are in Linux you can use >>>>>>>>>>>>>>> the .rpm or .deb) OpenDBX with PostgreSQL, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> You can read how to do it here: >>>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6129 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> You must do it only once. Once this is done, everything >>>>>>>>>>>>>>> is easy and you can take advantage of all the SqueakDBX features ( >>>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6106). OpenDBX works >>>>>>>>>>>>>>> perfect with PostgreSQL in Linux, Mac and Windows. We have also have >>>>>>>>>>>>>>> GlorpDBX working with SqueakDBX and PostgreSQL and it is very easy to >>>>>>>>>>>>>>> install: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6130 (where it says >>>>>>>>>>>>>>> GlorpDBX). >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The only limitation we have right now is that we don't >>>>>>>>>>>>>>> support large objects (blob, clob, etc) yet. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> If you try it and have any problem, please, let us >>>>>>>>>>>>>>> know!!! >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I develop on OSX and deploy to Linux for production. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> No problem. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 21:03, Mariano Martinez Peck >>>>>>>>>>>>>>>> marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I was thinking if you have the problem in Squeak also >>>>>>>>>>>>>>>>> or just Pharo ? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:12 PM, Mariano Martinez >>>>>>>>>>>>>>>>> Peck marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:25 PM, John Toohey < >>>>>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi John! This list is SqueakDBX related, so perhaps >>>>>>>>>>>>>>>>>> I am not the best one to help you. I just make Glorp and PostgreSQL native >>>>>>>>>>>>>>>>>> driver to work on Pharo. Actually, the only thing I did is to have all green >>>>>>>>>>>>>>>>>> tests. No more than that. I don't have a Glorp + native postgresql driver >>>>>>>>>>>>>>>>>> application. Anyway, I will try to help you ;) >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> My app frequently losses the connection the >>>>>>>>>>>>>>>>>>> Postgres, and throws a "Connection not Valid" exception. Unfortunately on >>>>>>>>>>>>>>>>>>> the latest Pharo images, there is a bug that causes this to write the stack >>>>>>>>>>>>>>>>>>> trace to disk, and then the image locks up. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> you meat there is a Pharo bug that when there is a >>>>>>>>>>>>>>>>>> walkback and the stacktrace is written to disk, it freezes the image ? is >>>>>>>>>>>>>>>>>> there a bug report of that ? Could you reproduce that ? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I think the socket on the PGConnection class is >>>>>>>>>>>>>>>>>>> being closed or times out, and I need to know is there someway that I can >>>>>>>>>>>>>>>>>>> debug this or if its a know issue. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Yes, that's probably the case. I can see in code >>>>>>>>>>>>>>>>>> that the error 'Connection not valid' when the connection is not connected >>>>>>>>>>>>>>>>>> or if it is nil. If you see your stacktrace, you can see that the socket >>>>>>>>>>>>>>>>>> variable is nil. That's why the error. Now, the question is why the socket >>>>>>>>>>>>>>>>>> is nil ? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I looked for the code to see where can be the socket >>>>>>>>>>>>>>>>>> set to nil, and I found some places: PGConnection stTerminalError: , >>>>>>>>>>>>>>>>>> stTerminated >>>>>>>>>>>>>>>>>> Perhaps you can put a "self halt" in those methods >>>>>>>>>>>>>>>>>> and then debug them. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> The PGConnection seems to do a lot of "self log: >>>>>>>>>>>>>>>>>> 'XXXX'". So, perhaps you can have a Transcript opened to see that. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Finally, why don't you give a try to GlorpDBX + >>>>>>>>>>>>>>>>>> SqueakDBX ? It works pretty well and has good performance. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I hope this helps. Remember I am not a native >>>>>>>>>>>>>>>>>> postgresql driver guru. Perhaps you can ask also in squeak-dev or pharo >>>>>>>>>>>>>>>>>> mailing lists. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I am using the latest Pharo image, with the >>>>>>>>>>>>>>>>>>> latest Pharo-Glorp package, and the newest Postgres driver. I think this is >>>>>>>>>>>>>>>>>>> the relevant part of the stack trace :- >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> PGConnection(Object)>>error: >>>>>>>>>>>>>>>>>>> Receiver: a PGConnection >>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>> aString: 'Connection not valid' >>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>> trace: 0 >>>>>>>>>>>>>>>>>>> state: #Terminated >>>>>>>>>>>>>>>>>>> events: an OrderedCollection() >>>>>>>>>>>>>>>>>>> socket: nil >>>>>>>>>>>>>>>>>>> readBuffer: 'PblankT id ��name �$password >>>>>>>>>>>>>>>>>>> �6client...etc... >>>>>>>>>>>>>>>>>>> readIndex: 384 >>>>>>>>>>>>>>>>>>> lastReadIndex: 384 >>>>>>>>>>>>>>>>>>> writeBuffer: nil >>>>>>>>>>>>>>>>>>> processId: 28132 >>>>>>>>>>>>>>>>>>> secretKey: 1795051851 >>>>>>>>>>>>>>>>>>> sql: 'SELECT t1.id, t1.name, t1.password, >>>>>>>>>>>>>>>>>>> t1.client, t1.role, t1.mobile, t1.ema...etc... >>>>>>>>>>>>>>>>>>> functionCallOid: nil >>>>>>>>>>>>>>>>>>> functionCallArgs: nil >>>>>>>>>>>>>>>>>>> copyStream: nil >>>>>>>>>>>>>>>>>>> result: a PGResult >>>>>>>>>>>>>>>>>>> connectionArgs: a PGConnectionArgs >>>>>>>>>>>>>>>>>>> notificationSubscribers: nil >>>>>>>>>>>>>>>>>>> fieldConverters: an >>>>>>>>>>>>>>>>>>> IdentityDictionary(16->[closure] in PGConnection class>>boo...etc... >>>>>>>>>>>>>>>>>>> sqlStringConverter: [closure] in >>>>>>>>>>>>>>>>>>> PGConnection>>clientEncoding: >>>>>>>>>>>>>>>>>>> receivingTextConverter: an UTF8TextConverter >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> PGConnection>>execute: >>>>>>>>>>>>>>>>>>> Receiver: a PGConnection >>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>> sqlString: 'SELECT t1.id, t1.typename, >>>>>>>>>>>>>>>>>>> t1.description, t1.selectioncount, t1.pr...etc... >>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>> trace: 0 >>>>>>>>>>>>>>>>>>> state: #Terminated >>>>>>>>>>>>>>>>>>> events: an OrderedCollection() >>>>>>>>>>>>>>>>>>> socket: nil >>>>>>>>>>>>>>>>>>> readBuffer: 'PblankT id ��name �$password >>>>>>>>>>>>>>>>>>> �6client...etc... >>>>>>>>>>>>>>>>>>> readIndex: 384 >>>>>>>>>>>>>>>>>>> lastReadIndex: 384 >>>>>>>>>>>>>>>>>>> writeBuffer: nil >>>>>>>>>>>>>>>>>>> processId: 28132 >>>>>>>>>>>>>>>>>>> secretKey: 1795051851 >>>>>>>>>>>>>>>>>>> sql: 'SELECT t1.id, t1.name, t1.password, >>>>>>>>>>>>>>>>>>> t1.client, t1.role, t1.mobile, t1.ema...etc... >>>>>>>>>>>>>>>>>>> functionCallOid: nil >>>>>>>>>>>>>>>>>>> functionCallArgs: nil >>>>>>>>>>>>>>>>>>> copyStream: nil >>>>>>>>>>>>>>>>>>> result: a PGResult >>>>>>>>>>>>>>>>>>> connectionArgs: a PGConnectionArgs >>>>>>>>>>>>>>>>>>> notificationSubscribers: nil >>>>>>>>>>>>>>>>>>> fieldConverters: an >>>>>>>>>>>>>>>>>>> IdentityDictionary(16->[closure] in PGConnection class>>boo...etc... >>>>>>>>>>>>>>>>>>> sqlStringConverter: [closure] in >>>>>>>>>>>>>>>>>>> PGConnection>>clientEncoding: >>>>>>>>>>>>>>>>>>> receivingTextConverter: an UTF8TextConverter >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> SqueakDatabaseAccessor>>basicExecuteSQLString: >>>>>>>>>>>>>>>>>>> Receiver: a SqueakDatabaseAccessor >>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>> aString: 'SELECT t1.id, t1.typename, >>>>>>>>>>>>>>>>>>> t1.description, t1.selectioncount, t1.prio...etc... >>>>>>>>>>>>>>>>>>> result: nil >>>>>>>>>>>>>>>>>>> rowCollection: nil >>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>> connection: a PGConnection >>>>>>>>>>>>>>>>>>> currentLogin: a Login(a PostgreSQLPlatform, >>>>>>>>>>>>>>>>>>> 'postgres', '847129', 'localhost_ju...etc... >>>>>>>>>>>>>>>>>>> logging: true >>>>>>>>>>>>>>>>>>> reusePreparedStatements: nil >>>>>>>>>>>>>>>>>>> deniedCommands: nil >>>>>>>>>>>>>>>>>>> mutex: a Semaphore() >>>>>>>>>>>>>>>>>>> dependents: nil >>>>>>>>>>>>>>>>>>> isInTransaction: false >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Any help would be appreciated, as this is stopping >>>>>>>>>>>>>>>>>>> me from going to a Beta test at the moment. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>>> SqueakDBX mailing list >>>>>>>>>>>>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> -JT >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> -JT >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> -JT >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> SqueakDBX mailing list >>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> -JT >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> SqueakDBX mailing list >>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> -JT >>>>>> >>>>>> >>>>>> >>>>> >>>> >>>> _______________________________________________ >>>> SqueakDBX mailing list >>>> SqueakDBX@lists.squeakfoundation.org >>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>> >>>> >>> >>> >>> -- >>> -JT >>> >>> >>> >> > > > -- > -JT > > >
-- -JT
-- -JT
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
On Sat, Oct 3, 2009 at 1:39 PM, John Toohey jt@parspro.com wrote:
Okay, I think now I know what is going on. In my Seaside app, I allow the user to logout, and this method disconnects from the DB, and expires the Seaside session. I also have an expiration timeout set on the session. I think that Seaside is sending me a #unregistered message, after I have logged back in, and this method is calling #disconnect. I have removed some of the session handling code, and things are working a lot better now.
Excellent! Good research :)
However, I have know noticed something that was working fine with Glorp, and seems broken now.
when was woring? when you used Glorp + PostgreSQL native driver ? or before doing the changes you said about the seaside session ?
One of my classes that inserts new records in the DB is missing the id (sequence, pk) field. I can see from the GlorpDBX debug, that a call is made to Postgres for the next sequence number, but the insert statement is missing the id field. Here is the trace messages :-
odbx_query: called with values: handle = 380908736 query = select nextval('TOURNAMENTMARKETS_id_SEQ') from pg_attribute limit 1 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 3 odbx_result resultSet handle returned: 381100928 odbx_column_count: called with values: resultSet handle = 381100928 odbx_row_fetch: called with values: resultSet handle = 381100928 odbx_row_fetch call returned 1 odbx_row_fetch: called with values: resultSet handle = 381100928 odbx_row_fetch call returned 0 odbx_result_finish: called with values: resultSet handle = 381100928 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 0 odbx_result resultSet handle returned: 0 odbx_query: called with values: handle = 380908736 query = INSERT INTO TOURNAMENTS (bookmaker,event,name,status,fee,prizewin,prizeplace,payout,buyin,opentime,closetime,tournamenttype,maxpunters,odds,favourite,version) VALUES (1,1,'Tourney-A1','Unpublished',5,0,0,76,false,'2009-10-03 12:00:00','2009-10-03 12:00:00','Pari-Mutual',90,NULL,NULL,1) odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: -1 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 0 odbx_result resultSet handle returned: 0 12:27:22 pm - GlorpDatabaseWriteError: RECOVERABLE OpenDBX: ERROR: null value in column "id" violates not-null constraint
This is weird. The query select nextval('TOURNAMENTMARKETS_id_SEQ') from pg_attribute limit 1 works perfect using SqueakDBX (I have just tested it).
Now I wonder why Glorp didn't put the id in the query...do you know if this was working when you were using Glorp + PostgreSQL native driver ? Just to see where the cause of the problem can be. Perhaps it is a GLorp related problem that we should ask in Glorp mailing list.
Do you know that there is also (I think) some debug to enable in Glorp ? because what you send us is the SqueakDBX driver log, not Glorp.
Can you send us the mappings for the class/table TOURNAMENTS ?
which is the message you are sending to Glorp so that it generates the insert ?
Best,
Mariano
On Thu, Oct 1, 2009 at 15:33, Mariano Martinez Peck <marianopeck@gmail.com
wrote:
I fordward the email to the list.
On Thu, Oct 1, 2009 at 4:05 PM, John Toohey jt@parspro.com wrote:
Hey,Haven't loaded the latest yet, as I'm still debugging my connection timeout issue.
Ok, let's go step by step :)
No closer to the cause, but I have a better idea of what is happening now. In all my methods in my DB class, I call a method to get the glorpSession. In this method, I have a check to see if I am still logged in, and break if I am not. Now I see that, as I lazily initialize objects that are referred by foreign keys, the Glorp Proxy will make a DB call on my behalf, whenever I reference one of these objects. The Proxy calls #basicExecuteSQLString in the DataAccessor, and that calls #execute in DBXConnection. That is where the code check if the connection is open, and fails there.
Do you have any suggestions about how I can hook into that, and perhaps try to re-connect on that error?
Great progress!!! I am glad at least that our error handling is working properly ;)
The thing is that any thing you do, is a kind of hack. For example, I cannot reopen a connection in SqueakDBX in that case. Perhaps that change should be done in Glorp?
A hack could be to reopen the connection in #basicExecuteSQLString when that errors happen. Remember you already have a reOpen method in DBXConnection. I can add a reConnect if necessary. They good this that this is very easy, as you don't need to send the querySettings again as the connection already has it as an instance variable :)
Anyway, I don't understand something. The same connection was perfect some time ago it fails, Ok ? so...if it then disconnect or close, who closes that ? the GC? you ? glorp ? We don't handle timeouts or something like that and close the connection.
Cheers,
Mariano
On Wed, Sep 30, 2009 at 11:34, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Of course it would be excellent if you can run all tests not only the one with the problem so that to be sure I didn't break something else ;)
cheers,
mariano
On Wed, Sep 30, 2009 at 12:16 PM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Done:
Name: OpenDBX-Core-MarianoMartinezPeck.231 Author: MarianoMartinezPeck Time: 30 September 2009, 12:14:49 pm UUID: 780ee5d8-3d5f-0e46-b3c0-d22ca512b498 Ancestors: OpenDBX-Core-Mariano.230
Fix to possible bug. Now DBXPlatform uses the timeout of the QuerySetttings instead of the default.
Just download that version from monticello.
However, here at work I only have Sqlite3. So, I should test with all backend in Linux and Windows tonight at home.
Tell me if it works.
Best
Mariano
On Wed, Sep 30, 2009 at 11:23 AM, John Toohey jt@parspro.com wrote:
Good, let me know when there is an update, and how to install it, and I can test again.
On Wed, Sep 30, 2009 at 09:37, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
> Thanks John. I think you found a bug ;) The weird thing is that I > cannot reproduce it here. Perhaps it is because of the client library for > Mac. It's the only difference I see. > > Tonight I will test the fix I have just did and if everything is ok I > will commit it. > > Thank you very much. > > On Wed, Sep 30, 2009 at 10:02 AM, John Toohey jt@parspro.comwrote: > >> This is the full stack :- >> UndefinedObject(Object)>>doesNotUnderstand: #asMiliseconds >> Receiver: nil >> Arguments and temporary variables: >> aMessage: asMiliseconds >> exception: MessageNotUnderstood: receiver of "asMiliseconds" is nil >> resumeValue: nil >> Receiver's instance variables: >> nil >> >> [] in [] in >> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >> Receiver: a DBXPostgresPlatform >> Arguments and temporary variables: >> aConnection: 0 >> aQuerySettings: 1 >> returnCode: a DBXConnection >> handle: a DBXQuerySettings >> code: #(1) >> Receiver's instance variables: >> a DBXPostgresPlatform >> >> >> DBXPostgresPlatform(DBXPlatform)>>nextResultSet:querySettings:onReturn: >> Receiver: a DBXPostgresPlatform >> Arguments and temporary variables: >> aConnection: a DBXConnection >> aQuerySettings: a DBXQuerySettings >> aBlock: [closure] in [] in >> DBXPostgresPlatform(DBXPlatform)>>processNextResultS...etc... >> handle: 0 >> err: 1 >> handleArray: a WordArray(0) >> Receiver's instance variables: >> a DBXPostgresPlatform >> >> [] in >> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >> Receiver: a DBXPostgresPlatform >> Arguments and temporary variables: >> aConnection: a DBXConnection >> aQuerySettings: a DBXQuerySettings >> returnCode: #(1) >> Receiver's instance variables: >> a DBXPostgresPlatform >> >> BlockClosure>>doWhileTrue: >> Receiver: [closure] in >> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >> Arguments and temporary variables: >> conditionBlock: [closure] in >> DBXPostgresPlatform(DBXPlatform)>>processNextResul...etc... >> result: nil >> Receiver's instance variables: >> outerContext: >> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySetti...etc... >> startpc: 91 >> numArgs: 0 >> >> >> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >> Receiver: a DBXPostgresPlatform >> Arguments and temporary variables: >> aConnection: a DBXConnection >> aQuerySettings: a DBXQuerySettings >> returnCode: #(1) >> Receiver's instance variables: >> a DBXPostgresPlatform >> >> DBXPostgresPlatform(DBXPlatform)>>executeStatement:on:querySettings: >> Receiver: a DBXPostgresPlatform >> Arguments and temporary variables: >> aString: 'select * from student' >> aConnection: a DBXConnection >> aQuerySettings: a DBXQuerySettings >> err: 0 >> result: nil >> Receiver's instance variables: >> a DBXPostgresPlatform >> >> DBXConnection>>execute:querySettings: >> Receiver: a DBXConnection >> Arguments and temporary variables: >> aString: 'select * from student' >> aQuerySettings: a DBXQuerySettings >> aResult: nil >> Receiver's instance variables: >> platform: a DBXPostgresPlatform >> settings: a DBXConnectionSettings >> handle: 3118944 >> open: a ValueHolder >> connected: a ValueHolder >> result: nil >> >> DBXQueryTimeoutTest>>testNoTimeout >> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >> Arguments and temporary variables: >> conn: a DBXConnection >> aQuerySettings: a DBXQuerySettings >> rows: 5000 >> Receiver's instance variables: >> testSelector: #testNoTimeout >> facility: a DBXPostgreFacility >> connection: a DBXConnection >> >> DBXQueryTimeoutTest(TestCase)>>performTest >> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >> Arguments and temporary variables: >> >> Receiver's instance variables: >> testSelector: #testNoTimeout >> facility: a DBXPostgreFacility >> connection: a DBXConnection >> >> [] in DBXQueryTimeoutTest(TestCase)>>runCase >> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >> Arguments and temporary variables: >> >> Receiver's instance variables: >> testSelector: #testNoTimeout >> facility: a DBXPostgreFacility >> connection: a DBXConnection >> >> BlockClosure>>ensure: >> Receiver: [closure] in DBXQueryTimeoutTest(TestCase)>>runCase >> Arguments and temporary variables: >> aBlock: [closure] in DBXQueryTimeoutTest(TestCase)>>runCase >> returnValue: nil >> b: nil >> Receiver's instance variables: >> outerContext: DBXQueryTimeoutTest(TestCase)>>runCase >> startpc: 33 >> numArgs: 0 >> >> DBXQueryTimeoutTest(TestCase)>>runCase >> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >> Arguments and temporary variables: >> >> Receiver's instance variables: >> testSelector: #testNoTimeout >> facility: a DBXPostgreFacility >> connection: a DBXConnection >> >> [] in DBXQueryTimeoutTest(TestCase)>>debug >> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >> Arguments and temporary variables: >> >> Receiver's instance variables: >> testSelector: #testNoTimeout >> facility: a DBXPostgreFacility >> connection: nil >> >> BlockClosure>>ensure: >> Receiver: [closure] in DBXQueryTimeoutTest(TestCase)>>debug >> Arguments and temporary variables: >> aBlock: [closure] in DBXQueryTimeoutTest(TestCase)>>debug >> returnValue: nil >> b: nil >> Receiver's instance variables: >> outerContext: DBXQueryTimeoutTest(TestCase)>>debug >> startpc: 62 >> numArgs: 0 >> >> DBXQueryTimeoutTest(TestCase)>>debug >> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >> Arguments and temporary variables: >> >> Receiver's instance variables: >> testSelector: #testNoTimeout >> facility: a DBXPostgreFacility >> connection: nil >> >> [] in TestRunner>>debugSuite: >> Receiver: a TestRunner >> Arguments and temporary variables: >> <<error during printing> >> Receiver's instance variables: >> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >> #'AutomaticMetho...etc... >> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >> #'OpenDBX-Core-Tests' #'...etc... >> classes: {DBXBaseTest . DBXCompleteExamplesTest . >> DBXConnectionTest . DBXDescri...etc... >> classIndex: 0 >> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >> failedList: #() >> failedSelected: nil >> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >> lastUpdate: 3431753837 >> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, >> 0 unexpecte...etc... >> previousRun: nil >> >> OrderedCollection>>do: >> Receiver: an OrderedCollection(DBXQueryTimeoutTest>>#testNoTimeout) >> Arguments and temporary variables: >> aBlock: [closure] in TestRunner>>debugSuite: >> index: 3 >> Receiver's instance variables: >> array: an Array(nil nil DBXQueryTimeoutTest>>#testNoTimeout nil >> nil nil nil nil...etc... >> firstIndex: 3 >> lastIndex: 3 >> >> [] in TestRunner>>basicRunSuite:do: >> Receiver: a TestRunner >> Arguments and temporary variables: >> aTestSuite: a TestSuite >> aBlock: [closure] in TestRunner>>debugSuite: >> Receiver's instance variables: >> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >> #'AutomaticMetho...etc... >> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >> #'OpenDBX-Core-Tests' #'...etc... >> classes: {DBXBaseTest . DBXCompleteExamplesTest . >> DBXConnectionTest . DBXDescri...etc... >> classIndex: 0 >> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >> failedList: #() >> failedSelected: nil >> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >> lastUpdate: 3431753837 >> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, >> 0 unexpecte...etc... >> previousRun: nil >> >> BlockClosure>>ensure: >> Receiver: [closure] in TestRunner>>basicRunSuite:do: >> Arguments and temporary variables: >> aBlock: [closure] in TestRunner>>basicRunSuite:do: >> returnValue: nil >> b: nil >> Receiver's instance variables: >> outerContext: TestRunner>>basicRunSuite:do: >> startpc: 51 >> numArgs: 0 >> >> TestRunner>>basicRunSuite:do: >> Receiver: a TestRunner >> Arguments and temporary variables: >> aTestSuite: a TestSuite >> aBlock: [closure] in TestRunner>>debugSuite: >> Receiver's instance variables: >> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >> #'AutomaticMetho...etc... >> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >> #'OpenDBX-Core-Tests' #'...etc... >> classes: {DBXBaseTest . DBXCompleteExamplesTest . >> DBXConnectionTest . DBXDescri...etc... >> classIndex: 0 >> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >> failedList: #() >> failedSelected: nil >> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >> lastUpdate: 3431753837 >> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, >> 0 unexpecte...etc... >> previousRun: nil >> >> TestRunner>>debugSuite: >> Receiver: a TestRunner >> Arguments and temporary variables: >> aTestSuite: a TestSuite >> Receiver's instance variables: >> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >> #'AutomaticMetho...etc... >> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >> #'OpenDBX-Core-Tests' #'...etc... >> classes: {DBXBaseTest . DBXCompleteExamplesTest . >> DBXConnectionTest . DBXDescri...etc... >> classIndex: 0 >> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >> failedList: #() >> failedSelected: nil >> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >> lastUpdate: 3431753837 >> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, >> 0 unexpecte...etc... >> previousRun: nil >> >> TestRunner>>debug: >> Receiver: a TestRunner >> Arguments and temporary variables: >> aTestCase: DBXQueryTimeoutTest>>#testNoTimeout >> Receiver's instance variables: >> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >> #'AutomaticMetho...etc... >> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >> #'OpenDBX-Core-Tests' #'...etc... >> classes: {DBXBaseTest . DBXCompleteExamplesTest . >> DBXConnectionTest . DBXDescri...etc... >> classIndex: 0 >> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >> failedList: #() >> failedSelected: nil >> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >> lastUpdate: 3431753837 >> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, >> 0 unexpecte...etc... >> previousRun: nil >> >> TestRunner>>errorSelected: >> Receiver: a TestRunner >> Arguments and temporary variables: >> anInteger: 1 >> Receiver's instance variables: >> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >> #'AutomaticMetho...etc... >> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >> #'OpenDBX-Core-Tests' #'...etc... >> classes: {DBXBaseTest . DBXCompleteExamplesTest . >> DBXConnectionTest . DBXDescri...etc... >> classIndex: 0 >> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >> failedList: #() >> failedSelected: nil >> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >> lastUpdate: 3431753837 >> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 errors, >> 0 unexpecte...etc... >> previousRun: nil >> >> PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection: >> Receiver: a PluggableListMorphPlus(3968) >> Arguments and temporary variables: >> anInteger: 1 >> Receiver's instance variables: >> bounds: 1481@397 corner: 1792@583 >> owner: a PluggableStandardWindow(1639) >> submorphs: an Array(a TransformMorph(3663)) >> fullBounds: 1481@397 corner: 1792@583 >> color: Color white >> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >> -> a LayoutF...etc... >> borderWidth: 1 >> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >> model: a TestRunner >> slotName: nil >> open: false >> scrollBar: a ScrollBar(2643) >> scroller: a TransformMorph(3663) >> retractableScrollBar: false >> scrollBarOnLeft: false >> getMenuSelector: #errorMenu: >> getMenuTitleSelector: nil >> hasFocus: false >> hScrollBar: a ScrollBar(2842) >> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >> getListSelector: #errorList >> getListSizeSelector: nil >> getListElementSelector: nil >> getIndexSelector: #errorSelected >> setIndexSelector: #errorSelected: >> keystrokeActionSelector: nil >> autoDeselect: true >> lastKeystrokeTime: 0 >> lastKeystrokes: '' >> doubleClickSelector: nil >> handlesBasicKeys: nil >> potentialDropRow: nil >> listMorph: a LazyListMorph(884) >> hScrollRangeCache: nil >> dragItemSelector: nil >> dropItemSelector: nil >> wantsDropSelector: nil >> >> PluggableListMorphPlus(PluggableListMorph)>>mouseUp: >> Receiver: a PluggableListMorphPlus(3968) >> Arguments and temporary variables: >> event: [1546@408 mouseUp 57402925 nil] >> row: 1 >> mdr: 1 >> Receiver's instance variables: >> bounds: 1481@397 corner: 1792@583 >> owner: a PluggableStandardWindow(1639) >> submorphs: an Array(a TransformMorph(3663)) >> fullBounds: 1481@397 corner: 1792@583 >> color: Color white >> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >> -> a LayoutF...etc... >> borderWidth: 1 >> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >> model: a TestRunner >> slotName: nil >> open: false >> scrollBar: a ScrollBar(2643) >> scroller: a TransformMorph(3663) >> retractableScrollBar: false >> scrollBarOnLeft: false >> getMenuSelector: #errorMenu: >> getMenuTitleSelector: nil >> hasFocus: false >> hScrollBar: a ScrollBar(2842) >> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >> getListSelector: #errorList >> getListSizeSelector: nil >> getListElementSelector: nil >> getIndexSelector: #errorSelected >> setIndexSelector: #errorSelected: >> keystrokeActionSelector: nil >> autoDeselect: true >> lastKeystrokeTime: 0 >> lastKeystrokes: '' >> doubleClickSelector: nil >> handlesBasicKeys: nil >> potentialDropRow: nil >> listMorph: a LazyListMorph(884) >> hScrollRangeCache: nil >> dragItemSelector: nil >> dropItemSelector: nil >> wantsDropSelector: nil >> >> PluggableListMorphPlus(Morph)>>handleMouseUp: >> Receiver: a PluggableListMorphPlus(3968) >> Arguments and temporary variables: >> anEvent: [1546@408 mouseUp 57402925 nil] >> Receiver's instance variables: >> bounds: 1481@397 corner: 1792@583 >> owner: a PluggableStandardWindow(1639) >> submorphs: an Array(a TransformMorph(3663)) >> fullBounds: 1481@397 corner: 1792@583 >> color: Color white >> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >> -> a LayoutF...etc... >> borderWidth: 1 >> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >> model: a TestRunner >> slotName: nil >> open: false >> scrollBar: a ScrollBar(2643) >> scroller: a TransformMorph(3663) >> retractableScrollBar: false >> scrollBarOnLeft: false >> getMenuSelector: #errorMenu: >> getMenuTitleSelector: nil >> hasFocus: false >> hScrollBar: a ScrollBar(2842) >> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >> getListSelector: #errorList >> getListSizeSelector: nil >> getListElementSelector: nil >> getIndexSelector: #errorSelected >> setIndexSelector: #errorSelected: >> keystrokeActionSelector: nil >> autoDeselect: true >> lastKeystrokeTime: 0 >> lastKeystrokes: '' >> doubleClickSelector: nil >> handlesBasicKeys: nil >> potentialDropRow: nil >> listMorph: a LazyListMorph(884) >> hScrollRangeCache: nil >> dragItemSelector: nil >> dropItemSelector: nil >> wantsDropSelector: nil >> >> MouseButtonEvent>>sentTo: >> Receiver: [1546@408 mouseUp 57402925 nil] >> Arguments and temporary variables: >> anObject: a PluggableListMorphPlus(3968) >> Receiver's instance variables: >> timeStamp: 57402925 >> source: a HandMorph(3216) >> windowIndex: nil >> type: #mouseUp >> buttons: 0 >> position: 1546@408 >> handler: nil >> wasHandled: true >> whichButton: 4 >> >> PluggableListMorphPlus(Morph)>>handleEvent: >> Receiver: a PluggableListMorphPlus(3968) >> Arguments and temporary variables: >> anEvent: [1546@408 mouseUp 57402925 nil] >> Receiver's instance variables: >> bounds: 1481@397 corner: 1792@583 >> owner: a PluggableStandardWindow(1639) >> submorphs: an Array(a TransformMorph(3663)) >> fullBounds: 1481@397 corner: 1792@583 >> color: Color white >> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >> -> a LayoutF...etc... >> borderWidth: 1 >> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >> model: a TestRunner >> slotName: nil >> open: false >> scrollBar: a ScrollBar(2643) >> scroller: a TransformMorph(3663) >> retractableScrollBar: false >> scrollBarOnLeft: false >> getMenuSelector: #errorMenu: >> getMenuTitleSelector: nil >> hasFocus: false >> hScrollBar: a ScrollBar(2842) >> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >> getListSelector: #errorList >> getListSizeSelector: nil >> getListElementSelector: nil >> getIndexSelector: #errorSelected >> setIndexSelector: #errorSelected: >> keystrokeActionSelector: nil >> autoDeselect: true >> lastKeystrokeTime: 0 >> lastKeystrokes: '' >> doubleClickSelector: nil >> handlesBasicKeys: nil >> potentialDropRow: nil >> listMorph: a LazyListMorph(884) >> hScrollRangeCache: nil >> dragItemSelector: nil >> dropItemSelector: nil >> wantsDropSelector: nil >> >> MorphicEventDispatcher>>dispatchDefault:with: >> Receiver: a MorphicEventDispatcher >> Arguments and temporary variables: >> anEvent: [1546@408 mouseUp 57402925 nil] >> aMorph: a PluggableListMorphPlus(3968) >> localEvt: [1546@408 mouseUp 57402925 nil] >> index: 2 >> child: a TransformMorph(3663) >> morphs: an Array(a TransformMorph(3663)) >> inside: true >> Receiver's instance variables: >> lastType: #mouseUp >> lastDispatch: #dispatchDefault:with: >> >> MorphicEventDispatcher>>dispatchEvent:with: >> Receiver: a MorphicEventDispatcher >> Arguments and temporary variables: >> anEvent: [1546@408 mouseUp 57402925 nil] >> aMorph: a PluggableListMorphPlus(3968) >> Receiver's instance variables: >> lastType: #mouseUp >> lastDispatch: #dispatchDefault:with: >> >> PluggableListMorphPlus(Morph)>>processEvent:using: >> Receiver: a PluggableListMorphPlus(3968) >> Arguments and temporary variables: >> anEvent: [1546@408 mouseUp 57402925 nil] >> defaultDispatcher: a MorphicEventDispatcher >> Receiver's instance variables: >> bounds: 1481@397 corner: 1792@583 >> owner: a PluggableStandardWindow(1639) >> submorphs: an Array(a TransformMorph(3663)) >> fullBounds: 1481@397 corner: 1792@583 >> color: Color white >> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >> -> a LayoutF...etc... >> borderWidth: 1 >> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >> model: a TestRunner >> slotName: nil >> open: false >> scrollBar: a ScrollBar(2643) >> scroller: a TransformMorph(3663) >> retractableScrollBar: false >> scrollBarOnLeft: false >> getMenuSelector: #errorMenu: >> getMenuTitleSelector: nil >> hasFocus: false >> hScrollBar: a ScrollBar(2842) >> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >> getListSelector: #errorList >> getListSizeSelector: nil >> getListElementSelector: nil >> getIndexSelector: #errorSelected >> setIndexSelector: #errorSelected: >> keystrokeActionSelector: nil >> autoDeselect: true >> lastKeystrokeTime: 0 >> lastKeystrokes: '' >> doubleClickSelector: nil >> handlesBasicKeys: nil >> potentialDropRow: nil >> listMorph: a LazyListMorph(884) >> hScrollRangeCache: nil >> dragItemSelector: nil >> dropItemSelector: nil >> wantsDropSelector: nil >> >> PluggableListMorphPlus(Morph)>>processEvent: >> Receiver: a PluggableListMorphPlus(3968) >> Arguments and temporary variables: >> anEvent: [1546@408 mouseUp 57402925 nil] >> Receiver's instance variables: >> bounds: 1481@397 corner: 1792@583 >> owner: a PluggableStandardWindow(1639) >> submorphs: an Array(a TransformMorph(3663)) >> fullBounds: 1481@397 corner: 1792@583 >> color: Color white >> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >> -> a LayoutF...etc... >> borderWidth: 1 >> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >> model: a TestRunner >> slotName: nil >> open: false >> scrollBar: a ScrollBar(2643) >> scroller: a TransformMorph(3663) >> retractableScrollBar: false >> scrollBarOnLeft: false >> getMenuSelector: #errorMenu: >> getMenuTitleSelector: nil >> hasFocus: false >> hScrollBar: a ScrollBar(2842) >> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >> getListSelector: #errorList >> getListSizeSelector: nil >> getListElementSelector: nil >> getIndexSelector: #errorSelected >> setIndexSelector: #errorSelected: >> keystrokeActionSelector: nil >> autoDeselect: true >> lastKeystrokeTime: 0 >> lastKeystrokes: '' >> doubleClickSelector: nil >> handlesBasicKeys: nil >> potentialDropRow: nil >> listMorph: a LazyListMorph(884) >> hScrollRangeCache: nil >> dragItemSelector: nil >> dropItemSelector: nil >> wantsDropSelector: nil >> >> PluggableListMorphPlus(PluggableListMorph)>>handleFocusEvent: >> Receiver: a PluggableListMorphPlus(3968) >> Arguments and temporary variables: >> anEvent: [1546@408 mouseUp 57402925 nil] >> Receiver's instance variables: >> bounds: 1481@397 corner: 1792@583 >> owner: a PluggableStandardWindow(1639) >> submorphs: an Array(a TransformMorph(3663)) >> fullBounds: 1481@397 corner: 1792@583 >> color: Color white >> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >> -> a LayoutF...etc... >> borderWidth: 1 >> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >> model: a TestRunner >> slotName: nil >> open: false >> scrollBar: a ScrollBar(2643) >> scroller: a TransformMorph(3663) >> retractableScrollBar: false >> scrollBarOnLeft: false >> getMenuSelector: #errorMenu: >> getMenuTitleSelector: nil >> hasFocus: false >> hScrollBar: a ScrollBar(2842) >> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >> getListSelector: #errorList >> getListSizeSelector: nil >> getListElementSelector: nil >> getIndexSelector: #errorSelected >> setIndexSelector: #errorSelected: >> keystrokeActionSelector: nil >> autoDeselect: true >> lastKeystrokeTime: 0 >> lastKeystrokes: '' >> doubleClickSelector: nil >> handlesBasicKeys: nil >> potentialDropRow: nil >> listMorph: a LazyListMorph(884) >> hScrollRangeCache: nil >> dragItemSelector: nil >> dropItemSelector: nil >> wantsDropSelector: nil >> >> [] in HandMorph>>sendFocusEvent:to:clear: >> Receiver: a HandMorph(3216) >> Arguments and temporary variables: >> <<error during printing> >> Receiver's instance variables: >> bounds: 1071@619 corner: 1087@635 >> owner: a PasteUpMorph(1622) [world] >> submorphs: #() >> fullBounds: 1071@619 corner: 1087@635 >> color: Color blue >> extension: a MorphExtension (539) [eventHandler = an >> EventHandler] >> mouseFocus: nil >> keyboardFocus: nil >> eventListeners: nil >> mouseListeners: nil >> keyboardListeners: nil >> mouseClickState: nil >> mouseOverHandler: a MouseOverHandler >> lastMouseEvent: [1071@619 1071@619 mouseMove 57619819 nil] >> targetOffset: 188@12 >> damageRecorder: a DamageRecorder >> cacheCanvas: nil >> cachedCanvasHasHoles: true >> temporaryCursor: nil >> temporaryCursorOffset: nil >> hardwareCursor: nil >> hasChanged: true >> savedPatch: nil >> userInitials: '' >> lastEventBuffer: #(1 57619819 1071 619 0 0 0 1) >> lastKeyScanCode: 36 >> combinedChar: nil >> >> [] in PasteUpMorph>>becomeActiveDuring: >> Receiver: a PasteUpMorph(1622) [world] >> Arguments and temporary variables: >> <<error during printing> >> Receiver's instance variables: >> bounds: 0@0 corner: 1920@1178 >> owner: nil >> submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a >> PluggableStanda...etc... >> fullBounds: 0@0 corner: 1920@1178 >> color: Color gray >> extension: a MorphExtension (2543) [eventHandler = an >> EventHandler] [other: (...etc... >> borderWidth: 0 >> borderColor: (Color r: 0.5 g: 0.5 b: 0.5) >> presenter: a Presenter (1246) >> model: a MorphicModel(1926) >> cursor: 1 >> padding: 3 >> backgroundMorph: nil >> isPartsBin: nil >> autoLineLayout: false >> indicateCursor: nil >> resizeToFit: nil >> wantsMouseOverHalos: nil >> worldState: a WorldState >> griddingOn: nil >> >> BlockClosure>>on:do: >> Receiver: [closure] in PasteUpMorph>>becomeActiveDuring: >> Arguments and temporary variables: >> exception: Error >> handlerAction: [closure] in PasteUpMorph>>becomeActiveDuring: >> handlerActive: false >> Receiver's instance variables: >> outerContext: PasteUpMorph>>becomeActiveDuring: >> startpc: 67 >> numArgs: 0 >> >> PasteUpMorph>>becomeActiveDuring: >> Receiver: a PasteUpMorph(1622) [world] >> Arguments and temporary variables: >> aBlock: [closure] in HandMorph>>sendFocusEvent:to:clear: >> priorWorld: a PasteUpMorph(1622) [world] >> priorHand: a HandMorph(3216) >> priorEvent: [1546@408 mouseOver red nil nil] >> Receiver's instance variables: >> bounds: 0@0 corner: 1920@1178 >> owner: nil >> submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a >> PluggableStanda...etc... >> fullBounds: 0@0 corner: 1920@1178 >> color: Color gray >> extension: a MorphExtension (2543) [eventHandler = an >> EventHandler] [other: (...etc... >> borderWidth: 0 >> borderColor: (Color r: 0.5 g: 0.5 b: 0.5) >> presenter: a Presenter (1246) >> model: a MorphicModel(1926) >> cursor: 1 >> padding: 3 >> backgroundMorph: nil >> isPartsBin: nil >> autoLineLayout: false >> indicateCursor: nil >> resizeToFit: nil >> wantsMouseOverHalos: nil >> worldState: a WorldState >> griddingOn: nil >> >> HandMorph>>sendFocusEvent:to:clear: >> Receiver: a HandMorph(3216) >> Arguments and temporary variables: >> anEvent: [1546@408 mouseUp 57402925 nil] >> focusHolder: a PluggableListMorphPlus(3968) >> aBlock: [closure] in HandMorph>>sendMouseEvent: >> w: a PasteUpMorph(1622) [world] >> result: #(nil) >> Receiver's instance variables: >> bounds: 1071@619 corner: 1087@635 >> owner: a PasteUpMorph(1622) [world] >> submorphs: #() >> fullBounds: 1071@619 corner: 1087@635 >> color: Color blue >> extension: a MorphExtension (539) [eventHandler = an EventHandler] >> mouseFocus: nil >> keyboardFocus: nil >> eventListeners: nil >> mouseListeners: nil >> keyboardListeners: nil >> mouseClickState: nil >> mouseOverHandler: a MouseOverHandler >> lastMouseEvent: [1071@619 1071@619 mouseMove 57619819 nil] >> targetOffset: 188@12 >> damageRecorder: a DamageRecorder >> cacheCanvas: nil >> cachedCanvasHasHoles: true >> temporaryCursor: nil >> temporaryCursorOffset: nil >> hardwareCursor: nil >> hasChanged: true >> savedPatch: nil >> userInitials: '' >> lastEventBuffer: #(1 57619819 1071 619 0 0 0 1) >> lastKeyScanCode: 36 >> combinedChar: nil >> >> >> --- The full stack --- >> UndefinedObject(Object)>>doesNotUnderstand: #asMiliseconds >> [] in [] in >> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >> >> DBXPostgresPlatform(DBXPlatform)>>nextResultSet:querySettings:onReturn: >> [] in >> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >> BlockClosure>>doWhileTrue: >> >> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >> DBXPostgresPlatform(DBXPlatform)>>executeStatement:on:querySettings: >> DBXConnection>>execute:querySettings: >> DBXQueryTimeoutTest>>testNoTimeout >> DBXQueryTimeoutTest(TestCase)>>performTest >> [] in DBXQueryTimeoutTest(TestCase)>>runCase >> BlockClosure>>ensure: >> DBXQueryTimeoutTest(TestCase)>>runCase >> [] in DBXQueryTimeoutTest(TestCase)>>debug >> BlockClosure>>ensure: >> DBXQueryTimeoutTest(TestCase)>>debug >> [] in TestRunner>>debugSuite: >> OrderedCollection>>do: >> [] in TestRunner>>basicRunSuite:do: >> BlockClosure>>ensure: >> TestRunner>>basicRunSuite:do: >> TestRunner>>debugSuite: >> TestRunner>>debug: >> TestRunner>>errorSelected: >> PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection: >> PluggableListMorphPlus(PluggableListMorph)>>mouseUp: >> PluggableListMorphPlus(Morph)>>handleMouseUp: >> MouseButtonEvent>>sentTo: >> PluggableListMorphPlus(Morph)>>handleEvent: >> MorphicEventDispatcher>>dispatchDefault:with: >> MorphicEventDispatcher>>dispatchEvent:with: >> PluggableListMorphPlus(Morph)>>processEvent:using: >> PluggableListMorphPlus(Morph)>>processEvent: >> PluggableListMorphPlus(PluggableListMorph)>>handleFocusEvent: >> [] in HandMorph>>sendFocusEvent:to:clear: >> [] in PasteUpMorph>>becomeActiveDuring: >> BlockClosure>>on:do: >> PasteUpMorph>>becomeActiveDuring: >> HandMorph>>sendFocusEvent:to:clear: >> - - - - - - - - - - - - - - - >> - - - - - - - - - - - - - - - - - - >> HandMorph>>sendEvent:focus:clear: >> HandMorph>>sendMouseEvent: >> HandMorph>>handleEvent: >> HandMorph>>processEvents >> [] in WorldState>>doOneCycleNowFor: >> Array(SequenceableCollection)>>do: >> WorldState>>handsDo: >> WorldState>>doOneCycleNowFor: >> WorldState>>doOneCycleFor: >> PasteUpMorph>>doOneCycle >> [] in Project class>>spawnNewProcess >> [] in BlockClosure>>newProcess >> >> >> On Tue, Sep 29, 2009 at 23:14, Mariano Martinez Peck < >> marianopeck@gmail.com> wrote: >> >>> >>> >>> On Fri, Sep 25, 2009 at 12:07 PM, John Toohey jt@parspro.comwrote: >>> >>>> Had to rebuild a new image, changes file full, and Pharo still >>>> cannot condense a change file. So, now I have a refresh image with just >>>> GlorpDBX installed. Ran the tests and have 94 passed and one failure. The >>>> failed test is DBXQueryNoTimeout and the failing method is #testNoTimeOut. >>>> The DBXQuerySetting object's timeout property is Nil, and this throws a DNU >>>> exception. >>>> >>> >>> John: I am seeing this test but is green for me here in Linux and >>> Windows :( >>> I mean, I set a nil to the timeout property but I never send a >>> message to that object. I just send a null trough FFI. >>> >>> Can you tell me where does the DNU occur, who DNU a message and >>> which message was not understood ? It would be excellent you can send me >>> the stacktrace. >>> >>> Thanks a lot for the testing! >>> >>> Mariano >>> >>> >>> >>>> Going to try to install Seaside now, and hopefully my own app >>>> then. >>>> >>>> >>>> On Fri, Sep 25, 2009 at 09:38, Mariano Martinez Peck < >>>> marianopeck@gmail.com> wrote: >>>> >>>>> >>>>> >>>>> On Fri, Sep 25, 2009 at 12:21 PM, Mariano Martinez Peck < >>>>> marianopeck@gmail.com> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Fri, Sep 25, 2009 at 12:04 PM, John Toohey jt@parspro.comwrote: >>>>>> >>>>>>> I now have a new image with Seaside 3 installed, however when I >>>>>>> run the follow :- >>>>>>> Installer ss project: 'SqueakDBX'; install: >>>>>>> 'SqueakDBXPharoLoader'. >>>>>>> SqueakDBXPharoLoader loadGlorpDBX >>>>>>> >>>>>>> This package depends on the following classes: >>>>>>> PGConnection >>>>>>> You must resolve these dependencies before you will be able to >>>>>>> load these definitions: >>>>>>> PGConnection classSide>>buildDefaultFieldConverters >>>>>>> PGConnection classSide>>buildStateTransitionTable >>>>>>> >>>>>>> Do I need to install the Postgres driver before I do this? I >>>>>>> thought it was part of the GlorpDBX install. >>>>>>> >>>>>> >>>>>> Yeah, I know :( >>>>>> It is difficult to explain but there is some places of Glorp >>>>>> which still reference to PGConnection. However, it is not used. Don't worry. >>>>>> Do a "proceed" and everything will be ok. >>>>>> >>>>> >>>>> Ok. I found the problem. It's time to restrucutre some packages >>>>> about Glorp. >>>>> >>>>> >>>>> >>>>>> I will then try to see how to fix this. >>>>>> >>>>>> what happened to SqueakDBX tests and the amount of connections? >>>>>> did it work my commit ? >>>>>> >>>>>> Here is a summary of the things we did to GLorp and how to run >>>>>> GlorpDBX tests: >>>>>> >>>>>> http://squeakdbx.smallworks.com.ar/GLORP integration >>>>>> >>>>>> Ok, it was a secret that webpage. It is our own website with >>>>>> seaside and pier to replace the swiki :) We will then do the public ANN >>>>>> hahaha. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>> On Thu, Sep 24, 2009 at 21:16, Mariano Martinez Peck < >>>>>>> marianopeck@gmail.com> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Sep 24, 2009 at 10:12 PM, John Toohey <jt@parspro.com >>>>>>>> > wrote: >>>>>>>> >>>>>>>>> I am running the OpenDBX-Core tests both from the TestRunner >>>>>>>>> and the OBPackageBrowser. The tests run successfully until my DB runs out of >>>>>>>>> connections. Latest Pharo, and latest GlorpDBX installed. >>>>>>>>> >>>>>>>>> >>>>>>>> John: I have just noticed that a lot of SqueakDBX tests don't >>>>>>>> release the DB connections, as you guessed. I have just commit. can you >>>>>>>> please test it and let me know ? of course, you must first reboot or kill >>>>>>>> all the active connections ;) >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> "Name: OpenDBX-Core-Mariano.230 >>>>>>>> Author: Mariano >>>>>>>> Time: 24 September 2009, 10:15:03 pm >>>>>>>> UUID: 19ce8340-3070-4495-a21d-cbe2b63aca0e >>>>>>>> Ancestors: OpenDBX-Core-HMC.229 >>>>>>>> >>>>>>>> There were a lot of SqueakDBX tests that don't release the >>>>>>>> connection after testing. So, this can result in a "Too many connections >>>>>>>> error". Now, all tests release connections." >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Sep 24, 2009 at 20:52, Mariano Martinez Peck < >>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Sep 24, 2009 at 3:13 PM, John Toohey < >>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>> >>>>>>>>>>> Okay, I've installed SqueakGlorp into my existing image, >>>>>>>>>>> and added the symlink to the VM for openDBX. I can get up to 44 tests to >>>>>>>>>>> pass, but it seems that the tests are not releasing their DB connections, so >>>>>>>>>>> after a while the rest fail with a "Too many connections error" >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> These tests you are talking about are SqueakDBX tests or >>>>>>>>>> Glorp tests when using SqueakDBX as the driver ? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Is this how it should be for those tests? I am just >>>>>>>>>>> selecting the test package and selecting "run tests". >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> I need to know which tests are you running, if >>>>>>>>>> OpenDBX-Core-Tests or GlorpTest. Anyway, tests should release connections. >>>>>>>>>> If this is not done, so we have a bug in our tests. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Thu, Sep 24, 2009 at 12:24, Mariano Martinez Peck < >>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Thu, Sep 24, 2009 at 3:06 PM, John Toohey < >>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> - I've managed to build it on a VMWare VM running Ubunto, >>>>>>>>>>>>> and using the --disable-utils switch, I've built it on OSX also. However on >>>>>>>>>>>>> both systems when I run the test suite I see this :- >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Excellent news!!! I tell you: there is an utility called >>>>>>>>>>>> odbx-sql that let you send queries trough OpenDBX. However, that utility >>>>>>>>>>>> requires external libraries which seem to have problems, at least in >>>>>>>>>>>> Windows. So, when we compile in Windows, we must disable that utility. But >>>>>>>>>>>> remember this is an utility, not OpenDBX core or feature. It is not >>>>>>>>>>>> important. I didn't know it has problems also with MacOS, so I will update >>>>>>>>>>>> the webpage. Thanks for the testing!!!! >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> `--> ./odbxtest -b pgsql -h localhost -p 5432 -d juliet >>>>>>>>>>>>> -u postgres -w postgres >>>>>>>>>>>>> ODBX_CAP_BASIC: 1 >>>>>>>>>>>>> ODBX_CAP_LO: 0 >>>>>>>>>>>>> ODBX_OPT_API_VERSION: 10200 >>>>>>>>>>>>> ODBX_OPT_THREAD_SAFE: 1 >>>>>>>>>>>>> ODBX_OPT_TLS: 1 >>>>>>>>>>>>> ODBX_OPT_CONNECT_TIMEOUT: 1 (using) >>>>>>>>>>>>> ODBX_OPT_MULTI_STATEMENTS: 1 (using) >>>>>>>>>>>>> ODBX_OPT_PAGED_RESULTS: 0 >>>>>>>>>>>>> ODBX_OPT_COMPRESS: 0 >>>>>>>>>>>>> ODBX_CAP_BASIC: 1 >>>>>>>>>>>>> ODBX_CAP_LO: 0 >>>>>>>>>>>>> ODBX_OPT_API_VERSION: 10200 >>>>>>>>>>>>> ODBX_OPT_THREAD_SAFE: 1 >>>>>>>>>>>>> ODBX_OPT_TLS: 1 >>>>>>>>>>>>> ODBX_OPT_CONNECT_TIMEOUT: 1 (using) >>>>>>>>>>>>> ODBX_OPT_MULTI_STATEMENTS: 1 (using) >>>>>>>>>>>>> ODBX_OPT_PAGED_RESULTS: 0 >>>>>>>>>>>>> ODBX_OPT_COMPRESS: 0 >>>>>>>>>>>>> WARNING: nonstandard use of \ in a string literal >>>>>>>>>>>>> LINE 1: SELECT * FROM odbxtest WHERE col = 'a''''\''b' >>>>>>>>>>>>> ^ >>>>>>>>>>>>> HINT: Use the escape string syntax for backslashes, >>>>>>>>>>>>> e.g., E'\'. >>>>>>>>>>>>> Error in odbx_result(): ERROR: relation "odbxtest" does >>>>>>>>>>>>> not exist >>>>>>>>>>>>> >>>>>>>>>>>>> Error in odbx_result(): ERROR: relation "odbxtest" does >>>>>>>>>>>>> not exist >>>>>>>>>>>>> >>>>>>>>>>>>> Not sure if this means there is a problem with the build >>>>>>>>>>>>> (I downloaded to latest one) or a problem with the test suite. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> As you guessed this seems to be a problem with the test >>>>>>>>>>>> suit, but the build is seems to be perfect. I will send this part to OpenDBX >>>>>>>>>>>> mailing list and see if I receive some help. Thanks for the report. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> In order to continue and install GlorpDBX into my Pharo >>>>>>>>>>>>> image, do I need to build a new image, as my current one already has >>>>>>>>>>>>> Pharo-Glorp installed. I've never figured out how to uninstall packages in >>>>>>>>>>>>> Smalltalk. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Yeah. Me neither :( >>>>>>>>>>>> >>>>>>>>>>>> But, what you can do is install just SqueakDBX in that >>>>>>>>>>>> image and run the SqueakDBX tests, using PostgreSQL to see if everything is >>>>>>>>>>>> ok. You should have all green tests. If you get this, I would really >>>>>>>>>>>> appreciate if you can make a binary for MacOS :) >>>>>>>>>>>> >>>>>>>>>>>> Then, you can take a new image and install GlorpDBX as >>>>>>>>>>>> explained in the wiki. Most of the tests should be green. I say "most" >>>>>>>>>>>> because there are some that fails because of what I told you that we don't >>>>>>>>>>>> support large database fields. >>>>>>>>>>>> >>>>>>>>>>>> Best, >>>>>>>>>>>> >>>>>>>>>>>> Mariano >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, Sep 24, 2009 at 11:15, Mariano Martinez Peck < >>>>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 1:59 PM, John Toohey < >>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> I'm currently trying to build openDBX on OSX. I've >>>>>>>>>>>>>>> finally found the postgres client libs and include files, and I've run >>>>>>>>>>>>>>> ./configure -with-backends="pgsql", but when I run make I get this error :- >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Excellent you are giving SqueakDBX at least a try. The >>>>>>>>>>>>>> real thing is this: The squeakDBX team is composed by 4 people. Only one has >>>>>>>>>>>>>> a Mac and he is very busy with his work. I have ALL databases working on >>>>>>>>>>>>>> Linux and Windows. And I have also prepared binaries for that because I can >>>>>>>>>>>>>> (dlls, .deb and .rpm). But I cannot do it with Mac because I don't have a >>>>>>>>>>>>>> mac and I don't know how binaries work on Mac. If you make it work, I would >>>>>>>>>>>>>> really love you help me generating the binaries so that I can update them to >>>>>>>>>>>>>> OpenDBX website. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Which OpenDBX version are you trying to compile? You >>>>>>>>>>>>>> should try 1.4.3. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Can you try configuring this way please ? >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./configure --disable-utils --with-backends="pgsql" >>>>>>>>>>>>>> >>>>>>>>>>>>>> If it works, I then explain you why that :) >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Making all in po >>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-argmap.o -MD -MP -MF >>>>>>>>>>>>>>> .deps/odbx_sql-argmap.Tpo -c -o odbx_sql-argmap.o `test -f 'argmap.cpp' || >>>>>>>>>>>>>>> echo './'`argmap.cpp >>>>>>>>>>>>>>> mv -f .deps/odbx_sql-argmap.Tpo >>>>>>>>>>>>>>> .deps/odbx_sql-argmap.Po >>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-commands.o -MD -MP >>>>>>>>>>>>>>> -MF .deps/odbx_sql-commands.Tpo -c -o odbx_sql-commands.o `test -f >>>>>>>>>>>>>>> 'commands.cpp' || echo './'`commands.cpp >>>>>>>>>>>>>>> mv -f .deps/odbx_sql-commands.Tpo >>>>>>>>>>>>>>> .deps/odbx_sql-commands.Po >>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-completion.o -MD -MP >>>>>>>>>>>>>>> -MF .deps/odbx_sql-completion.Tpo -c -o odbx_sql-completion.o `test -f >>>>>>>>>>>>>>> 'completion.cpp' || echo './'`completion.cpp >>>>>>>>>>>>>>> mv -f .deps/odbx_sql-completion.Tpo >>>>>>>>>>>>>>> .deps/odbx_sql-completion.Po >>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-odbx-sql.o -MD -MP >>>>>>>>>>>>>>> -MF .deps/odbx_sql-odbx-sql.Tpo -c -o odbx_sql-odbx-sql.o `test -f >>>>>>>>>>>>>>> 'odbx-sql.cpp' || echo './'`odbx-sql.cpp >>>>>>>>>>>>>>> odbx-sql.cpp: In function 'int main(int, char**)': >>>>>>>>>>>>>>> odbx-sql.cpp:228: error: invalid conversion from 'char* >>>>>>>>>>>>>>> (*)(const char*, int)' to 'int (*)(const char*, int)' >>>>>>>>>>>>>>> make[3]: *** [odbx_sql-odbx-sql.o] Error 1 >>>>>>>>>>>>>>> make[2]: *** [all-recursive] Error 1 >>>>>>>>>>>>>>> make[1]: *** [all-recursive] Error 1 >>>>>>>>>>>>>>> make: *** [all] Error 2 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Do you know of any pre-built binaries that will work on >>>>>>>>>>>>>>> OSX? >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> I don't know, but I would love to have them!!! >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 23:09, Mariano Martinez Peck < >>>>>>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 11:27 PM, John Toohey < >>>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hey, >>>>>>>>>>>>>>>>> Thanks for looking into this for me. I'm just using >>>>>>>>>>>>>>>>> Pharo as my app is using the beta of Seaside 3.0. I'm going to do as you >>>>>>>>>>>>>>>>> suggested and put some debug statements in PGConnection, and see where that >>>>>>>>>>>>>>>>> leads. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Ok, let us know what the problem was if you find it :) >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Is it a lot of changes from me to switch to DBX on >>>>>>>>>>>>>>>>> Pharo? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> No. Your application shouldn't have any changes. You >>>>>>>>>>>>>>>> application will use just Glorp. But in this case Glorp won't use the native >>>>>>>>>>>>>>>> PostgreSQL driver, but SqueakDBX with PostgreSQL. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I assume there are no changes in my Glorp code, but >>>>>>>>>>>>>>>>> what else do I need to do. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> The only thing you must do is: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> - Install the PostgreSQL client library (if you don't >>>>>>>>>>>>>>>> have it already installed). >>>>>>>>>>>>>>>> - Compile or Install (if you are in Linux you can use >>>>>>>>>>>>>>>> the .rpm or .deb) OpenDBX with PostgreSQL, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> You can read how to do it here: >>>>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6129 >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> You must do it only once. Once this is done, >>>>>>>>>>>>>>>> everything is easy and you can take advantage of all the SqueakDBX features >>>>>>>>>>>>>>>> (http://wiki.squeak.org/squeak/6106). OpenDBX works >>>>>>>>>>>>>>>> perfect with PostgreSQL in Linux, Mac and Windows. We have also have >>>>>>>>>>>>>>>> GlorpDBX working with SqueakDBX and PostgreSQL and it is very easy to >>>>>>>>>>>>>>>> install: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6130 (where it says >>>>>>>>>>>>>>>> GlorpDBX). >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> The only limitation we have right now is that we don't >>>>>>>>>>>>>>>> support large objects (blob, clob, etc) yet. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> If you try it and have any problem, please, let us >>>>>>>>>>>>>>>> know!!! >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I develop on OSX and deploy to Linux for production. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> No problem. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 21:03, Mariano Martinez Peck >>>>>>>>>>>>>>>>> marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I was thinking if you have the problem in Squeak >>>>>>>>>>>>>>>>>> also or just Pharo ? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:12 PM, Mariano Martinez >>>>>>>>>>>>>>>>>> Peck marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:25 PM, John Toohey < >>>>>>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Hi John! This list is SqueakDBX related, so perhaps >>>>>>>>>>>>>>>>>>> I am not the best one to help you. I just make Glorp and PostgreSQL native >>>>>>>>>>>>>>>>>>> driver to work on Pharo. Actually, the only thing I did is to have all green >>>>>>>>>>>>>>>>>>> tests. No more than that. I don't have a Glorp + native postgresql driver >>>>>>>>>>>>>>>>>>> application. Anyway, I will try to help you ;) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> My app frequently losses the connection the >>>>>>>>>>>>>>>>>>>> Postgres, and throws a "Connection not Valid" exception. Unfortunately on >>>>>>>>>>>>>>>>>>>> the latest Pharo images, there is a bug that causes this to write the stack >>>>>>>>>>>>>>>>>>>> trace to disk, and then the image locks up. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> you meat there is a Pharo bug that when there is a >>>>>>>>>>>>>>>>>>> walkback and the stacktrace is written to disk, it freezes the image ? is >>>>>>>>>>>>>>>>>>> there a bug report of that ? Could you reproduce that ? >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> I think the socket on the PGConnection class is >>>>>>>>>>>>>>>>>>>> being closed or times out, and I need to know is there someway that I can >>>>>>>>>>>>>>>>>>>> debug this or if its a know issue. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Yes, that's probably the case. I can see in code >>>>>>>>>>>>>>>>>>> that the error 'Connection not valid' when the connection is not connected >>>>>>>>>>>>>>>>>>> or if it is nil. If you see your stacktrace, you can see that the socket >>>>>>>>>>>>>>>>>>> variable is nil. That's why the error. Now, the question is why the socket >>>>>>>>>>>>>>>>>>> is nil ? >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I looked for the code to see where can be the >>>>>>>>>>>>>>>>>>> socket set to nil, and I found some places: PGConnection stTerminalError: >>>>>>>>>>>>>>>>>>> , stTerminated >>>>>>>>>>>>>>>>>>> Perhaps you can put a "self halt" in those methods >>>>>>>>>>>>>>>>>>> and then debug them. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> The PGConnection seems to do a lot of "self log: >>>>>>>>>>>>>>>>>>> 'XXXX'". So, perhaps you can have a Transcript opened to see that. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Finally, why don't you give a try to GlorpDBX + >>>>>>>>>>>>>>>>>>> SqueakDBX ? It works pretty well and has good performance. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I hope this helps. Remember I am not a native >>>>>>>>>>>>>>>>>>> postgresql driver guru. Perhaps you can ask also in squeak-dev or pharo >>>>>>>>>>>>>>>>>>> mailing lists. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> I am using the latest Pharo image, with the >>>>>>>>>>>>>>>>>>>> latest Pharo-Glorp package, and the newest Postgres driver. I think this is >>>>>>>>>>>>>>>>>>>> the relevant part of the stack trace :- >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> PGConnection(Object)>>error: >>>>>>>>>>>>>>>>>>>> Receiver: a PGConnection >>>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>>> aString: 'Connection not valid' >>>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>>> trace: 0 >>>>>>>>>>>>>>>>>>>> state: #Terminated >>>>>>>>>>>>>>>>>>>> events: an OrderedCollection() >>>>>>>>>>>>>>>>>>>> socket: nil >>>>>>>>>>>>>>>>>>>> readBuffer: 'PblankT id ��name �$password >>>>>>>>>>>>>>>>>>>> �6client...etc... >>>>>>>>>>>>>>>>>>>> readIndex: 384 >>>>>>>>>>>>>>>>>>>> lastReadIndex: 384 >>>>>>>>>>>>>>>>>>>> writeBuffer: nil >>>>>>>>>>>>>>>>>>>> processId: 28132 >>>>>>>>>>>>>>>>>>>> secretKey: 1795051851 >>>>>>>>>>>>>>>>>>>> sql: 'SELECT t1.id, t1.name, t1.password, >>>>>>>>>>>>>>>>>>>> t1.client, t1.role, t1.mobile, t1.ema...etc... >>>>>>>>>>>>>>>>>>>> functionCallOid: nil >>>>>>>>>>>>>>>>>>>> functionCallArgs: nil >>>>>>>>>>>>>>>>>>>> copyStream: nil >>>>>>>>>>>>>>>>>>>> result: a PGResult >>>>>>>>>>>>>>>>>>>> connectionArgs: a PGConnectionArgs >>>>>>>>>>>>>>>>>>>> notificationSubscribers: nil >>>>>>>>>>>>>>>>>>>> fieldConverters: an >>>>>>>>>>>>>>>>>>>> IdentityDictionary(16->[closure] in PGConnection class>>boo...etc... >>>>>>>>>>>>>>>>>>>> sqlStringConverter: [closure] in >>>>>>>>>>>>>>>>>>>> PGConnection>>clientEncoding: >>>>>>>>>>>>>>>>>>>> receivingTextConverter: an UTF8TextConverter >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> PGConnection>>execute: >>>>>>>>>>>>>>>>>>>> Receiver: a PGConnection >>>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>>> sqlString: 'SELECT t1.id, t1.typename, >>>>>>>>>>>>>>>>>>>> t1.description, t1.selectioncount, t1.pr...etc... >>>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>>> trace: 0 >>>>>>>>>>>>>>>>>>>> state: #Terminated >>>>>>>>>>>>>>>>>>>> events: an OrderedCollection() >>>>>>>>>>>>>>>>>>>> socket: nil >>>>>>>>>>>>>>>>>>>> readBuffer: 'PblankT id ��name �$password >>>>>>>>>>>>>>>>>>>> �6client...etc... >>>>>>>>>>>>>>>>>>>> readIndex: 384 >>>>>>>>>>>>>>>>>>>> lastReadIndex: 384 >>>>>>>>>>>>>>>>>>>> writeBuffer: nil >>>>>>>>>>>>>>>>>>>> processId: 28132 >>>>>>>>>>>>>>>>>>>> secretKey: 1795051851 >>>>>>>>>>>>>>>>>>>> sql: 'SELECT t1.id, t1.name, t1.password, >>>>>>>>>>>>>>>>>>>> t1.client, t1.role, t1.mobile, t1.ema...etc... >>>>>>>>>>>>>>>>>>>> functionCallOid: nil >>>>>>>>>>>>>>>>>>>> functionCallArgs: nil >>>>>>>>>>>>>>>>>>>> copyStream: nil >>>>>>>>>>>>>>>>>>>> result: a PGResult >>>>>>>>>>>>>>>>>>>> connectionArgs: a PGConnectionArgs >>>>>>>>>>>>>>>>>>>> notificationSubscribers: nil >>>>>>>>>>>>>>>>>>>> fieldConverters: an >>>>>>>>>>>>>>>>>>>> IdentityDictionary(16->[closure] in PGConnection class>>boo...etc... >>>>>>>>>>>>>>>>>>>> sqlStringConverter: [closure] in >>>>>>>>>>>>>>>>>>>> PGConnection>>clientEncoding: >>>>>>>>>>>>>>>>>>>> receivingTextConverter: an UTF8TextConverter >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> SqueakDatabaseAccessor>>basicExecuteSQLString: >>>>>>>>>>>>>>>>>>>> Receiver: a SqueakDatabaseAccessor >>>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>>> aString: 'SELECT t1.id, t1.typename, >>>>>>>>>>>>>>>>>>>> t1.description, t1.selectioncount, t1.prio...etc... >>>>>>>>>>>>>>>>>>>> result: nil >>>>>>>>>>>>>>>>>>>> rowCollection: nil >>>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>>> connection: a PGConnection >>>>>>>>>>>>>>>>>>>> currentLogin: a Login(a PostgreSQLPlatform, >>>>>>>>>>>>>>>>>>>> 'postgres', '847129', 'localhost_ju...etc... >>>>>>>>>>>>>>>>>>>> logging: true >>>>>>>>>>>>>>>>>>>> reusePreparedStatements: nil >>>>>>>>>>>>>>>>>>>> deniedCommands: nil >>>>>>>>>>>>>>>>>>>> mutex: a Semaphore() >>>>>>>>>>>>>>>>>>>> dependents: nil >>>>>>>>>>>>>>>>>>>> isInTransaction: false >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Any help would be appreciated, as this is stopping >>>>>>>>>>>>>>>>>>>> me from going to a Beta test at the moment. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>>>> SqueakDBX mailing list >>>>>>>>>>>>>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> -JT >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> -JT >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> SqueakDBX mailing list >>>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> -JT >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> SqueakDBX mailing list >>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> -JT >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> SqueakDBX mailing list >>>>> SqueakDBX@lists.squeakfoundation.org >>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>> >>>>> >>>> >>>> >>>> -- >>>> -JT >>>> >>>> >>>> >>> >> >> >> -- >> -JT >> >> >> >
-- -JT
-- -JT
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
-- -JT
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
Yes, it was working fine with Glorp + the native driver. This is the Glorp debug :-Begin Transaction select nextval('TOURNAMENTMARKETS_id_SEQ') from pg_attribute limit 1 INSERT INTO TOURNAMENTS (bookmaker,event,name,status,fee,prizewin,prizeplace,payout,buyin,opentime,closetime,tournamenttype,maxpunters,odds,favourite,version) VALUES (1,1,'T-XY','Unpublished',5,0,0,100,false,'2009-10-04 12:00:00','2009-10-04 12:00:00','Pari-Mutual',100,NULL,NULL,1)10:46:02 am - GlorpDatabaseWriteError: RECOVERABLE OpenDBX: ERROR: null value in column "id" violates not-null constraint Rollback Transaction
The nextval function is being passed the wrong sequence table name, it should be TOURNAMENT_id_SEQ. This is the save code :-
status ifTrue:[ markets := nil. [ self session dataStore commit: [self session dataStore register: tournament]. self session dataStore refresh: tournament ]ifError:[ :error | JulietLogger log: error. status := false. self halt] ].
And this is the table descriptor :-
tableForTOURNAMENTS: aTable |bookieId oddsTableId eventId|
(aTable createFieldNamed: #id type: platform sequence) bePrimaryKey. bookieId := aTable createFieldNamed: #bookmaker type: platform int4. oddsTableId := aTable createFieldNamed: #oddstable type: platform int4. eventId := aTable createFieldNamed: #event type: platform int4.
aTable createFieldNamed: #name type: (platform varchar: 32); createFieldNamed: #status type: (platform varchar: 32); createFieldNamed: #fee type: (platform integer); createFieldNamed: #prizewin type: (platform integer); createFieldNamed: #prizeplace type: (platform integer); createFieldNamed: #payout type: (platform integer); createFieldNamed: #buyin type: (platform boolean); createFieldNamed: #opentime type: (platform timestamp); createFieldNamed: #closetime type: (platform timestamp); createFieldNamed: #tournamenttype type: (platform varchar: 32); createFieldNamed: #maxpunters type: (platform integer); createFieldNamed: #odds type: (platform integer); createFieldNamed: #favourite type: (platform varchar: 4); createFieldNamed: #version type: (platform versionFieldFor: platform int4); addForeignKeyFrom: bookieId to: ((self tableNamed: #BOOKMAKERS) fieldNamed: 'id'); addForeignKeyFrom: eventId to: ((self tableNamed: #EVENTS) fieldNamed: 'id'); addForeignKeyFrom: oddsTableId to: ((self tableNamed: #ODDSTABLES) fieldNamed: 'id'). (aTable fieldNamed: 'version') beLockKey
Its very strange, as it only seems to be this table that is causing the problem.
On Sat, Oct 3, 2009 at 19:05, Mariano Martinez Peck marianopeck@gmail.comwrote:
On Sat, Oct 3, 2009 at 1:39 PM, John Toohey jt@parspro.com wrote:
Okay, I think now I know what is going on. In my Seaside app, I allow the user to logout, and this method disconnects from the DB, and expires the Seaside session. I also have an expiration timeout set on the session. I think that Seaside is sending me a #unregistered message, after I have logged back in, and this method is calling #disconnect. I have removed some of the session handling code, and things are working a lot better now.
Excellent! Good research :)
However, I have know noticed something that was working fine with Glorp, and seems broken now.
when was woring? when you used Glorp + PostgreSQL native driver ? or before doing the changes you said about the seaside session ?
One of my classes that inserts new records in the DB is missing the id (sequence, pk) field. I can see from the GlorpDBX debug, that a call is made to Postgres for the next sequence number, but the insert statement is missing the id field. Here is the trace messages :-
odbx_query: called with values: handle = 380908736 query = select nextval('TOURNAMENTMARKETS_id_SEQ') from pg_attribute limit 1 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 3 odbx_result resultSet handle returned: 381100928 odbx_column_count: called with values: resultSet handle = 381100928 odbx_row_fetch: called with values: resultSet handle = 381100928 odbx_row_fetch call returned 1 odbx_row_fetch: called with values: resultSet handle = 381100928 odbx_row_fetch call returned 0 odbx_result_finish: called with values: resultSet handle = 381100928 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 0 odbx_result resultSet handle returned: 0 odbx_query: called with values: handle = 380908736 query = INSERT INTO TOURNAMENTS (bookmaker,event,name,status,fee,prizewin,prizeplace,payout,buyin,opentime,closetime,tournamenttype,maxpunters,odds,favourite,version) VALUES (1,1,'Tourney-A1','Unpublished',5,0,0,76,false,'2009-10-03 12:00:00','2009-10-03 12:00:00','Pari-Mutual',90,NULL,NULL,1) odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: -1 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 0 odbx_result resultSet handle returned: 0 12:27:22 pm - GlorpDatabaseWriteError: RECOVERABLE OpenDBX: ERROR: null value in column "id" violates not-null constraint
This is weird. The query select nextval('TOURNAMENTMARKETS_id_SEQ') from pg_attribute limit 1 works perfect using SqueakDBX (I have just tested it).
Now I wonder why Glorp didn't put the id in the query...do you know if this was working when you were using Glorp + PostgreSQL native driver ? Just to see where the cause of the problem can be. Perhaps it is a GLorp related problem that we should ask in Glorp mailing list.
Do you know that there is also (I think) some debug to enable in Glorp ? because what you send us is the SqueakDBX driver log, not Glorp.
Can you send us the mappings for the class/table TOURNAMENTS ?
which is the message you are sending to Glorp so that it generates the insert ?
Best,
Mariano
On Thu, Oct 1, 2009 at 15:33, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
I fordward the email to the list.
On Thu, Oct 1, 2009 at 4:05 PM, John Toohey jt@parspro.com wrote:
Hey,Haven't loaded the latest yet, as I'm still debugging my connection timeout issue.
Ok, let's go step by step :)
No closer to the cause, but I have a better idea of what is happening now. In all my methods in my DB class, I call a method to get the glorpSession. In this method, I have a check to see if I am still logged in, and break if I am not. Now I see that, as I lazily initialize objects that are referred by foreign keys, the Glorp Proxy will make a DB call on my behalf, whenever I reference one of these objects. The Proxy calls #basicExecuteSQLString in the DataAccessor, and that calls #execute in DBXConnection. That is where the code check if the connection is open, and fails there.
Do you have any suggestions about how I can hook into that, and perhaps try to re-connect on that error?
Great progress!!! I am glad at least that our error handling is working properly ;)
The thing is that any thing you do, is a kind of hack. For example, I cannot reopen a connection in SqueakDBX in that case. Perhaps that change should be done in Glorp?
A hack could be to reopen the connection in #basicExecuteSQLString when that errors happen. Remember you already have a reOpen method in DBXConnection. I can add a reConnect if necessary. They good this that this is very easy, as you don't need to send the querySettings again as the connection already has it as an instance variable :)
Anyway, I don't understand something. The same connection was perfect some time ago it fails, Ok ? so...if it then disconnect or close, who closes that ? the GC? you ? glorp ? We don't handle timeouts or something like that and close the connection.
Cheers,
Mariano
On Wed, Sep 30, 2009 at 11:34, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Of course it would be excellent if you can run all tests not only the one with the problem so that to be sure I didn't break something else ;)
cheers,
mariano
On Wed, Sep 30, 2009 at 12:16 PM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Done:
Name: OpenDBX-Core-MarianoMartinezPeck.231 Author: MarianoMartinezPeck Time: 30 September 2009, 12:14:49 pm UUID: 780ee5d8-3d5f-0e46-b3c0-d22ca512b498 Ancestors: OpenDBX-Core-Mariano.230
Fix to possible bug. Now DBXPlatform uses the timeout of the QuerySetttings instead of the default.
Just download that version from monticello.
However, here at work I only have Sqlite3. So, I should test with all backend in Linux and Windows tonight at home.
Tell me if it works.
Best
Mariano
On Wed, Sep 30, 2009 at 11:23 AM, John Toohey jt@parspro.com wrote:
> Good, let me know when there is an update, and how to install it, and > I can test again. > > On Wed, Sep 30, 2009 at 09:37, Mariano Martinez Peck < > marianopeck@gmail.com> wrote: > >> Thanks John. I think you found a bug ;) The weird thing is that I >> cannot reproduce it here. Perhaps it is because of the client library for >> Mac. It's the only difference I see. >> >> Tonight I will test the fix I have just did and if everything is ok >> I will commit it. >> >> Thank you very much. >> >> On Wed, Sep 30, 2009 at 10:02 AM, John Toohey jt@parspro.comwrote: >> >>> This is the full stack :- >>> UndefinedObject(Object)>>doesNotUnderstand: #asMiliseconds >>> Receiver: nil >>> Arguments and temporary variables: >>> aMessage: asMiliseconds >>> exception: MessageNotUnderstood: receiver of "asMiliseconds" is >>> nil >>> resumeValue: nil >>> Receiver's instance variables: >>> nil >>> >>> [] in [] in >>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>> Receiver: a DBXPostgresPlatform >>> Arguments and temporary variables: >>> aConnection: 0 >>> aQuerySettings: 1 >>> returnCode: a DBXConnection >>> handle: a DBXQuerySettings >>> code: #(1) >>> Receiver's instance variables: >>> a DBXPostgresPlatform >>> >>> >>> DBXPostgresPlatform(DBXPlatform)>>nextResultSet:querySettings:onReturn: >>> Receiver: a DBXPostgresPlatform >>> Arguments and temporary variables: >>> aConnection: a DBXConnection >>> aQuerySettings: a DBXQuerySettings >>> aBlock: [closure] in [] in >>> DBXPostgresPlatform(DBXPlatform)>>processNextResultS...etc... >>> handle: 0 >>> err: 1 >>> handleArray: a WordArray(0) >>> Receiver's instance variables: >>> a DBXPostgresPlatform >>> >>> [] in >>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>> Receiver: a DBXPostgresPlatform >>> Arguments and temporary variables: >>> aConnection: a DBXConnection >>> aQuerySettings: a DBXQuerySettings >>> returnCode: #(1) >>> Receiver's instance variables: >>> a DBXPostgresPlatform >>> >>> BlockClosure>>doWhileTrue: >>> Receiver: [closure] in >>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>> Arguments and temporary variables: >>> conditionBlock: [closure] in >>> DBXPostgresPlatform(DBXPlatform)>>processNextResul...etc... >>> result: nil >>> Receiver's instance variables: >>> outerContext: >>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySetti...etc... >>> startpc: 91 >>> numArgs: 0 >>> >>> >>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>> Receiver: a DBXPostgresPlatform >>> Arguments and temporary variables: >>> aConnection: a DBXConnection >>> aQuerySettings: a DBXQuerySettings >>> returnCode: #(1) >>> Receiver's instance variables: >>> a DBXPostgresPlatform >>> >>> >>> DBXPostgresPlatform(DBXPlatform)>>executeStatement:on:querySettings: >>> Receiver: a DBXPostgresPlatform >>> Arguments and temporary variables: >>> aString: 'select * from student' >>> aConnection: a DBXConnection >>> aQuerySettings: a DBXQuerySettings >>> err: 0 >>> result: nil >>> Receiver's instance variables: >>> a DBXPostgresPlatform >>> >>> DBXConnection>>execute:querySettings: >>> Receiver: a DBXConnection >>> Arguments and temporary variables: >>> aString: 'select * from student' >>> aQuerySettings: a DBXQuerySettings >>> aResult: nil >>> Receiver's instance variables: >>> platform: a DBXPostgresPlatform >>> settings: a DBXConnectionSettings >>> handle: 3118944 >>> open: a ValueHolder >>> connected: a ValueHolder >>> result: nil >>> >>> DBXQueryTimeoutTest>>testNoTimeout >>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>> Arguments and temporary variables: >>> conn: a DBXConnection >>> aQuerySettings: a DBXQuerySettings >>> rows: 5000 >>> Receiver's instance variables: >>> testSelector: #testNoTimeout >>> facility: a DBXPostgreFacility >>> connection: a DBXConnection >>> >>> DBXQueryTimeoutTest(TestCase)>>performTest >>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>> Arguments and temporary variables: >>> >>> Receiver's instance variables: >>> testSelector: #testNoTimeout >>> facility: a DBXPostgreFacility >>> connection: a DBXConnection >>> >>> [] in DBXQueryTimeoutTest(TestCase)>>runCase >>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>> Arguments and temporary variables: >>> >>> Receiver's instance variables: >>> testSelector: #testNoTimeout >>> facility: a DBXPostgreFacility >>> connection: a DBXConnection >>> >>> BlockClosure>>ensure: >>> Receiver: [closure] in DBXQueryTimeoutTest(TestCase)>>runCase >>> Arguments and temporary variables: >>> aBlock: [closure] in DBXQueryTimeoutTest(TestCase)>>runCase >>> returnValue: nil >>> b: nil >>> Receiver's instance variables: >>> outerContext: DBXQueryTimeoutTest(TestCase)>>runCase >>> startpc: 33 >>> numArgs: 0 >>> >>> DBXQueryTimeoutTest(TestCase)>>runCase >>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>> Arguments and temporary variables: >>> >>> Receiver's instance variables: >>> testSelector: #testNoTimeout >>> facility: a DBXPostgreFacility >>> connection: a DBXConnection >>> >>> [] in DBXQueryTimeoutTest(TestCase)>>debug >>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>> Arguments and temporary variables: >>> >>> Receiver's instance variables: >>> testSelector: #testNoTimeout >>> facility: a DBXPostgreFacility >>> connection: nil >>> >>> BlockClosure>>ensure: >>> Receiver: [closure] in DBXQueryTimeoutTest(TestCase)>>debug >>> Arguments and temporary variables: >>> aBlock: [closure] in DBXQueryTimeoutTest(TestCase)>>debug >>> returnValue: nil >>> b: nil >>> Receiver's instance variables: >>> outerContext: DBXQueryTimeoutTest(TestCase)>>debug >>> startpc: 62 >>> numArgs: 0 >>> >>> DBXQueryTimeoutTest(TestCase)>>debug >>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>> Arguments and temporary variables: >>> >>> Receiver's instance variables: >>> testSelector: #testNoTimeout >>> facility: a DBXPostgreFacility >>> connection: nil >>> >>> [] in TestRunner>>debugSuite: >>> Receiver: a TestRunner >>> Arguments and temporary variables: >>> <<error during printing> >>> Receiver's instance variables: >>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>> #'AutomaticMetho...etc... >>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>> #'OpenDBX-Core-Tests' #'...etc... >>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>> DBXConnectionTest . DBXDescri...etc... >>> classIndex: 0 >>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>> failedList: #() >>> failedSelected: nil >>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>> lastUpdate: 3431753837 >>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>> errors, 0 unexpecte...etc... >>> previousRun: nil >>> >>> OrderedCollection>>do: >>> Receiver: an OrderedCollection(DBXQueryTimeoutTest>>#testNoTimeout) >>> Arguments and temporary variables: >>> aBlock: [closure] in TestRunner>>debugSuite: >>> index: 3 >>> Receiver's instance variables: >>> array: an Array(nil nil DBXQueryTimeoutTest>>#testNoTimeout nil >>> nil nil nil nil...etc... >>> firstIndex: 3 >>> lastIndex: 3 >>> >>> [] in TestRunner>>basicRunSuite:do: >>> Receiver: a TestRunner >>> Arguments and temporary variables: >>> aTestSuite: a TestSuite >>> aBlock: [closure] in TestRunner>>debugSuite: >>> Receiver's instance variables: >>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>> #'AutomaticMetho...etc... >>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>> #'OpenDBX-Core-Tests' #'...etc... >>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>> DBXConnectionTest . DBXDescri...etc... >>> classIndex: 0 >>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>> failedList: #() >>> failedSelected: nil >>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>> lastUpdate: 3431753837 >>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>> errors, 0 unexpecte...etc... >>> previousRun: nil >>> >>> BlockClosure>>ensure: >>> Receiver: [closure] in TestRunner>>basicRunSuite:do: >>> Arguments and temporary variables: >>> aBlock: [closure] in TestRunner>>basicRunSuite:do: >>> returnValue: nil >>> b: nil >>> Receiver's instance variables: >>> outerContext: TestRunner>>basicRunSuite:do: >>> startpc: 51 >>> numArgs: 0 >>> >>> TestRunner>>basicRunSuite:do: >>> Receiver: a TestRunner >>> Arguments and temporary variables: >>> aTestSuite: a TestSuite >>> aBlock: [closure] in TestRunner>>debugSuite: >>> Receiver's instance variables: >>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>> #'AutomaticMetho...etc... >>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>> #'OpenDBX-Core-Tests' #'...etc... >>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>> DBXConnectionTest . DBXDescri...etc... >>> classIndex: 0 >>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>> failedList: #() >>> failedSelected: nil >>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>> lastUpdate: 3431753837 >>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>> errors, 0 unexpecte...etc... >>> previousRun: nil >>> >>> TestRunner>>debugSuite: >>> Receiver: a TestRunner >>> Arguments and temporary variables: >>> aTestSuite: a TestSuite >>> Receiver's instance variables: >>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>> #'AutomaticMetho...etc... >>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>> #'OpenDBX-Core-Tests' #'...etc... >>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>> DBXConnectionTest . DBXDescri...etc... >>> classIndex: 0 >>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>> failedList: #() >>> failedSelected: nil >>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>> lastUpdate: 3431753837 >>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>> errors, 0 unexpecte...etc... >>> previousRun: nil >>> >>> TestRunner>>debug: >>> Receiver: a TestRunner >>> Arguments and temporary variables: >>> aTestCase: DBXQueryTimeoutTest>>#testNoTimeout >>> Receiver's instance variables: >>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>> #'AutomaticMetho...etc... >>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>> #'OpenDBX-Core-Tests' #'...etc... >>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>> DBXConnectionTest . DBXDescri...etc... >>> classIndex: 0 >>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>> failedList: #() >>> failedSelected: nil >>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>> lastUpdate: 3431753837 >>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>> errors, 0 unexpecte...etc... >>> previousRun: nil >>> >>> TestRunner>>errorSelected: >>> Receiver: a TestRunner >>> Arguments and temporary variables: >>> anInteger: 1 >>> Receiver's instance variables: >>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>> #'AutomaticMetho...etc... >>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>> #'OpenDBX-Core-Tests' #'...etc... >>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>> DBXConnectionTest . DBXDescri...etc... >>> classIndex: 0 >>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>> failedList: #() >>> failedSelected: nil >>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>> lastUpdate: 3431753837 >>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>> errors, 0 unexpecte...etc... >>> previousRun: nil >>> >>> PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection: >>> Receiver: a PluggableListMorphPlus(3968) >>> Arguments and temporary variables: >>> anInteger: 1 >>> Receiver's instance variables: >>> bounds: 1481@397 corner: 1792@583 >>> owner: a PluggableStandardWindow(1639) >>> submorphs: an Array(a TransformMorph(3663)) >>> fullBounds: 1481@397 corner: 1792@583 >>> color: Color white >>> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >>> -> a LayoutF...etc... >>> borderWidth: 1 >>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>> model: a TestRunner >>> slotName: nil >>> open: false >>> scrollBar: a ScrollBar(2643) >>> scroller: a TransformMorph(3663) >>> retractableScrollBar: false >>> scrollBarOnLeft: false >>> getMenuSelector: #errorMenu: >>> getMenuTitleSelector: nil >>> hasFocus: false >>> hScrollBar: a ScrollBar(2842) >>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>> getListSelector: #errorList >>> getListSizeSelector: nil >>> getListElementSelector: nil >>> getIndexSelector: #errorSelected >>> setIndexSelector: #errorSelected: >>> keystrokeActionSelector: nil >>> autoDeselect: true >>> lastKeystrokeTime: 0 >>> lastKeystrokes: '' >>> doubleClickSelector: nil >>> handlesBasicKeys: nil >>> potentialDropRow: nil >>> listMorph: a LazyListMorph(884) >>> hScrollRangeCache: nil >>> dragItemSelector: nil >>> dropItemSelector: nil >>> wantsDropSelector: nil >>> >>> PluggableListMorphPlus(PluggableListMorph)>>mouseUp: >>> Receiver: a PluggableListMorphPlus(3968) >>> Arguments and temporary variables: >>> event: [1546@408 mouseUp 57402925 nil] >>> row: 1 >>> mdr: 1 >>> Receiver's instance variables: >>> bounds: 1481@397 corner: 1792@583 >>> owner: a PluggableStandardWindow(1639) >>> submorphs: an Array(a TransformMorph(3663)) >>> fullBounds: 1481@397 corner: 1792@583 >>> color: Color white >>> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >>> -> a LayoutF...etc... >>> borderWidth: 1 >>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>> model: a TestRunner >>> slotName: nil >>> open: false >>> scrollBar: a ScrollBar(2643) >>> scroller: a TransformMorph(3663) >>> retractableScrollBar: false >>> scrollBarOnLeft: false >>> getMenuSelector: #errorMenu: >>> getMenuTitleSelector: nil >>> hasFocus: false >>> hScrollBar: a ScrollBar(2842) >>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>> getListSelector: #errorList >>> getListSizeSelector: nil >>> getListElementSelector: nil >>> getIndexSelector: #errorSelected >>> setIndexSelector: #errorSelected: >>> keystrokeActionSelector: nil >>> autoDeselect: true >>> lastKeystrokeTime: 0 >>> lastKeystrokes: '' >>> doubleClickSelector: nil >>> handlesBasicKeys: nil >>> potentialDropRow: nil >>> listMorph: a LazyListMorph(884) >>> hScrollRangeCache: nil >>> dragItemSelector: nil >>> dropItemSelector: nil >>> wantsDropSelector: nil >>> >>> PluggableListMorphPlus(Morph)>>handleMouseUp: >>> Receiver: a PluggableListMorphPlus(3968) >>> Arguments and temporary variables: >>> anEvent: [1546@408 mouseUp 57402925 nil] >>> Receiver's instance variables: >>> bounds: 1481@397 corner: 1792@583 >>> owner: a PluggableStandardWindow(1639) >>> submorphs: an Array(a TransformMorph(3663)) >>> fullBounds: 1481@397 corner: 1792@583 >>> color: Color white >>> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >>> -> a LayoutF...etc... >>> borderWidth: 1 >>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>> model: a TestRunner >>> slotName: nil >>> open: false >>> scrollBar: a ScrollBar(2643) >>> scroller: a TransformMorph(3663) >>> retractableScrollBar: false >>> scrollBarOnLeft: false >>> getMenuSelector: #errorMenu: >>> getMenuTitleSelector: nil >>> hasFocus: false >>> hScrollBar: a ScrollBar(2842) >>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>> getListSelector: #errorList >>> getListSizeSelector: nil >>> getListElementSelector: nil >>> getIndexSelector: #errorSelected >>> setIndexSelector: #errorSelected: >>> keystrokeActionSelector: nil >>> autoDeselect: true >>> lastKeystrokeTime: 0 >>> lastKeystrokes: '' >>> doubleClickSelector: nil >>> handlesBasicKeys: nil >>> potentialDropRow: nil >>> listMorph: a LazyListMorph(884) >>> hScrollRangeCache: nil >>> dragItemSelector: nil >>> dropItemSelector: nil >>> wantsDropSelector: nil >>> >>> MouseButtonEvent>>sentTo: >>> Receiver: [1546@408 mouseUp 57402925 nil] >>> Arguments and temporary variables: >>> anObject: a PluggableListMorphPlus(3968) >>> Receiver's instance variables: >>> timeStamp: 57402925 >>> source: a HandMorph(3216) >>> windowIndex: nil >>> type: #mouseUp >>> buttons: 0 >>> position: 1546@408 >>> handler: nil >>> wasHandled: true >>> whichButton: 4 >>> >>> PluggableListMorphPlus(Morph)>>handleEvent: >>> Receiver: a PluggableListMorphPlus(3968) >>> Arguments and temporary variables: >>> anEvent: [1546@408 mouseUp 57402925 nil] >>> Receiver's instance variables: >>> bounds: 1481@397 corner: 1792@583 >>> owner: a PluggableStandardWindow(1639) >>> submorphs: an Array(a TransformMorph(3663)) >>> fullBounds: 1481@397 corner: 1792@583 >>> color: Color white >>> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >>> -> a LayoutF...etc... >>> borderWidth: 1 >>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>> model: a TestRunner >>> slotName: nil >>> open: false >>> scrollBar: a ScrollBar(2643) >>> scroller: a TransformMorph(3663) >>> retractableScrollBar: false >>> scrollBarOnLeft: false >>> getMenuSelector: #errorMenu: >>> getMenuTitleSelector: nil >>> hasFocus: false >>> hScrollBar: a ScrollBar(2842) >>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>> getListSelector: #errorList >>> getListSizeSelector: nil >>> getListElementSelector: nil >>> getIndexSelector: #errorSelected >>> setIndexSelector: #errorSelected: >>> keystrokeActionSelector: nil >>> autoDeselect: true >>> lastKeystrokeTime: 0 >>> lastKeystrokes: '' >>> doubleClickSelector: nil >>> handlesBasicKeys: nil >>> potentialDropRow: nil >>> listMorph: a LazyListMorph(884) >>> hScrollRangeCache: nil >>> dragItemSelector: nil >>> dropItemSelector: nil >>> wantsDropSelector: nil >>> >>> MorphicEventDispatcher>>dispatchDefault:with: >>> Receiver: a MorphicEventDispatcher >>> Arguments and temporary variables: >>> anEvent: [1546@408 mouseUp 57402925 nil] >>> aMorph: a PluggableListMorphPlus(3968) >>> localEvt: [1546@408 mouseUp 57402925 nil] >>> index: 2 >>> child: a TransformMorph(3663) >>> morphs: an Array(a TransformMorph(3663)) >>> inside: true >>> Receiver's instance variables: >>> lastType: #mouseUp >>> lastDispatch: #dispatchDefault:with: >>> >>> MorphicEventDispatcher>>dispatchEvent:with: >>> Receiver: a MorphicEventDispatcher >>> Arguments and temporary variables: >>> anEvent: [1546@408 mouseUp 57402925 nil] >>> aMorph: a PluggableListMorphPlus(3968) >>> Receiver's instance variables: >>> lastType: #mouseUp >>> lastDispatch: #dispatchDefault:with: >>> >>> PluggableListMorphPlus(Morph)>>processEvent:using: >>> Receiver: a PluggableListMorphPlus(3968) >>> Arguments and temporary variables: >>> anEvent: [1546@408 mouseUp 57402925 nil] >>> defaultDispatcher: a MorphicEventDispatcher >>> Receiver's instance variables: >>> bounds: 1481@397 corner: 1792@583 >>> owner: a PluggableStandardWindow(1639) >>> submorphs: an Array(a TransformMorph(3663)) >>> fullBounds: 1481@397 corner: 1792@583 >>> color: Color white >>> extension: a MorphExtension (3283) [locked] [other: >>> (layoutFrame -> a LayoutF...etc... >>> borderWidth: 1 >>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>> model: a TestRunner >>> slotName: nil >>> open: false >>> scrollBar: a ScrollBar(2643) >>> scroller: a TransformMorph(3663) >>> retractableScrollBar: false >>> scrollBarOnLeft: false >>> getMenuSelector: #errorMenu: >>> getMenuTitleSelector: nil >>> hasFocus: false >>> hScrollBar: a ScrollBar(2842) >>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>> getListSelector: #errorList >>> getListSizeSelector: nil >>> getListElementSelector: nil >>> getIndexSelector: #errorSelected >>> setIndexSelector: #errorSelected: >>> keystrokeActionSelector: nil >>> autoDeselect: true >>> lastKeystrokeTime: 0 >>> lastKeystrokes: '' >>> doubleClickSelector: nil >>> handlesBasicKeys: nil >>> potentialDropRow: nil >>> listMorph: a LazyListMorph(884) >>> hScrollRangeCache: nil >>> dragItemSelector: nil >>> dropItemSelector: nil >>> wantsDropSelector: nil >>> >>> PluggableListMorphPlus(Morph)>>processEvent: >>> Receiver: a PluggableListMorphPlus(3968) >>> Arguments and temporary variables: >>> anEvent: [1546@408 mouseUp 57402925 nil] >>> Receiver's instance variables: >>> bounds: 1481@397 corner: 1792@583 >>> owner: a PluggableStandardWindow(1639) >>> submorphs: an Array(a TransformMorph(3663)) >>> fullBounds: 1481@397 corner: 1792@583 >>> color: Color white >>> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >>> -> a LayoutF...etc... >>> borderWidth: 1 >>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>> model: a TestRunner >>> slotName: nil >>> open: false >>> scrollBar: a ScrollBar(2643) >>> scroller: a TransformMorph(3663) >>> retractableScrollBar: false >>> scrollBarOnLeft: false >>> getMenuSelector: #errorMenu: >>> getMenuTitleSelector: nil >>> hasFocus: false >>> hScrollBar: a ScrollBar(2842) >>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>> getListSelector: #errorList >>> getListSizeSelector: nil >>> getListElementSelector: nil >>> getIndexSelector: #errorSelected >>> setIndexSelector: #errorSelected: >>> keystrokeActionSelector: nil >>> autoDeselect: true >>> lastKeystrokeTime: 0 >>> lastKeystrokes: '' >>> doubleClickSelector: nil >>> handlesBasicKeys: nil >>> potentialDropRow: nil >>> listMorph: a LazyListMorph(884) >>> hScrollRangeCache: nil >>> dragItemSelector: nil >>> dropItemSelector: nil >>> wantsDropSelector: nil >>> >>> PluggableListMorphPlus(PluggableListMorph)>>handleFocusEvent: >>> Receiver: a PluggableListMorphPlus(3968) >>> Arguments and temporary variables: >>> anEvent: [1546@408 mouseUp 57402925 nil] >>> Receiver's instance variables: >>> bounds: 1481@397 corner: 1792@583 >>> owner: a PluggableStandardWindow(1639) >>> submorphs: an Array(a TransformMorph(3663)) >>> fullBounds: 1481@397 corner: 1792@583 >>> color: Color white >>> extension: a MorphExtension (3283) [locked] [other: (layoutFrame >>> -> a LayoutF...etc... >>> borderWidth: 1 >>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>> model: a TestRunner >>> slotName: nil >>> open: false >>> scrollBar: a ScrollBar(2643) >>> scroller: a TransformMorph(3663) >>> retractableScrollBar: false >>> scrollBarOnLeft: false >>> getMenuSelector: #errorMenu: >>> getMenuTitleSelector: nil >>> hasFocus: false >>> hScrollBar: a ScrollBar(2842) >>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>> getListSelector: #errorList >>> getListSizeSelector: nil >>> getListElementSelector: nil >>> getIndexSelector: #errorSelected >>> setIndexSelector: #errorSelected: >>> keystrokeActionSelector: nil >>> autoDeselect: true >>> lastKeystrokeTime: 0 >>> lastKeystrokes: '' >>> doubleClickSelector: nil >>> handlesBasicKeys: nil >>> potentialDropRow: nil >>> listMorph: a LazyListMorph(884) >>> hScrollRangeCache: nil >>> dragItemSelector: nil >>> dropItemSelector: nil >>> wantsDropSelector: nil >>> >>> [] in HandMorph>>sendFocusEvent:to:clear: >>> Receiver: a HandMorph(3216) >>> Arguments and temporary variables: >>> <<error during printing> >>> Receiver's instance variables: >>> bounds: 1071@619 corner: 1087@635 >>> owner: a PasteUpMorph(1622) [world] >>> submorphs: #() >>> fullBounds: 1071@619 corner: 1087@635 >>> color: Color blue >>> extension: a MorphExtension (539) [eventHandler = an >>> EventHandler] >>> mouseFocus: nil >>> keyboardFocus: nil >>> eventListeners: nil >>> mouseListeners: nil >>> keyboardListeners: nil >>> mouseClickState: nil >>> mouseOverHandler: a MouseOverHandler >>> lastMouseEvent: [1071@619 1071@619 mouseMove 57619819 nil] >>> targetOffset: 188@12 >>> damageRecorder: a DamageRecorder >>> cacheCanvas: nil >>> cachedCanvasHasHoles: true >>> temporaryCursor: nil >>> temporaryCursorOffset: nil >>> hardwareCursor: nil >>> hasChanged: true >>> savedPatch: nil >>> userInitials: '' >>> lastEventBuffer: #(1 57619819 1071 619 0 0 0 1) >>> lastKeyScanCode: 36 >>> combinedChar: nil >>> >>> [] in PasteUpMorph>>becomeActiveDuring: >>> Receiver: a PasteUpMorph(1622) [world] >>> Arguments and temporary variables: >>> <<error during printing> >>> Receiver's instance variables: >>> bounds: 0@0 corner: 1920@1178 >>> owner: nil >>> submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a >>> PluggableStanda...etc... >>> fullBounds: 0@0 corner: 1920@1178 >>> color: Color gray >>> extension: a MorphExtension (2543) [eventHandler = an >>> EventHandler] [other: (...etc... >>> borderWidth: 0 >>> borderColor: (Color r: 0.5 g: 0.5 b: 0.5) >>> presenter: a Presenter (1246) >>> model: a MorphicModel(1926) >>> cursor: 1 >>> padding: 3 >>> backgroundMorph: nil >>> isPartsBin: nil >>> autoLineLayout: false >>> indicateCursor: nil >>> resizeToFit: nil >>> wantsMouseOverHalos: nil >>> worldState: a WorldState >>> griddingOn: nil >>> >>> BlockClosure>>on:do: >>> Receiver: [closure] in PasteUpMorph>>becomeActiveDuring: >>> Arguments and temporary variables: >>> exception: Error >>> handlerAction: [closure] in PasteUpMorph>>becomeActiveDuring: >>> handlerActive: false >>> Receiver's instance variables: >>> outerContext: PasteUpMorph>>becomeActiveDuring: >>> startpc: 67 >>> numArgs: 0 >>> >>> PasteUpMorph>>becomeActiveDuring: >>> Receiver: a PasteUpMorph(1622) [world] >>> Arguments and temporary variables: >>> aBlock: [closure] in HandMorph>>sendFocusEvent:to:clear: >>> priorWorld: a PasteUpMorph(1622) [world] >>> priorHand: a HandMorph(3216) >>> priorEvent: [1546@408 mouseOver red nil nil] >>> Receiver's instance variables: >>> bounds: 0@0 corner: 1920@1178 >>> owner: nil >>> submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a >>> PluggableStanda...etc... >>> fullBounds: 0@0 corner: 1920@1178 >>> color: Color gray >>> extension: a MorphExtension (2543) [eventHandler = an >>> EventHandler] [other: (...etc... >>> borderWidth: 0 >>> borderColor: (Color r: 0.5 g: 0.5 b: 0.5) >>> presenter: a Presenter (1246) >>> model: a MorphicModel(1926) >>> cursor: 1 >>> padding: 3 >>> backgroundMorph: nil >>> isPartsBin: nil >>> autoLineLayout: false >>> indicateCursor: nil >>> resizeToFit: nil >>> wantsMouseOverHalos: nil >>> worldState: a WorldState >>> griddingOn: nil >>> >>> HandMorph>>sendFocusEvent:to:clear: >>> Receiver: a HandMorph(3216) >>> Arguments and temporary variables: >>> anEvent: [1546@408 mouseUp 57402925 nil] >>> focusHolder: a PluggableListMorphPlus(3968) >>> aBlock: [closure] in HandMorph>>sendMouseEvent: >>> w: a PasteUpMorph(1622) [world] >>> result: #(nil) >>> Receiver's instance variables: >>> bounds: 1071@619 corner: 1087@635 >>> owner: a PasteUpMorph(1622) [world] >>> submorphs: #() >>> fullBounds: 1071@619 corner: 1087@635 >>> color: Color blue >>> extension: a MorphExtension (539) [eventHandler = an >>> EventHandler] >>> mouseFocus: nil >>> keyboardFocus: nil >>> eventListeners: nil >>> mouseListeners: nil >>> keyboardListeners: nil >>> mouseClickState: nil >>> mouseOverHandler: a MouseOverHandler >>> lastMouseEvent: [1071@619 1071@619 mouseMove 57619819 nil] >>> targetOffset: 188@12 >>> damageRecorder: a DamageRecorder >>> cacheCanvas: nil >>> cachedCanvasHasHoles: true >>> temporaryCursor: nil >>> temporaryCursorOffset: nil >>> hardwareCursor: nil >>> hasChanged: true >>> savedPatch: nil >>> userInitials: '' >>> lastEventBuffer: #(1 57619819 1071 619 0 0 0 1) >>> lastKeyScanCode: 36 >>> combinedChar: nil >>> >>> >>> --- The full stack --- >>> UndefinedObject(Object)>>doesNotUnderstand: #asMiliseconds >>> [] in [] in >>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>> >>> DBXPostgresPlatform(DBXPlatform)>>nextResultSet:querySettings:onReturn: >>> [] in >>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>> BlockClosure>>doWhileTrue: >>> >>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>> >>> DBXPostgresPlatform(DBXPlatform)>>executeStatement:on:querySettings: >>> DBXConnection>>execute:querySettings: >>> DBXQueryTimeoutTest>>testNoTimeout >>> DBXQueryTimeoutTest(TestCase)>>performTest >>> [] in DBXQueryTimeoutTest(TestCase)>>runCase >>> BlockClosure>>ensure: >>> DBXQueryTimeoutTest(TestCase)>>runCase >>> [] in DBXQueryTimeoutTest(TestCase)>>debug >>> BlockClosure>>ensure: >>> DBXQueryTimeoutTest(TestCase)>>debug >>> [] in TestRunner>>debugSuite: >>> OrderedCollection>>do: >>> [] in TestRunner>>basicRunSuite:do: >>> BlockClosure>>ensure: >>> TestRunner>>basicRunSuite:do: >>> TestRunner>>debugSuite: >>> TestRunner>>debug: >>> TestRunner>>errorSelected: >>> PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection: >>> PluggableListMorphPlus(PluggableListMorph)>>mouseUp: >>> PluggableListMorphPlus(Morph)>>handleMouseUp: >>> MouseButtonEvent>>sentTo: >>> PluggableListMorphPlus(Morph)>>handleEvent: >>> MorphicEventDispatcher>>dispatchDefault:with: >>> MorphicEventDispatcher>>dispatchEvent:with: >>> PluggableListMorphPlus(Morph)>>processEvent:using: >>> PluggableListMorphPlus(Morph)>>processEvent: >>> PluggableListMorphPlus(PluggableListMorph)>>handleFocusEvent: >>> [] in HandMorph>>sendFocusEvent:to:clear: >>> [] in PasteUpMorph>>becomeActiveDuring: >>> BlockClosure>>on:do: >>> PasteUpMorph>>becomeActiveDuring: >>> HandMorph>>sendFocusEvent:to:clear: >>> - - - - - - - - - - - - - - - >>> - - - - - - - - - - - - - - - - - - >>> HandMorph>>sendEvent:focus:clear: >>> HandMorph>>sendMouseEvent: >>> HandMorph>>handleEvent: >>> HandMorph>>processEvents >>> [] in WorldState>>doOneCycleNowFor: >>> Array(SequenceableCollection)>>do: >>> WorldState>>handsDo: >>> WorldState>>doOneCycleNowFor: >>> WorldState>>doOneCycleFor: >>> PasteUpMorph>>doOneCycle >>> [] in Project class>>spawnNewProcess >>> [] in BlockClosure>>newProcess >>> >>> >>> On Tue, Sep 29, 2009 at 23:14, Mariano Martinez Peck < >>> marianopeck@gmail.com> wrote: >>> >>>> >>>> >>>> On Fri, Sep 25, 2009 at 12:07 PM, John Toohey jt@parspro.comwrote: >>>> >>>>> Had to rebuild a new image, changes file full, and Pharo still >>>>> cannot condense a change file. So, now I have a refresh image with just >>>>> GlorpDBX installed. Ran the tests and have 94 passed and one failure. The >>>>> failed test is DBXQueryNoTimeout and the failing method is #testNoTimeOut. >>>>> The DBXQuerySetting object's timeout property is Nil, and this throws a DNU >>>>> exception. >>>>> >>>> >>>> John: I am seeing this test but is green for me here in Linux and >>>> Windows :( >>>> I mean, I set a nil to the timeout property but I never send a >>>> message to that object. I just send a null trough FFI. >>>> >>>> Can you tell me where does the DNU occur, who DNU a message and >>>> which message was not understood ? It would be excellent you can send me >>>> the stacktrace. >>>> >>>> Thanks a lot for the testing! >>>> >>>> Mariano >>>> >>>> >>>> >>>>> Going to try to install Seaside now, and hopefully my own app >>>>> then. >>>>> >>>>> >>>>> On Fri, Sep 25, 2009 at 09:38, Mariano Martinez Peck < >>>>> marianopeck@gmail.com> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Fri, Sep 25, 2009 at 12:21 PM, Mariano Martinez Peck < >>>>>> marianopeck@gmail.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Fri, Sep 25, 2009 at 12:04 PM, John Toohey jt@parspro.comwrote: >>>>>>> >>>>>>>> I now have a new image with Seaside 3 installed, however when >>>>>>>> I run the follow :- >>>>>>>> Installer ss project: 'SqueakDBX'; install: >>>>>>>> 'SqueakDBXPharoLoader'. >>>>>>>> SqueakDBXPharoLoader loadGlorpDBX >>>>>>>> >>>>>>>> This package depends on the following classes: >>>>>>>> PGConnection >>>>>>>> You must resolve these dependencies before you will be able to >>>>>>>> load these definitions: >>>>>>>> PGConnection classSide>>buildDefaultFieldConverters >>>>>>>> PGConnection classSide>>buildStateTransitionTable >>>>>>>> >>>>>>>> Do I need to install the Postgres driver before I do this? I >>>>>>>> thought it was part of the GlorpDBX install. >>>>>>>> >>>>>>> >>>>>>> Yeah, I know :( >>>>>>> It is difficult to explain but there is some places of Glorp >>>>>>> which still reference to PGConnection. However, it is not used. Don't worry. >>>>>>> Do a "proceed" and everything will be ok. >>>>>>> >>>>>> >>>>>> Ok. I found the problem. It's time to restrucutre some packages >>>>>> about Glorp. >>>>>> >>>>>> >>>>>> >>>>>>> I will then try to see how to fix this. >>>>>>> >>>>>>> what happened to SqueakDBX tests and the amount of connections? >>>>>>> did it work my commit ? >>>>>>> >>>>>>> Here is a summary of the things we did to GLorp and how to run >>>>>>> GlorpDBX tests: >>>>>>> >>>>>>> http://squeakdbx.smallworks.com.ar/GLORP integration >>>>>>> >>>>>>> Ok, it was a secret that webpage. It is our own website with >>>>>>> seaside and pier to replace the swiki :) We will then do the public ANN >>>>>>> hahaha. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Sep 24, 2009 at 21:16, Mariano Martinez Peck < >>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Sep 24, 2009 at 10:12 PM, John Toohey < >>>>>>>>> jt@parspro.com> wrote: >>>>>>>>> >>>>>>>>>> I am running the OpenDBX-Core tests both from the TestRunner >>>>>>>>>> and the OBPackageBrowser. The tests run successfully until my DB runs out of >>>>>>>>>> connections. Latest Pharo, and latest GlorpDBX installed. >>>>>>>>>> >>>>>>>>>> >>>>>>>>> John: I have just noticed that a lot of SqueakDBX tests don't >>>>>>>>> release the DB connections, as you guessed. I have just commit. can you >>>>>>>>> please test it and let me know ? of course, you must first reboot or kill >>>>>>>>> all the active connections ;) >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> "Name: OpenDBX-Core-Mariano.230 >>>>>>>>> Author: Mariano >>>>>>>>> Time: 24 September 2009, 10:15:03 pm >>>>>>>>> UUID: 19ce8340-3070-4495-a21d-cbe2b63aca0e >>>>>>>>> Ancestors: OpenDBX-Core-HMC.229 >>>>>>>>> >>>>>>>>> There were a lot of SqueakDBX tests that don't release the >>>>>>>>> connection after testing. So, this can result in a "Too many connections >>>>>>>>> error". Now, all tests release connections." >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Sep 24, 2009 at 20:52, Mariano Martinez Peck < >>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Thu, Sep 24, 2009 at 3:13 PM, John Toohey < >>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Okay, I've installed SqueakGlorp into my existing image, >>>>>>>>>>>> and added the symlink to the VM for openDBX. I can get up to 44 tests to >>>>>>>>>>>> pass, but it seems that the tests are not releasing their DB connections, so >>>>>>>>>>>> after a while the rest fail with a "Too many connections error" >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> These tests you are talking about are SqueakDBX tests or >>>>>>>>>>> Glorp tests when using SqueakDBX as the driver ? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Is this how it should be for those tests? I am just >>>>>>>>>>>> selecting the test package and selecting "run tests". >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> I need to know which tests are you running, if >>>>>>>>>>> OpenDBX-Core-Tests or GlorpTest. Anyway, tests should release connections. >>>>>>>>>>> If this is not done, so we have a bug in our tests. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Thu, Sep 24, 2009 at 12:24, Mariano Martinez Peck < >>>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, Sep 24, 2009 at 3:06 PM, John Toohey < >>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> - I've managed to build it on a VMWare VM running >>>>>>>>>>>>>> Ubunto, and using the --disable-utils switch, I've built it on OSX also. >>>>>>>>>>>>>> However on both systems when I run the test suite I see this :- >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Excellent news!!! I tell you: there is an utility called >>>>>>>>>>>>> odbx-sql that let you send queries trough OpenDBX. However, that utility >>>>>>>>>>>>> requires external libraries which seem to have problems, at least in >>>>>>>>>>>>> Windows. So, when we compile in Windows, we must disable that utility. But >>>>>>>>>>>>> remember this is an utility, not OpenDBX core or feature. It is not >>>>>>>>>>>>> important. I didn't know it has problems also with MacOS, so I will update >>>>>>>>>>>>> the webpage. Thanks for the testing!!!! >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> `--> ./odbxtest -b pgsql -h localhost -p 5432 -d juliet >>>>>>>>>>>>>> -u postgres -w postgres >>>>>>>>>>>>>> ODBX_CAP_BASIC: 1 >>>>>>>>>>>>>> ODBX_CAP_LO: 0 >>>>>>>>>>>>>> ODBX_OPT_API_VERSION: 10200 >>>>>>>>>>>>>> ODBX_OPT_THREAD_SAFE: 1 >>>>>>>>>>>>>> ODBX_OPT_TLS: 1 >>>>>>>>>>>>>> ODBX_OPT_CONNECT_TIMEOUT: 1 (using) >>>>>>>>>>>>>> ODBX_OPT_MULTI_STATEMENTS: 1 (using) >>>>>>>>>>>>>> ODBX_OPT_PAGED_RESULTS: 0 >>>>>>>>>>>>>> ODBX_OPT_COMPRESS: 0 >>>>>>>>>>>>>> ODBX_CAP_BASIC: 1 >>>>>>>>>>>>>> ODBX_CAP_LO: 0 >>>>>>>>>>>>>> ODBX_OPT_API_VERSION: 10200 >>>>>>>>>>>>>> ODBX_OPT_THREAD_SAFE: 1 >>>>>>>>>>>>>> ODBX_OPT_TLS: 1 >>>>>>>>>>>>>> ODBX_OPT_CONNECT_TIMEOUT: 1 (using) >>>>>>>>>>>>>> ODBX_OPT_MULTI_STATEMENTS: 1 (using) >>>>>>>>>>>>>> ODBX_OPT_PAGED_RESULTS: 0 >>>>>>>>>>>>>> ODBX_OPT_COMPRESS: 0 >>>>>>>>>>>>>> WARNING: nonstandard use of \ in a string literal >>>>>>>>>>>>>> LINE 1: SELECT * FROM odbxtest WHERE col = 'a''''\''b' >>>>>>>>>>>>>> ^ >>>>>>>>>>>>>> HINT: Use the escape string syntax for backslashes, >>>>>>>>>>>>>> e.g., E'\'. >>>>>>>>>>>>>> Error in odbx_result(): ERROR: relation "odbxtest" does >>>>>>>>>>>>>> not exist >>>>>>>>>>>>>> >>>>>>>>>>>>>> Error in odbx_result(): ERROR: relation "odbxtest" does >>>>>>>>>>>>>> not exist >>>>>>>>>>>>>> >>>>>>>>>>>>>> Not sure if this means there is a problem with the build >>>>>>>>>>>>>> (I downloaded to latest one) or a problem with the test suite. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> As you guessed this seems to be a problem with the test >>>>>>>>>>>>> suit, but the build is seems to be perfect. I will send this part to OpenDBX >>>>>>>>>>>>> mailing list and see if I receive some help. Thanks for the report. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> In order to continue and install GlorpDBX into my Pharo >>>>>>>>>>>>>> image, do I need to build a new image, as my current one already has >>>>>>>>>>>>>> Pharo-Glorp installed. I've never figured out how to uninstall packages in >>>>>>>>>>>>>> Smalltalk. >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Yeah. Me neither :( >>>>>>>>>>>>> >>>>>>>>>>>>> But, what you can do is install just SqueakDBX in that >>>>>>>>>>>>> image and run the SqueakDBX tests, using PostgreSQL to see if everything is >>>>>>>>>>>>> ok. You should have all green tests. If you get this, I would really >>>>>>>>>>>>> appreciate if you can make a binary for MacOS :) >>>>>>>>>>>>> >>>>>>>>>>>>> Then, you can take a new image and install GlorpDBX as >>>>>>>>>>>>> explained in the wiki. Most of the tests should be green. I say "most" >>>>>>>>>>>>> because there are some that fails because of what I told you that we don't >>>>>>>>>>>>> support large database fields. >>>>>>>>>>>>> >>>>>>>>>>>>> Best, >>>>>>>>>>>>> >>>>>>>>>>>>> Mariano >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 11:15, Mariano Martinez Peck < >>>>>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 1:59 PM, John Toohey < >>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I'm currently trying to build openDBX on OSX. I've >>>>>>>>>>>>>>>> finally found the postgres client libs and include files, and I've run >>>>>>>>>>>>>>>> ./configure -with-backends="pgsql", but when I run make I get this error :- >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Excellent you are giving SqueakDBX at least a try. The >>>>>>>>>>>>>>> real thing is this: The squeakDBX team is composed by 4 people. Only one has >>>>>>>>>>>>>>> a Mac and he is very busy with his work. I have ALL databases working on >>>>>>>>>>>>>>> Linux and Windows. And I have also prepared binaries for that because I can >>>>>>>>>>>>>>> (dlls, .deb and .rpm). But I cannot do it with Mac because I don't have a >>>>>>>>>>>>>>> mac and I don't know how binaries work on Mac. If you make it work, I would >>>>>>>>>>>>>>> really love you help me generating the binaries so that I can update them to >>>>>>>>>>>>>>> OpenDBX website. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Which OpenDBX version are you trying to compile? You >>>>>>>>>>>>>>> should try 1.4.3. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Can you try configuring this way please ? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> ./configure --disable-utils --with-backends="pgsql" >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> If it works, I then explain you why that :) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Making all in po >>>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-argmap.o -MD -MP -MF >>>>>>>>>>>>>>>> .deps/odbx_sql-argmap.Tpo -c -o odbx_sql-argmap.o `test -f 'argmap.cpp' || >>>>>>>>>>>>>>>> echo './'`argmap.cpp >>>>>>>>>>>>>>>> mv -f .deps/odbx_sql-argmap.Tpo >>>>>>>>>>>>>>>> .deps/odbx_sql-argmap.Po >>>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-commands.o -MD -MP >>>>>>>>>>>>>>>> -MF .deps/odbx_sql-commands.Tpo -c -o odbx_sql-commands.o `test -f >>>>>>>>>>>>>>>> 'commands.cpp' || echo './'`commands.cpp >>>>>>>>>>>>>>>> mv -f .deps/odbx_sql-commands.Tpo >>>>>>>>>>>>>>>> .deps/odbx_sql-commands.Po >>>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-completion.o -MD -MP >>>>>>>>>>>>>>>> -MF .deps/odbx_sql-completion.Tpo -c -o odbx_sql-completion.o `test -f >>>>>>>>>>>>>>>> 'completion.cpp' || echo './'`completion.cpp >>>>>>>>>>>>>>>> mv -f .deps/odbx_sql-completion.Tpo >>>>>>>>>>>>>>>> .deps/odbx_sql-completion.Po >>>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-odbx-sql.o -MD -MP >>>>>>>>>>>>>>>> -MF .deps/odbx_sql-odbx-sql.Tpo -c -o odbx_sql-odbx-sql.o `test -f >>>>>>>>>>>>>>>> 'odbx-sql.cpp' || echo './'`odbx-sql.cpp >>>>>>>>>>>>>>>> odbx-sql.cpp: In function 'int main(int, char**)': >>>>>>>>>>>>>>>> odbx-sql.cpp:228: error: invalid conversion from >>>>>>>>>>>>>>>> 'char* (*)(const char*, int)' to 'int (*)(const char*, int)' >>>>>>>>>>>>>>>> make[3]: *** [odbx_sql-odbx-sql.o] Error 1 >>>>>>>>>>>>>>>> make[2]: *** [all-recursive] Error 1 >>>>>>>>>>>>>>>> make[1]: *** [all-recursive] Error 1 >>>>>>>>>>>>>>>> make: *** [all] Error 2 >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Do you know of any pre-built binaries that will work >>>>>>>>>>>>>>>> on OSX? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I don't know, but I would love to have them!!! >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 23:09, Mariano Martinez Peck >>>>>>>>>>>>>>>> marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 11:27 PM, John Toohey < >>>>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hey, >>>>>>>>>>>>>>>>>> Thanks for looking into this for me. I'm just using >>>>>>>>>>>>>>>>>> Pharo as my app is using the beta of Seaside 3.0. I'm going to do as you >>>>>>>>>>>>>>>>>> suggested and put some debug statements in PGConnection, and see where that >>>>>>>>>>>>>>>>>> leads. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Ok, let us know what the problem was if you find it >>>>>>>>>>>>>>>>> :) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Is it a lot of changes from me to switch to DBX on >>>>>>>>>>>>>>>>>> Pharo? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> No. Your application shouldn't have any changes. You >>>>>>>>>>>>>>>>> application will use just Glorp. But in this case Glorp won't use the native >>>>>>>>>>>>>>>>> PostgreSQL driver, but SqueakDBX with PostgreSQL. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I assume there are no changes in my Glorp code, but >>>>>>>>>>>>>>>>>> what else do I need to do. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> The only thing you must do is: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> - Install the PostgreSQL client library (if you don't >>>>>>>>>>>>>>>>> have it already installed). >>>>>>>>>>>>>>>>> - Compile or Install (if you are in Linux you can use >>>>>>>>>>>>>>>>> the .rpm or .deb) OpenDBX with PostgreSQL, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> You can read how to do it here: >>>>>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6129 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> You must do it only once. Once this is done, >>>>>>>>>>>>>>>>> everything is easy and you can take advantage of all the SqueakDBX features >>>>>>>>>>>>>>>>> (http://wiki.squeak.org/squeak/6106). OpenDBX works >>>>>>>>>>>>>>>>> perfect with PostgreSQL in Linux, Mac and Windows. We have also have >>>>>>>>>>>>>>>>> GlorpDBX working with SqueakDBX and PostgreSQL and it is very easy to >>>>>>>>>>>>>>>>> install: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6130 (where it says >>>>>>>>>>>>>>>>> GlorpDBX). >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> The only limitation we have right now is that we >>>>>>>>>>>>>>>>> don't support large objects (blob, clob, etc) yet. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> If you try it and have any problem, please, let us >>>>>>>>>>>>>>>>> know!!! >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I develop on OSX and deploy to Linux for production. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> No problem. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 21:03, Mariano Martinez Peck >>>>>>>>>>>>>>>>>> marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I was thinking if you have the problem in Squeak >>>>>>>>>>>>>>>>>>> also or just Pharo ? >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:12 PM, Mariano Martinez >>>>>>>>>>>>>>>>>>> Peck marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:25 PM, John Toohey < >>>>>>>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Hi John! This list is SqueakDBX related, so >>>>>>>>>>>>>>>>>>>> perhaps I am not the best one to help you. I just make Glorp and PostgreSQL >>>>>>>>>>>>>>>>>>>> native driver to work on Pharo. Actually, the only thing I did is to have >>>>>>>>>>>>>>>>>>>> all green tests. No more than that. I don't have a Glorp + native postgresql >>>>>>>>>>>>>>>>>>>> driver application. Anyway, I will try to help you ;) >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> My app frequently losses the connection the >>>>>>>>>>>>>>>>>>>>> Postgres, and throws a "Connection not Valid" exception. Unfortunately on >>>>>>>>>>>>>>>>>>>>> the latest Pharo images, there is a bug that causes this to write the stack >>>>>>>>>>>>>>>>>>>>> trace to disk, and then the image locks up. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> you meat there is a Pharo bug that when there is a >>>>>>>>>>>>>>>>>>>> walkback and the stacktrace is written to disk, it freezes the image ? is >>>>>>>>>>>>>>>>>>>> there a bug report of that ? Could you reproduce that ? >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> I think the socket on the PGConnection class is >>>>>>>>>>>>>>>>>>>>> being closed or times out, and I need to know is there someway that I can >>>>>>>>>>>>>>>>>>>>> debug this or if its a know issue. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Yes, that's probably the case. I can see in code >>>>>>>>>>>>>>>>>>>> that the error 'Connection not valid' when the connection is not connected >>>>>>>>>>>>>>>>>>>> or if it is nil. If you see your stacktrace, you can see that the socket >>>>>>>>>>>>>>>>>>>> variable is nil. That's why the error. Now, the question is why the socket >>>>>>>>>>>>>>>>>>>> is nil ? >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> I looked for the code to see where can be the >>>>>>>>>>>>>>>>>>>> socket set to nil, and I found some places: PGConnection stTerminalError: >>>>>>>>>>>>>>>>>>>> , stTerminated >>>>>>>>>>>>>>>>>>>> Perhaps you can put a "self halt" in those methods >>>>>>>>>>>>>>>>>>>> and then debug them. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> The PGConnection seems to do a lot of "self log: >>>>>>>>>>>>>>>>>>>> 'XXXX'". So, perhaps you can have a Transcript opened to see that. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Finally, why don't you give a try to GlorpDBX + >>>>>>>>>>>>>>>>>>>> SqueakDBX ? It works pretty well and has good performance. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> I hope this helps. Remember I am not a native >>>>>>>>>>>>>>>>>>>> postgresql driver guru. Perhaps you can ask also in squeak-dev or pharo >>>>>>>>>>>>>>>>>>>> mailing lists. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> I am using the latest Pharo image, with the >>>>>>>>>>>>>>>>>>>>> latest Pharo-Glorp package, and the newest Postgres driver. I think this is >>>>>>>>>>>>>>>>>>>>> the relevant part of the stack trace :- >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> PGConnection(Object)>>error: >>>>>>>>>>>>>>>>>>>>> Receiver: a PGConnection >>>>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>>>> aString: 'Connection not valid' >>>>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>>>> trace: 0 >>>>>>>>>>>>>>>>>>>>> state: #Terminated >>>>>>>>>>>>>>>>>>>>> events: an OrderedCollection() >>>>>>>>>>>>>>>>>>>>> socket: nil >>>>>>>>>>>>>>>>>>>>> readBuffer: 'PblankT id ��name �$password >>>>>>>>>>>>>>>>>>>>> �6client...etc... >>>>>>>>>>>>>>>>>>>>> readIndex: 384 >>>>>>>>>>>>>>>>>>>>> lastReadIndex: 384 >>>>>>>>>>>>>>>>>>>>> writeBuffer: nil >>>>>>>>>>>>>>>>>>>>> processId: 28132 >>>>>>>>>>>>>>>>>>>>> secretKey: 1795051851 >>>>>>>>>>>>>>>>>>>>> sql: 'SELECT t1.id, t1.name, t1.password, >>>>>>>>>>>>>>>>>>>>> t1.client, t1.role, t1.mobile, t1.ema...etc... >>>>>>>>>>>>>>>>>>>>> functionCallOid: nil >>>>>>>>>>>>>>>>>>>>> functionCallArgs: nil >>>>>>>>>>>>>>>>>>>>> copyStream: nil >>>>>>>>>>>>>>>>>>>>> result: a PGResult >>>>>>>>>>>>>>>>>>>>> connectionArgs: a PGConnectionArgs >>>>>>>>>>>>>>>>>>>>> notificationSubscribers: nil >>>>>>>>>>>>>>>>>>>>> fieldConverters: an >>>>>>>>>>>>>>>>>>>>> IdentityDictionary(16->[closure] in PGConnection class>>boo...etc... >>>>>>>>>>>>>>>>>>>>> sqlStringConverter: [closure] in >>>>>>>>>>>>>>>>>>>>> PGConnection>>clientEncoding: >>>>>>>>>>>>>>>>>>>>> receivingTextConverter: an UTF8TextConverter >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> PGConnection>>execute: >>>>>>>>>>>>>>>>>>>>> Receiver: a PGConnection >>>>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>>>> sqlString: 'SELECT t1.id, t1.typename, >>>>>>>>>>>>>>>>>>>>> t1.description, t1.selectioncount, t1.pr...etc... >>>>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>>>> trace: 0 >>>>>>>>>>>>>>>>>>>>> state: #Terminated >>>>>>>>>>>>>>>>>>>>> events: an OrderedCollection() >>>>>>>>>>>>>>>>>>>>> socket: nil >>>>>>>>>>>>>>>>>>>>> readBuffer: 'PblankT id ��name �$password >>>>>>>>>>>>>>>>>>>>> �6client...etc... >>>>>>>>>>>>>>>>>>>>> readIndex: 384 >>>>>>>>>>>>>>>>>>>>> lastReadIndex: 384 >>>>>>>>>>>>>>>>>>>>> writeBuffer: nil >>>>>>>>>>>>>>>>>>>>> processId: 28132 >>>>>>>>>>>>>>>>>>>>> secretKey: 1795051851 >>>>>>>>>>>>>>>>>>>>> sql: 'SELECT t1.id, t1.name, t1.password, >>>>>>>>>>>>>>>>>>>>> t1.client, t1.role, t1.mobile, t1.ema...etc... >>>>>>>>>>>>>>>>>>>>> functionCallOid: nil >>>>>>>>>>>>>>>>>>>>> functionCallArgs: nil >>>>>>>>>>>>>>>>>>>>> copyStream: nil >>>>>>>>>>>>>>>>>>>>> result: a PGResult >>>>>>>>>>>>>>>>>>>>> connectionArgs: a PGConnectionArgs >>>>>>>>>>>>>>>>>>>>> notificationSubscribers: nil >>>>>>>>>>>>>>>>>>>>> fieldConverters: an >>>>>>>>>>>>>>>>>>>>> IdentityDictionary(16->[closure] in PGConnection class>>boo...etc... >>>>>>>>>>>>>>>>>>>>> sqlStringConverter: [closure] in >>>>>>>>>>>>>>>>>>>>> PGConnection>>clientEncoding: >>>>>>>>>>>>>>>>>>>>> receivingTextConverter: an UTF8TextConverter >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> SqueakDatabaseAccessor>>basicExecuteSQLString: >>>>>>>>>>>>>>>>>>>>> Receiver: a SqueakDatabaseAccessor >>>>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>>>> aString: 'SELECT t1.id, t1.typename, >>>>>>>>>>>>>>>>>>>>> t1.description, t1.selectioncount, t1.prio...etc... >>>>>>>>>>>>>>>>>>>>> result: nil >>>>>>>>>>>>>>>>>>>>> rowCollection: nil >>>>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>>>> connection: a PGConnection >>>>>>>>>>>>>>>>>>>>> currentLogin: a Login(a PostgreSQLPlatform, >>>>>>>>>>>>>>>>>>>>> 'postgres', '847129', 'localhost_ju...etc... >>>>>>>>>>>>>>>>>>>>> logging: true >>>>>>>>>>>>>>>>>>>>> reusePreparedStatements: nil >>>>>>>>>>>>>>>>>>>>> deniedCommands: nil >>>>>>>>>>>>>>>>>>>>> mutex: a Semaphore() >>>>>>>>>>>>>>>>>>>>> dependents: nil >>>>>>>>>>>>>>>>>>>>> isInTransaction: false >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Any help would be appreciated, as this is >>>>>>>>>>>>>>>>>>>>> stopping me from going to a Beta test at the moment. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>>>>> SqueakDBX mailing list >>>>>>>>>>>>>>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> -JT >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> -JT >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> SqueakDBX mailing list >>>>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>>>> >>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> -JT >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> SqueakDBX mailing list >>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> -JT >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> SqueakDBX mailing list >>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> -JT >>>>> >>>>> >>>>> >>>> >>> >>> >>> -- >>> -JT >>> >>> >>> >> > > > -- > -JT > > >
-- -JT
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
-- -JT
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
Just built a new image with the native driver installed, instead of the DBX one. Results are the same, so its something in my code. I'll keep debugging and let you know how I progress.
On Sun, Oct 4, 2009 at 11:22, John Toohey jt@parspro.com wrote:
Yes, it was working fine with Glorp + the native driver. This is the Glorp debug :-Begin Transaction select nextval('TOURNAMENTMARKETS_id_SEQ') from pg_attribute limit 1 INSERT INTO TOURNAMENTS (bookmaker,event,name,status,fee,prizewin,prizeplace,payout,buyin,opentime,closetime,tournamenttype,maxpunters,odds,favourite,version) VALUES (1,1,'T-XY','Unpublished',5,0,0,100,false,'2009-10-04 12:00:00','2009-10-04 12:00:00','Pari-Mutual',100,NULL,NULL,1)10:46:02 am - GlorpDatabaseWriteError: RECOVERABLE OpenDBX: ERROR: null value in column "id" violates not-null constraint Rollback Transaction
The nextval function is being passed the wrong sequence table name, it should be TOURNAMENT_id_SEQ. This is the save code :-
status ifTrue:[ markets := nil. [ self session dataStore commit: [self session dataStore register: tournament]. self session dataStore refresh: tournament ]ifError:[ :error | JulietLogger log: error. status := false. self halt] ].
And this is the table descriptor :-
tableForTOURNAMENTS: aTable |bookieId oddsTableId eventId|
(aTable createFieldNamed: #id type: platform sequence) bePrimaryKey. bookieId := aTable createFieldNamed: #bookmaker type: platform int4. oddsTableId := aTable createFieldNamed: #oddstable type: platform int4. eventId := aTable createFieldNamed: #event type: platform int4.
aTable createFieldNamed: #name type: (platform varchar: 32); createFieldNamed: #status type: (platform varchar: 32); createFieldNamed: #fee type: (platform integer); createFieldNamed: #prizewin type: (platform integer); createFieldNamed: #prizeplace type: (platform integer); createFieldNamed: #payout type: (platform integer); createFieldNamed: #buyin type: (platform boolean); createFieldNamed: #opentime type: (platform timestamp); createFieldNamed: #closetime type: (platform timestamp); createFieldNamed: #tournamenttype type: (platform varchar: 32); createFieldNamed: #maxpunters type: (platform integer); createFieldNamed: #odds type: (platform integer); createFieldNamed: #favourite type: (platform varchar: 4); createFieldNamed: #version type: (platform versionFieldFor: platform int4); addForeignKeyFrom: bookieId to: ((self tableNamed: #BOOKMAKERS) fieldNamed: 'id'); addForeignKeyFrom: eventId to: ((self tableNamed: #EVENTS) fieldNamed: 'id'); addForeignKeyFrom: oddsTableId to: ((self tableNamed: #ODDSTABLES) fieldNamed: 'id'). (aTable fieldNamed: 'version') beLockKey
Its very strange, as it only seems to be this table that is causing the problem.
On Sat, Oct 3, 2009 at 19:05, Mariano Martinez Peck <marianopeck@gmail.com
wrote:
On Sat, Oct 3, 2009 at 1:39 PM, John Toohey jt@parspro.com wrote:
Okay, I think now I know what is going on. In my Seaside app, I allow the user to logout, and this method disconnects from the DB, and expires the Seaside session. I also have an expiration timeout set on the session. I think that Seaside is sending me a #unregistered message, after I have logged back in, and this method is calling #disconnect. I have removed some of the session handling code, and things are working a lot better now.
Excellent! Good research :)
However, I have know noticed something that was working fine with Glorp, and seems broken now.
when was woring? when you used Glorp + PostgreSQL native driver ? or before doing the changes you said about the seaside session ?
One of my classes that inserts new records in the DB is missing the id (sequence, pk) field. I can see from the GlorpDBX debug, that a call is made to Postgres for the next sequence number, but the insert statement is missing the id field. Here is the trace messages :-
odbx_query: called with values: handle = 380908736 query = select nextval('TOURNAMENTMARKETS_id_SEQ') from pg_attribute limit 1 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 3 odbx_result resultSet handle returned: 381100928 odbx_column_count: called with values: resultSet handle = 381100928 odbx_row_fetch: called with values: resultSet handle = 381100928 odbx_row_fetch call returned 1 odbx_row_fetch: called with values: resultSet handle = 381100928 odbx_row_fetch call returned 0 odbx_result_finish: called with values: resultSet handle = 381100928 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 0 odbx_result resultSet handle returned: 0 odbx_query: called with values: handle = 380908736 query = INSERT INTO TOURNAMENTS (bookmaker,event,name,status,fee,prizewin,prizeplace,payout,buyin,opentime,closetime,tournamenttype,maxpunters,odds,favourite,version) VALUES (1,1,'Tourney-A1','Unpublished',5,0,0,76,false,'2009-10-03 12:00:00','2009-10-03 12:00:00','Pari-Mutual',90,NULL,NULL,1) odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: -1 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 0 odbx_result resultSet handle returned: 0 12:27:22 pm - GlorpDatabaseWriteError: RECOVERABLE OpenDBX: ERROR: null value in column "id" violates not-null constraint
This is weird. The query select nextval('TOURNAMENTMARKETS_id_SEQ') from pg_attribute limit 1 works perfect using SqueakDBX (I have just tested it).
Now I wonder why Glorp didn't put the id in the query...do you know if this was working when you were using Glorp + PostgreSQL native driver ? Just to see where the cause of the problem can be. Perhaps it is a GLorp related problem that we should ask in Glorp mailing list.
Do you know that there is also (I think) some debug to enable in Glorp ? because what you send us is the SqueakDBX driver log, not Glorp.
Can you send us the mappings for the class/table TOURNAMENTS ?
which is the message you are sending to Glorp so that it generates the insert ?
Best,
Mariano
On Thu, Oct 1, 2009 at 15:33, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
I fordward the email to the list.
On Thu, Oct 1, 2009 at 4:05 PM, John Toohey jt@parspro.com wrote:
Hey,Haven't loaded the latest yet, as I'm still debugging my connection timeout issue.
Ok, let's go step by step :)
No closer to the cause, but I have a better idea of what is happening now. In all my methods in my DB class, I call a method to get the glorpSession. In this method, I have a check to see if I am still logged in, and break if I am not. Now I see that, as I lazily initialize objects that are referred by foreign keys, the Glorp Proxy will make a DB call on my behalf, whenever I reference one of these objects. The Proxy calls #basicExecuteSQLString in the DataAccessor, and that calls #execute in DBXConnection. That is where the code check if the connection is open, and fails there.
Do you have any suggestions about how I can hook into that, and perhaps try to re-connect on that error?
Great progress!!! I am glad at least that our error handling is working properly ;)
The thing is that any thing you do, is a kind of hack. For example, I cannot reopen a connection in SqueakDBX in that case. Perhaps that change should be done in Glorp?
A hack could be to reopen the connection in #basicExecuteSQLString when that errors happen. Remember you already have a reOpen method in DBXConnection. I can add a reConnect if necessary. They good this that this is very easy, as you don't need to send the querySettings again as the connection already has it as an instance variable :)
Anyway, I don't understand something. The same connection was perfect some time ago it fails, Ok ? so...if it then disconnect or close, who closes that ? the GC? you ? glorp ? We don't handle timeouts or something like that and close the connection.
Cheers,
Mariano
On Wed, Sep 30, 2009 at 11:34, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Of course it would be excellent if you can run all tests not only the one with the problem so that to be sure I didn't break something else ;)
cheers,
mariano
On Wed, Sep 30, 2009 at 12:16 PM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
> Done: > > Name: OpenDBX-Core-MarianoMartinezPeck.231 > Author: MarianoMartinezPeck > Time: 30 September 2009, 12:14:49 pm > UUID: 780ee5d8-3d5f-0e46-b3c0-d22ca512b498 > Ancestors: OpenDBX-Core-Mariano.230 > > Fix to possible bug. Now DBXPlatform uses the timeout of the > QuerySetttings instead of the default. > > > Just download that version from monticello. > > However, here at work I only have Sqlite3. So, I should test with all > backend in Linux and Windows tonight at home. > > Tell me if it works. > > Best > > Mariano > > > On Wed, Sep 30, 2009 at 11:23 AM, John Toohey jt@parspro.comwrote: > >> Good, let me know when there is an update, and how to install it, >> and I can test again. >> >> On Wed, Sep 30, 2009 at 09:37, Mariano Martinez Peck < >> marianopeck@gmail.com> wrote: >> >>> Thanks John. I think you found a bug ;) The weird thing is that >>> I cannot reproduce it here. Perhaps it is because of the client library for >>> Mac. It's the only difference I see. >>> >>> Tonight I will test the fix I have just did and if everything is ok >>> I will commit it. >>> >>> Thank you very much. >>> >>> On Wed, Sep 30, 2009 at 10:02 AM, John Toohey jt@parspro.comwrote: >>> >>>> This is the full stack :- >>>> UndefinedObject(Object)>>doesNotUnderstand: #asMiliseconds >>>> Receiver: nil >>>> Arguments and temporary variables: >>>> aMessage: asMiliseconds >>>> exception: MessageNotUnderstood: receiver of "asMiliseconds" is >>>> nil >>>> resumeValue: nil >>>> Receiver's instance variables: >>>> nil >>>> >>>> [] in [] in >>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>> Receiver: a DBXPostgresPlatform >>>> Arguments and temporary variables: >>>> aConnection: 0 >>>> aQuerySettings: 1 >>>> returnCode: a DBXConnection >>>> handle: a DBXQuerySettings >>>> code: #(1) >>>> Receiver's instance variables: >>>> a DBXPostgresPlatform >>>> >>>> >>>> DBXPostgresPlatform(DBXPlatform)>>nextResultSet:querySettings:onReturn: >>>> Receiver: a DBXPostgresPlatform >>>> Arguments and temporary variables: >>>> aConnection: a DBXConnection >>>> aQuerySettings: a DBXQuerySettings >>>> aBlock: [closure] in [] in >>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultS...etc... >>>> handle: 0 >>>> err: 1 >>>> handleArray: a WordArray(0) >>>> Receiver's instance variables: >>>> a DBXPostgresPlatform >>>> >>>> [] in >>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>> Receiver: a DBXPostgresPlatform >>>> Arguments and temporary variables: >>>> aConnection: a DBXConnection >>>> aQuerySettings: a DBXQuerySettings >>>> returnCode: #(1) >>>> Receiver's instance variables: >>>> a DBXPostgresPlatform >>>> >>>> BlockClosure>>doWhileTrue: >>>> Receiver: [closure] in >>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>> Arguments and temporary variables: >>>> conditionBlock: [closure] in >>>> DBXPostgresPlatform(DBXPlatform)>>processNextResul...etc... >>>> result: nil >>>> Receiver's instance variables: >>>> outerContext: >>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySetti...etc... >>>> startpc: 91 >>>> numArgs: 0 >>>> >>>> >>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>> Receiver: a DBXPostgresPlatform >>>> Arguments and temporary variables: >>>> aConnection: a DBXConnection >>>> aQuerySettings: a DBXQuerySettings >>>> returnCode: #(1) >>>> Receiver's instance variables: >>>> a DBXPostgresPlatform >>>> >>>> >>>> DBXPostgresPlatform(DBXPlatform)>>executeStatement:on:querySettings: >>>> Receiver: a DBXPostgresPlatform >>>> Arguments and temporary variables: >>>> aString: 'select * from student' >>>> aConnection: a DBXConnection >>>> aQuerySettings: a DBXQuerySettings >>>> err: 0 >>>> result: nil >>>> Receiver's instance variables: >>>> a DBXPostgresPlatform >>>> >>>> DBXConnection>>execute:querySettings: >>>> Receiver: a DBXConnection >>>> Arguments and temporary variables: >>>> aString: 'select * from student' >>>> aQuerySettings: a DBXQuerySettings >>>> aResult: nil >>>> Receiver's instance variables: >>>> platform: a DBXPostgresPlatform >>>> settings: a DBXConnectionSettings >>>> handle: 3118944 >>>> open: a ValueHolder >>>> connected: a ValueHolder >>>> result: nil >>>> >>>> DBXQueryTimeoutTest>>testNoTimeout >>>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>>> Arguments and temporary variables: >>>> conn: a DBXConnection >>>> aQuerySettings: a DBXQuerySettings >>>> rows: 5000 >>>> Receiver's instance variables: >>>> testSelector: #testNoTimeout >>>> facility: a DBXPostgreFacility >>>> connection: a DBXConnection >>>> >>>> DBXQueryTimeoutTest(TestCase)>>performTest >>>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>>> Arguments and temporary variables: >>>> >>>> Receiver's instance variables: >>>> testSelector: #testNoTimeout >>>> facility: a DBXPostgreFacility >>>> connection: a DBXConnection >>>> >>>> [] in DBXQueryTimeoutTest(TestCase)>>runCase >>>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>>> Arguments and temporary variables: >>>> >>>> Receiver's instance variables: >>>> testSelector: #testNoTimeout >>>> facility: a DBXPostgreFacility >>>> connection: a DBXConnection >>>> >>>> BlockClosure>>ensure: >>>> Receiver: [closure] in DBXQueryTimeoutTest(TestCase)>>runCase >>>> Arguments and temporary variables: >>>> aBlock: [closure] in DBXQueryTimeoutTest(TestCase)>>runCase >>>> returnValue: nil >>>> b: nil >>>> Receiver's instance variables: >>>> outerContext: DBXQueryTimeoutTest(TestCase)>>runCase >>>> startpc: 33 >>>> numArgs: 0 >>>> >>>> DBXQueryTimeoutTest(TestCase)>>runCase >>>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>>> Arguments and temporary variables: >>>> >>>> Receiver's instance variables: >>>> testSelector: #testNoTimeout >>>> facility: a DBXPostgreFacility >>>> connection: a DBXConnection >>>> >>>> [] in DBXQueryTimeoutTest(TestCase)>>debug >>>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>>> Arguments and temporary variables: >>>> >>>> Receiver's instance variables: >>>> testSelector: #testNoTimeout >>>> facility: a DBXPostgreFacility >>>> connection: nil >>>> >>>> BlockClosure>>ensure: >>>> Receiver: [closure] in DBXQueryTimeoutTest(TestCase)>>debug >>>> Arguments and temporary variables: >>>> aBlock: [closure] in DBXQueryTimeoutTest(TestCase)>>debug >>>> returnValue: nil >>>> b: nil >>>> Receiver's instance variables: >>>> outerContext: DBXQueryTimeoutTest(TestCase)>>debug >>>> startpc: 62 >>>> numArgs: 0 >>>> >>>> DBXQueryTimeoutTest(TestCase)>>debug >>>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>>> Arguments and temporary variables: >>>> >>>> Receiver's instance variables: >>>> testSelector: #testNoTimeout >>>> facility: a DBXPostgreFacility >>>> connection: nil >>>> >>>> [] in TestRunner>>debugSuite: >>>> Receiver: a TestRunner >>>> Arguments and temporary variables: >>>> <<error during printing> >>>> Receiver's instance variables: >>>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>>> #'AutomaticMetho...etc... >>>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>>> #'OpenDBX-Core-Tests' #'...etc... >>>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>>> DBXConnectionTest . DBXDescri...etc... >>>> classIndex: 0 >>>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>>> failedList: #() >>>> failedSelected: nil >>>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>>> lastUpdate: 3431753837 >>>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>>> errors, 0 unexpecte...etc... >>>> previousRun: nil >>>> >>>> OrderedCollection>>do: >>>> Receiver: an >>>> OrderedCollection(DBXQueryTimeoutTest>>#testNoTimeout) >>>> Arguments and temporary variables: >>>> aBlock: [closure] in TestRunner>>debugSuite: >>>> index: 3 >>>> Receiver's instance variables: >>>> array: an Array(nil nil DBXQueryTimeoutTest>>#testNoTimeout nil >>>> nil nil nil nil...etc... >>>> firstIndex: 3 >>>> lastIndex: 3 >>>> >>>> [] in TestRunner>>basicRunSuite:do: >>>> Receiver: a TestRunner >>>> Arguments and temporary variables: >>>> aTestSuite: a TestSuite >>>> aBlock: [closure] in TestRunner>>debugSuite: >>>> Receiver's instance variables: >>>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>>> #'AutomaticMetho...etc... >>>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>>> #'OpenDBX-Core-Tests' #'...etc... >>>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>>> DBXConnectionTest . DBXDescri...etc... >>>> classIndex: 0 >>>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>>> failedList: #() >>>> failedSelected: nil >>>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>>> lastUpdate: 3431753837 >>>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>>> errors, 0 unexpecte...etc... >>>> previousRun: nil >>>> >>>> BlockClosure>>ensure: >>>> Receiver: [closure] in TestRunner>>basicRunSuite:do: >>>> Arguments and temporary variables: >>>> aBlock: [closure] in TestRunner>>basicRunSuite:do: >>>> returnValue: nil >>>> b: nil >>>> Receiver's instance variables: >>>> outerContext: TestRunner>>basicRunSuite:do: >>>> startpc: 51 >>>> numArgs: 0 >>>> >>>> TestRunner>>basicRunSuite:do: >>>> Receiver: a TestRunner >>>> Arguments and temporary variables: >>>> aTestSuite: a TestSuite >>>> aBlock: [closure] in TestRunner>>debugSuite: >>>> Receiver's instance variables: >>>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>>> #'AutomaticMetho...etc... >>>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>>> #'OpenDBX-Core-Tests' #'...etc... >>>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>>> DBXConnectionTest . DBXDescri...etc... >>>> classIndex: 0 >>>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>>> failedList: #() >>>> failedSelected: nil >>>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>>> lastUpdate: 3431753837 >>>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>>> errors, 0 unexpecte...etc... >>>> previousRun: nil >>>> >>>> TestRunner>>debugSuite: >>>> Receiver: a TestRunner >>>> Arguments and temporary variables: >>>> aTestSuite: a TestSuite >>>> Receiver's instance variables: >>>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>>> #'AutomaticMetho...etc... >>>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>>> #'OpenDBX-Core-Tests' #'...etc... >>>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>>> DBXConnectionTest . DBXDescri...etc... >>>> classIndex: 0 >>>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>>> failedList: #() >>>> failedSelected: nil >>>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>>> lastUpdate: 3431753837 >>>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>>> errors, 0 unexpecte...etc... >>>> previousRun: nil >>>> >>>> TestRunner>>debug: >>>> Receiver: a TestRunner >>>> Arguments and temporary variables: >>>> aTestCase: DBXQueryTimeoutTest>>#testNoTimeout >>>> Receiver's instance variables: >>>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>>> #'AutomaticMetho...etc... >>>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>>> #'OpenDBX-Core-Tests' #'...etc... >>>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>>> DBXConnectionTest . DBXDescri...etc... >>>> classIndex: 0 >>>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>>> failedList: #() >>>> failedSelected: nil >>>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>>> lastUpdate: 3431753837 >>>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>>> errors, 0 unexpecte...etc... >>>> previousRun: nil >>>> >>>> TestRunner>>errorSelected: >>>> Receiver: a TestRunner >>>> Arguments and temporary variables: >>>> anInteger: 1 >>>> Receiver's instance variables: >>>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>>> #'AutomaticMetho...etc... >>>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>>> #'OpenDBX-Core-Tests' #'...etc... >>>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>>> DBXConnectionTest . DBXDescri...etc... >>>> classIndex: 0 >>>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>>> failedList: #() >>>> failedSelected: nil >>>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>>> lastUpdate: 3431753837 >>>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>>> errors, 0 unexpecte...etc... >>>> previousRun: nil >>>> >>>> PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection: >>>> Receiver: a PluggableListMorphPlus(3968) >>>> Arguments and temporary variables: >>>> anInteger: 1 >>>> Receiver's instance variables: >>>> bounds: 1481@397 corner: 1792@583 >>>> owner: a PluggableStandardWindow(1639) >>>> submorphs: an Array(a TransformMorph(3663)) >>>> fullBounds: 1481@397 corner: 1792@583 >>>> color: Color white >>>> extension: a MorphExtension (3283) [locked] [other: >>>> (layoutFrame -> a LayoutF...etc... >>>> borderWidth: 1 >>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>> model: a TestRunner >>>> slotName: nil >>>> open: false >>>> scrollBar: a ScrollBar(2643) >>>> scroller: a TransformMorph(3663) >>>> retractableScrollBar: false >>>> scrollBarOnLeft: false >>>> getMenuSelector: #errorMenu: >>>> getMenuTitleSelector: nil >>>> hasFocus: false >>>> hScrollBar: a ScrollBar(2842) >>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>> getListSelector: #errorList >>>> getListSizeSelector: nil >>>> getListElementSelector: nil >>>> getIndexSelector: #errorSelected >>>> setIndexSelector: #errorSelected: >>>> keystrokeActionSelector: nil >>>> autoDeselect: true >>>> lastKeystrokeTime: 0 >>>> lastKeystrokes: '' >>>> doubleClickSelector: nil >>>> handlesBasicKeys: nil >>>> potentialDropRow: nil >>>> listMorph: a LazyListMorph(884) >>>> hScrollRangeCache: nil >>>> dragItemSelector: nil >>>> dropItemSelector: nil >>>> wantsDropSelector: nil >>>> >>>> PluggableListMorphPlus(PluggableListMorph)>>mouseUp: >>>> Receiver: a PluggableListMorphPlus(3968) >>>> Arguments and temporary variables: >>>> event: [1546@408 mouseUp 57402925 nil] >>>> row: 1 >>>> mdr: 1 >>>> Receiver's instance variables: >>>> bounds: 1481@397 corner: 1792@583 >>>> owner: a PluggableStandardWindow(1639) >>>> submorphs: an Array(a TransformMorph(3663)) >>>> fullBounds: 1481@397 corner: 1792@583 >>>> color: Color white >>>> extension: a MorphExtension (3283) [locked] [other: >>>> (layoutFrame -> a LayoutF...etc... >>>> borderWidth: 1 >>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>> model: a TestRunner >>>> slotName: nil >>>> open: false >>>> scrollBar: a ScrollBar(2643) >>>> scroller: a TransformMorph(3663) >>>> retractableScrollBar: false >>>> scrollBarOnLeft: false >>>> getMenuSelector: #errorMenu: >>>> getMenuTitleSelector: nil >>>> hasFocus: false >>>> hScrollBar: a ScrollBar(2842) >>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>> getListSelector: #errorList >>>> getListSizeSelector: nil >>>> getListElementSelector: nil >>>> getIndexSelector: #errorSelected >>>> setIndexSelector: #errorSelected: >>>> keystrokeActionSelector: nil >>>> autoDeselect: true >>>> lastKeystrokeTime: 0 >>>> lastKeystrokes: '' >>>> doubleClickSelector: nil >>>> handlesBasicKeys: nil >>>> potentialDropRow: nil >>>> listMorph: a LazyListMorph(884) >>>> hScrollRangeCache: nil >>>> dragItemSelector: nil >>>> dropItemSelector: nil >>>> wantsDropSelector: nil >>>> >>>> PluggableListMorphPlus(Morph)>>handleMouseUp: >>>> Receiver: a PluggableListMorphPlus(3968) >>>> Arguments and temporary variables: >>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>> Receiver's instance variables: >>>> bounds: 1481@397 corner: 1792@583 >>>> owner: a PluggableStandardWindow(1639) >>>> submorphs: an Array(a TransformMorph(3663)) >>>> fullBounds: 1481@397 corner: 1792@583 >>>> color: Color white >>>> extension: a MorphExtension (3283) [locked] [other: >>>> (layoutFrame -> a LayoutF...etc... >>>> borderWidth: 1 >>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>> model: a TestRunner >>>> slotName: nil >>>> open: false >>>> scrollBar: a ScrollBar(2643) >>>> scroller: a TransformMorph(3663) >>>> retractableScrollBar: false >>>> scrollBarOnLeft: false >>>> getMenuSelector: #errorMenu: >>>> getMenuTitleSelector: nil >>>> hasFocus: false >>>> hScrollBar: a ScrollBar(2842) >>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>> getListSelector: #errorList >>>> getListSizeSelector: nil >>>> getListElementSelector: nil >>>> getIndexSelector: #errorSelected >>>> setIndexSelector: #errorSelected: >>>> keystrokeActionSelector: nil >>>> autoDeselect: true >>>> lastKeystrokeTime: 0 >>>> lastKeystrokes: '' >>>> doubleClickSelector: nil >>>> handlesBasicKeys: nil >>>> potentialDropRow: nil >>>> listMorph: a LazyListMorph(884) >>>> hScrollRangeCache: nil >>>> dragItemSelector: nil >>>> dropItemSelector: nil >>>> wantsDropSelector: nil >>>> >>>> MouseButtonEvent>>sentTo: >>>> Receiver: [1546@408 mouseUp 57402925 nil] >>>> Arguments and temporary variables: >>>> anObject: a PluggableListMorphPlus(3968) >>>> Receiver's instance variables: >>>> timeStamp: 57402925 >>>> source: a HandMorph(3216) >>>> windowIndex: nil >>>> type: #mouseUp >>>> buttons: 0 >>>> position: 1546@408 >>>> handler: nil >>>> wasHandled: true >>>> whichButton: 4 >>>> >>>> PluggableListMorphPlus(Morph)>>handleEvent: >>>> Receiver: a PluggableListMorphPlus(3968) >>>> Arguments and temporary variables: >>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>> Receiver's instance variables: >>>> bounds: 1481@397 corner: 1792@583 >>>> owner: a PluggableStandardWindow(1639) >>>> submorphs: an Array(a TransformMorph(3663)) >>>> fullBounds: 1481@397 corner: 1792@583 >>>> color: Color white >>>> extension: a MorphExtension (3283) [locked] [other: >>>> (layoutFrame -> a LayoutF...etc... >>>> borderWidth: 1 >>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>> model: a TestRunner >>>> slotName: nil >>>> open: false >>>> scrollBar: a ScrollBar(2643) >>>> scroller: a TransformMorph(3663) >>>> retractableScrollBar: false >>>> scrollBarOnLeft: false >>>> getMenuSelector: #errorMenu: >>>> getMenuTitleSelector: nil >>>> hasFocus: false >>>> hScrollBar: a ScrollBar(2842) >>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>> getListSelector: #errorList >>>> getListSizeSelector: nil >>>> getListElementSelector: nil >>>> getIndexSelector: #errorSelected >>>> setIndexSelector: #errorSelected: >>>> keystrokeActionSelector: nil >>>> autoDeselect: true >>>> lastKeystrokeTime: 0 >>>> lastKeystrokes: '' >>>> doubleClickSelector: nil >>>> handlesBasicKeys: nil >>>> potentialDropRow: nil >>>> listMorph: a LazyListMorph(884) >>>> hScrollRangeCache: nil >>>> dragItemSelector: nil >>>> dropItemSelector: nil >>>> wantsDropSelector: nil >>>> >>>> MorphicEventDispatcher>>dispatchDefault:with: >>>> Receiver: a MorphicEventDispatcher >>>> Arguments and temporary variables: >>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>> aMorph: a PluggableListMorphPlus(3968) >>>> localEvt: [1546@408 mouseUp 57402925 nil] >>>> index: 2 >>>> child: a TransformMorph(3663) >>>> morphs: an Array(a TransformMorph(3663)) >>>> inside: true >>>> Receiver's instance variables: >>>> lastType: #mouseUp >>>> lastDispatch: #dispatchDefault:with: >>>> >>>> MorphicEventDispatcher>>dispatchEvent:with: >>>> Receiver: a MorphicEventDispatcher >>>> Arguments and temporary variables: >>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>> aMorph: a PluggableListMorphPlus(3968) >>>> Receiver's instance variables: >>>> lastType: #mouseUp >>>> lastDispatch: #dispatchDefault:with: >>>> >>>> PluggableListMorphPlus(Morph)>>processEvent:using: >>>> Receiver: a PluggableListMorphPlus(3968) >>>> Arguments and temporary variables: >>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>> defaultDispatcher: a MorphicEventDispatcher >>>> Receiver's instance variables: >>>> bounds: 1481@397 corner: 1792@583 >>>> owner: a PluggableStandardWindow(1639) >>>> submorphs: an Array(a TransformMorph(3663)) >>>> fullBounds: 1481@397 corner: 1792@583 >>>> color: Color white >>>> extension: a MorphExtension (3283) [locked] [other: >>>> (layoutFrame -> a LayoutF...etc... >>>> borderWidth: 1 >>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>> model: a TestRunner >>>> slotName: nil >>>> open: false >>>> scrollBar: a ScrollBar(2643) >>>> scroller: a TransformMorph(3663) >>>> retractableScrollBar: false >>>> scrollBarOnLeft: false >>>> getMenuSelector: #errorMenu: >>>> getMenuTitleSelector: nil >>>> hasFocus: false >>>> hScrollBar: a ScrollBar(2842) >>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>> getListSelector: #errorList >>>> getListSizeSelector: nil >>>> getListElementSelector: nil >>>> getIndexSelector: #errorSelected >>>> setIndexSelector: #errorSelected: >>>> keystrokeActionSelector: nil >>>> autoDeselect: true >>>> lastKeystrokeTime: 0 >>>> lastKeystrokes: '' >>>> doubleClickSelector: nil >>>> handlesBasicKeys: nil >>>> potentialDropRow: nil >>>> listMorph: a LazyListMorph(884) >>>> hScrollRangeCache: nil >>>> dragItemSelector: nil >>>> dropItemSelector: nil >>>> wantsDropSelector: nil >>>> >>>> PluggableListMorphPlus(Morph)>>processEvent: >>>> Receiver: a PluggableListMorphPlus(3968) >>>> Arguments and temporary variables: >>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>> Receiver's instance variables: >>>> bounds: 1481@397 corner: 1792@583 >>>> owner: a PluggableStandardWindow(1639) >>>> submorphs: an Array(a TransformMorph(3663)) >>>> fullBounds: 1481@397 corner: 1792@583 >>>> color: Color white >>>> extension: a MorphExtension (3283) [locked] [other: >>>> (layoutFrame -> a LayoutF...etc... >>>> borderWidth: 1 >>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>> model: a TestRunner >>>> slotName: nil >>>> open: false >>>> scrollBar: a ScrollBar(2643) >>>> scroller: a TransformMorph(3663) >>>> retractableScrollBar: false >>>> scrollBarOnLeft: false >>>> getMenuSelector: #errorMenu: >>>> getMenuTitleSelector: nil >>>> hasFocus: false >>>> hScrollBar: a ScrollBar(2842) >>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>> getListSelector: #errorList >>>> getListSizeSelector: nil >>>> getListElementSelector: nil >>>> getIndexSelector: #errorSelected >>>> setIndexSelector: #errorSelected: >>>> keystrokeActionSelector: nil >>>> autoDeselect: true >>>> lastKeystrokeTime: 0 >>>> lastKeystrokes: '' >>>> doubleClickSelector: nil >>>> handlesBasicKeys: nil >>>> potentialDropRow: nil >>>> listMorph: a LazyListMorph(884) >>>> hScrollRangeCache: nil >>>> dragItemSelector: nil >>>> dropItemSelector: nil >>>> wantsDropSelector: nil >>>> >>>> PluggableListMorphPlus(PluggableListMorph)>>handleFocusEvent: >>>> Receiver: a PluggableListMorphPlus(3968) >>>> Arguments and temporary variables: >>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>> Receiver's instance variables: >>>> bounds: 1481@397 corner: 1792@583 >>>> owner: a PluggableStandardWindow(1639) >>>> submorphs: an Array(a TransformMorph(3663)) >>>> fullBounds: 1481@397 corner: 1792@583 >>>> color: Color white >>>> extension: a MorphExtension (3283) [locked] [other: >>>> (layoutFrame -> a LayoutF...etc... >>>> borderWidth: 1 >>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>> model: a TestRunner >>>> slotName: nil >>>> open: false >>>> scrollBar: a ScrollBar(2643) >>>> scroller: a TransformMorph(3663) >>>> retractableScrollBar: false >>>> scrollBarOnLeft: false >>>> getMenuSelector: #errorMenu: >>>> getMenuTitleSelector: nil >>>> hasFocus: false >>>> hScrollBar: a ScrollBar(2842) >>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>> getListSelector: #errorList >>>> getListSizeSelector: nil >>>> getListElementSelector: nil >>>> getIndexSelector: #errorSelected >>>> setIndexSelector: #errorSelected: >>>> keystrokeActionSelector: nil >>>> autoDeselect: true >>>> lastKeystrokeTime: 0 >>>> lastKeystrokes: '' >>>> doubleClickSelector: nil >>>> handlesBasicKeys: nil >>>> potentialDropRow: nil >>>> listMorph: a LazyListMorph(884) >>>> hScrollRangeCache: nil >>>> dragItemSelector: nil >>>> dropItemSelector: nil >>>> wantsDropSelector: nil >>>> >>>> [] in HandMorph>>sendFocusEvent:to:clear: >>>> Receiver: a HandMorph(3216) >>>> Arguments and temporary variables: >>>> <<error during printing> >>>> Receiver's instance variables: >>>> bounds: 1071@619 corner: 1087@635 >>>> owner: a PasteUpMorph(1622) [world] >>>> submorphs: #() >>>> fullBounds: 1071@619 corner: 1087@635 >>>> color: Color blue >>>> extension: a MorphExtension (539) [eventHandler = an >>>> EventHandler] >>>> mouseFocus: nil >>>> keyboardFocus: nil >>>> eventListeners: nil >>>> mouseListeners: nil >>>> keyboardListeners: nil >>>> mouseClickState: nil >>>> mouseOverHandler: a MouseOverHandler >>>> lastMouseEvent: [1071@619 1071@619 mouseMove 57619819 nil] >>>> targetOffset: 188@12 >>>> damageRecorder: a DamageRecorder >>>> cacheCanvas: nil >>>> cachedCanvasHasHoles: true >>>> temporaryCursor: nil >>>> temporaryCursorOffset: nil >>>> hardwareCursor: nil >>>> hasChanged: true >>>> savedPatch: nil >>>> userInitials: '' >>>> lastEventBuffer: #(1 57619819 1071 619 0 0 0 1) >>>> lastKeyScanCode: 36 >>>> combinedChar: nil >>>> >>>> [] in PasteUpMorph>>becomeActiveDuring: >>>> Receiver: a PasteUpMorph(1622) [world] >>>> Arguments and temporary variables: >>>> <<error during printing> >>>> Receiver's instance variables: >>>> bounds: 0@0 corner: 1920@1178 >>>> owner: nil >>>> submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a >>>> PluggableStanda...etc... >>>> fullBounds: 0@0 corner: 1920@1178 >>>> color: Color gray >>>> extension: a MorphExtension (2543) [eventHandler = an >>>> EventHandler] [other: (...etc... >>>> borderWidth: 0 >>>> borderColor: (Color r: 0.5 g: 0.5 b: 0.5) >>>> presenter: a Presenter (1246) >>>> model: a MorphicModel(1926) >>>> cursor: 1 >>>> padding: 3 >>>> backgroundMorph: nil >>>> isPartsBin: nil >>>> autoLineLayout: false >>>> indicateCursor: nil >>>> resizeToFit: nil >>>> wantsMouseOverHalos: nil >>>> worldState: a WorldState >>>> griddingOn: nil >>>> >>>> BlockClosure>>on:do: >>>> Receiver: [closure] in PasteUpMorph>>becomeActiveDuring: >>>> Arguments and temporary variables: >>>> exception: Error >>>> handlerAction: [closure] in PasteUpMorph>>becomeActiveDuring: >>>> handlerActive: false >>>> Receiver's instance variables: >>>> outerContext: PasteUpMorph>>becomeActiveDuring: >>>> startpc: 67 >>>> numArgs: 0 >>>> >>>> PasteUpMorph>>becomeActiveDuring: >>>> Receiver: a PasteUpMorph(1622) [world] >>>> Arguments and temporary variables: >>>> aBlock: [closure] in HandMorph>>sendFocusEvent:to:clear: >>>> priorWorld: a PasteUpMorph(1622) [world] >>>> priorHand: a HandMorph(3216) >>>> priorEvent: [1546@408 mouseOver red nil nil] >>>> Receiver's instance variables: >>>> bounds: 0@0 corner: 1920@1178 >>>> owner: nil >>>> submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a >>>> PluggableStanda...etc... >>>> fullBounds: 0@0 corner: 1920@1178 >>>> color: Color gray >>>> extension: a MorphExtension (2543) [eventHandler = an >>>> EventHandler] [other: (...etc... >>>> borderWidth: 0 >>>> borderColor: (Color r: 0.5 g: 0.5 b: 0.5) >>>> presenter: a Presenter (1246) >>>> model: a MorphicModel(1926) >>>> cursor: 1 >>>> padding: 3 >>>> backgroundMorph: nil >>>> isPartsBin: nil >>>> autoLineLayout: false >>>> indicateCursor: nil >>>> resizeToFit: nil >>>> wantsMouseOverHalos: nil >>>> worldState: a WorldState >>>> griddingOn: nil >>>> >>>> HandMorph>>sendFocusEvent:to:clear: >>>> Receiver: a HandMorph(3216) >>>> Arguments and temporary variables: >>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>> focusHolder: a PluggableListMorphPlus(3968) >>>> aBlock: [closure] in HandMorph>>sendMouseEvent: >>>> w: a PasteUpMorph(1622) [world] >>>> result: #(nil) >>>> Receiver's instance variables: >>>> bounds: 1071@619 corner: 1087@635 >>>> owner: a PasteUpMorph(1622) [world] >>>> submorphs: #() >>>> fullBounds: 1071@619 corner: 1087@635 >>>> color: Color blue >>>> extension: a MorphExtension (539) [eventHandler = an >>>> EventHandler] >>>> mouseFocus: nil >>>> keyboardFocus: nil >>>> eventListeners: nil >>>> mouseListeners: nil >>>> keyboardListeners: nil >>>> mouseClickState: nil >>>> mouseOverHandler: a MouseOverHandler >>>> lastMouseEvent: [1071@619 1071@619 mouseMove 57619819 nil] >>>> targetOffset: 188@12 >>>> damageRecorder: a DamageRecorder >>>> cacheCanvas: nil >>>> cachedCanvasHasHoles: true >>>> temporaryCursor: nil >>>> temporaryCursorOffset: nil >>>> hardwareCursor: nil >>>> hasChanged: true >>>> savedPatch: nil >>>> userInitials: '' >>>> lastEventBuffer: #(1 57619819 1071 619 0 0 0 1) >>>> lastKeyScanCode: 36 >>>> combinedChar: nil >>>> >>>> >>>> --- The full stack --- >>>> UndefinedObject(Object)>>doesNotUnderstand: #asMiliseconds >>>> [] in [] in >>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>> >>>> DBXPostgresPlatform(DBXPlatform)>>nextResultSet:querySettings:onReturn: >>>> [] in >>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>> BlockClosure>>doWhileTrue: >>>> >>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>> >>>> DBXPostgresPlatform(DBXPlatform)>>executeStatement:on:querySettings: >>>> DBXConnection>>execute:querySettings: >>>> DBXQueryTimeoutTest>>testNoTimeout >>>> DBXQueryTimeoutTest(TestCase)>>performTest >>>> [] in DBXQueryTimeoutTest(TestCase)>>runCase >>>> BlockClosure>>ensure: >>>> DBXQueryTimeoutTest(TestCase)>>runCase >>>> [] in DBXQueryTimeoutTest(TestCase)>>debug >>>> BlockClosure>>ensure: >>>> DBXQueryTimeoutTest(TestCase)>>debug >>>> [] in TestRunner>>debugSuite: >>>> OrderedCollection>>do: >>>> [] in TestRunner>>basicRunSuite:do: >>>> BlockClosure>>ensure: >>>> TestRunner>>basicRunSuite:do: >>>> TestRunner>>debugSuite: >>>> TestRunner>>debug: >>>> TestRunner>>errorSelected: >>>> PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection: >>>> PluggableListMorphPlus(PluggableListMorph)>>mouseUp: >>>> PluggableListMorphPlus(Morph)>>handleMouseUp: >>>> MouseButtonEvent>>sentTo: >>>> PluggableListMorphPlus(Morph)>>handleEvent: >>>> MorphicEventDispatcher>>dispatchDefault:with: >>>> MorphicEventDispatcher>>dispatchEvent:with: >>>> PluggableListMorphPlus(Morph)>>processEvent:using: >>>> PluggableListMorphPlus(Morph)>>processEvent: >>>> PluggableListMorphPlus(PluggableListMorph)>>handleFocusEvent: >>>> [] in HandMorph>>sendFocusEvent:to:clear: >>>> [] in PasteUpMorph>>becomeActiveDuring: >>>> BlockClosure>>on:do: >>>> PasteUpMorph>>becomeActiveDuring: >>>> HandMorph>>sendFocusEvent:to:clear: >>>> - - - - - - - - - - - - - - - >>>> - - - - - - - - - - - - - - - - - - >>>> HandMorph>>sendEvent:focus:clear: >>>> HandMorph>>sendMouseEvent: >>>> HandMorph>>handleEvent: >>>> HandMorph>>processEvents >>>> [] in WorldState>>doOneCycleNowFor: >>>> Array(SequenceableCollection)>>do: >>>> WorldState>>handsDo: >>>> WorldState>>doOneCycleNowFor: >>>> WorldState>>doOneCycleFor: >>>> PasteUpMorph>>doOneCycle >>>> [] in Project class>>spawnNewProcess >>>> [] in BlockClosure>>newProcess >>>> >>>> >>>> On Tue, Sep 29, 2009 at 23:14, Mariano Martinez Peck < >>>> marianopeck@gmail.com> wrote: >>>> >>>>> >>>>> >>>>> On Fri, Sep 25, 2009 at 12:07 PM, John Toohey jt@parspro.comwrote: >>>>> >>>>>> Had to rebuild a new image, changes file full, and Pharo still >>>>>> cannot condense a change file. So, now I have a refresh image with just >>>>>> GlorpDBX installed. Ran the tests and have 94 passed and one failure. The >>>>>> failed test is DBXQueryNoTimeout and the failing method is #testNoTimeOut. >>>>>> The DBXQuerySetting object's timeout property is Nil, and this throws a DNU >>>>>> exception. >>>>>> >>>>> >>>>> John: I am seeing this test but is green for me here in Linux and >>>>> Windows :( >>>>> I mean, I set a nil to the timeout property but I never send a >>>>> message to that object. I just send a null trough FFI. >>>>> >>>>> Can you tell me where does the DNU occur, who DNU a message and >>>>> which message was not understood ? It would be excellent you can send me >>>>> the stacktrace. >>>>> >>>>> Thanks a lot for the testing! >>>>> >>>>> Mariano >>>>> >>>>> >>>>> >>>>>> Going to try to install Seaside now, and hopefully my own app >>>>>> then. >>>>>> >>>>>> >>>>>> On Fri, Sep 25, 2009 at 09:38, Mariano Martinez Peck < >>>>>> marianopeck@gmail.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Fri, Sep 25, 2009 at 12:21 PM, Mariano Martinez Peck < >>>>>>> marianopeck@gmail.com> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Sep 25, 2009 at 12:04 PM, John Toohey <jt@parspro.com >>>>>>>> > wrote: >>>>>>>> >>>>>>>>> I now have a new image with Seaside 3 installed, however when >>>>>>>>> I run the follow :- >>>>>>>>> Installer ss project: 'SqueakDBX'; install: >>>>>>>>> 'SqueakDBXPharoLoader'. >>>>>>>>> SqueakDBXPharoLoader loadGlorpDBX >>>>>>>>> >>>>>>>>> This package depends on the following classes: >>>>>>>>> PGConnection >>>>>>>>> You must resolve these dependencies before you will be able >>>>>>>>> to load these definitions: >>>>>>>>> PGConnection classSide>>buildDefaultFieldConverters >>>>>>>>> PGConnection classSide>>buildStateTransitionTable >>>>>>>>> >>>>>>>>> Do I need to install the Postgres driver before I do this? I >>>>>>>>> thought it was part of the GlorpDBX install. >>>>>>>>> >>>>>>>> >>>>>>>> Yeah, I know :( >>>>>>>> It is difficult to explain but there is some places of Glorp >>>>>>>> which still reference to PGConnection. However, it is not used. Don't worry. >>>>>>>> Do a "proceed" and everything will be ok. >>>>>>>> >>>>>>> >>>>>>> Ok. I found the problem. It's time to restrucutre some packages >>>>>>> about Glorp. >>>>>>> >>>>>>> >>>>>>> >>>>>>>> I will then try to see how to fix this. >>>>>>>> >>>>>>>> what happened to SqueakDBX tests and the amount of >>>>>>>> connections? did it work my commit ? >>>>>>>> >>>>>>>> Here is a summary of the things we did to GLorp and how to run >>>>>>>> GlorpDBX tests: >>>>>>>> >>>>>>>> http://squeakdbx.smallworks.com.ar/GLORP integration >>>>>>>> >>>>>>>> Ok, it was a secret that webpage. It is our own website with >>>>>>>> seaside and pier to replace the swiki :) We will then do the public ANN >>>>>>>> hahaha. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Sep 24, 2009 at 21:16, Mariano Martinez Peck < >>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Sep 24, 2009 at 10:12 PM, John Toohey < >>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>> >>>>>>>>>>> I am running the OpenDBX-Core tests both from the >>>>>>>>>>> TestRunner and the OBPackageBrowser. The tests run successfully until my DB >>>>>>>>>>> runs out of connections. Latest Pharo, and latest GlorpDBX installed. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> John: I have just noticed that a lot of SqueakDBX tests >>>>>>>>>> don't release the DB connections, as you guessed. I have just commit. can >>>>>>>>>> you please test it and let me know ? of course, you must first reboot or >>>>>>>>>> kill all the active connections ;) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> "Name: OpenDBX-Core-Mariano.230 >>>>>>>>>> Author: Mariano >>>>>>>>>> Time: 24 September 2009, 10:15:03 pm >>>>>>>>>> UUID: 19ce8340-3070-4495-a21d-cbe2b63aca0e >>>>>>>>>> Ancestors: OpenDBX-Core-HMC.229 >>>>>>>>>> >>>>>>>>>> There were a lot of SqueakDBX tests that don't release the >>>>>>>>>> connection after testing. So, this can result in a "Too many connections >>>>>>>>>> error". Now, all tests release connections." >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Thu, Sep 24, 2009 at 20:52, Mariano Martinez Peck < >>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Thu, Sep 24, 2009 at 3:13 PM, John Toohey < >>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Okay, I've installed SqueakGlorp into my existing image, >>>>>>>>>>>>> and added the symlink to the VM for openDBX. I can get up to 44 tests to >>>>>>>>>>>>> pass, but it seems that the tests are not releasing their DB connections, so >>>>>>>>>>>>> after a while the rest fail with a "Too many connections error" >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> These tests you are talking about are SqueakDBX tests or >>>>>>>>>>>> Glorp tests when using SqueakDBX as the driver ? >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Is this how it should be for those tests? I am just >>>>>>>>>>>>> selecting the test package and selecting "run tests". >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> I need to know which tests are you running, if >>>>>>>>>>>> OpenDBX-Core-Tests or GlorpTest. Anyway, tests should release connections. >>>>>>>>>>>> If this is not done, so we have a bug in our tests. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, Sep 24, 2009 at 12:24, Mariano Martinez Peck < >>>>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 3:06 PM, John Toohey < >>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> - I've managed to build it on a VMWare VM running >>>>>>>>>>>>>>> Ubunto, and using the --disable-utils switch, I've built it on OSX also. >>>>>>>>>>>>>>> However on both systems when I run the test suite I see this :- >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Excellent news!!! I tell you: there is an utility called >>>>>>>>>>>>>> odbx-sql that let you send queries trough OpenDBX. However, that utility >>>>>>>>>>>>>> requires external libraries which seem to have problems, at least in >>>>>>>>>>>>>> Windows. So, when we compile in Windows, we must disable that utility. But >>>>>>>>>>>>>> remember this is an utility, not OpenDBX core or feature. It is not >>>>>>>>>>>>>> important. I didn't know it has problems also with MacOS, so I will update >>>>>>>>>>>>>> the webpage. Thanks for the testing!!!! >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> `--> ./odbxtest -b pgsql -h localhost -p 5432 -d juliet >>>>>>>>>>>>>>> -u postgres -w postgres >>>>>>>>>>>>>>> ODBX_CAP_BASIC: 1 >>>>>>>>>>>>>>> ODBX_CAP_LO: 0 >>>>>>>>>>>>>>> ODBX_OPT_API_VERSION: 10200 >>>>>>>>>>>>>>> ODBX_OPT_THREAD_SAFE: 1 >>>>>>>>>>>>>>> ODBX_OPT_TLS: 1 >>>>>>>>>>>>>>> ODBX_OPT_CONNECT_TIMEOUT: 1 (using) >>>>>>>>>>>>>>> ODBX_OPT_MULTI_STATEMENTS: 1 (using) >>>>>>>>>>>>>>> ODBX_OPT_PAGED_RESULTS: 0 >>>>>>>>>>>>>>> ODBX_OPT_COMPRESS: 0 >>>>>>>>>>>>>>> ODBX_CAP_BASIC: 1 >>>>>>>>>>>>>>> ODBX_CAP_LO: 0 >>>>>>>>>>>>>>> ODBX_OPT_API_VERSION: 10200 >>>>>>>>>>>>>>> ODBX_OPT_THREAD_SAFE: 1 >>>>>>>>>>>>>>> ODBX_OPT_TLS: 1 >>>>>>>>>>>>>>> ODBX_OPT_CONNECT_TIMEOUT: 1 (using) >>>>>>>>>>>>>>> ODBX_OPT_MULTI_STATEMENTS: 1 (using) >>>>>>>>>>>>>>> ODBX_OPT_PAGED_RESULTS: 0 >>>>>>>>>>>>>>> ODBX_OPT_COMPRESS: 0 >>>>>>>>>>>>>>> WARNING: nonstandard use of \ in a string literal >>>>>>>>>>>>>>> LINE 1: SELECT * FROM odbxtest WHERE col = >>>>>>>>>>>>>>> 'a''''\''b' >>>>>>>>>>>>>>> ^ >>>>>>>>>>>>>>> HINT: Use the escape string syntax for backslashes, >>>>>>>>>>>>>>> e.g., E'\'. >>>>>>>>>>>>>>> Error in odbx_result(): ERROR: relation "odbxtest" >>>>>>>>>>>>>>> does not exist >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Error in odbx_result(): ERROR: relation "odbxtest" >>>>>>>>>>>>>>> does not exist >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Not sure if this means there is a problem with the >>>>>>>>>>>>>>> build (I downloaded to latest one) or a problem with the test suite. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> As you guessed this seems to be a problem with the test >>>>>>>>>>>>>> suit, but the build is seems to be perfect. I will send this part to OpenDBX >>>>>>>>>>>>>> mailing list and see if I receive some help. Thanks for the report. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> In order to continue and install GlorpDBX into my Pharo >>>>>>>>>>>>>>> image, do I need to build a new image, as my current one already has >>>>>>>>>>>>>>> Pharo-Glorp installed. I've never figured out how to uninstall packages in >>>>>>>>>>>>>>> Smalltalk. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yeah. Me neither :( >>>>>>>>>>>>>> >>>>>>>>>>>>>> But, what you can do is install just SqueakDBX in that >>>>>>>>>>>>>> image and run the SqueakDBX tests, using PostgreSQL to see if everything is >>>>>>>>>>>>>> ok. You should have all green tests. If you get this, I would really >>>>>>>>>>>>>> appreciate if you can make a binary for MacOS :) >>>>>>>>>>>>>> >>>>>>>>>>>>>> Then, you can take a new image and install GlorpDBX as >>>>>>>>>>>>>> explained in the wiki. Most of the tests should be green. I say "most" >>>>>>>>>>>>>> because there are some that fails because of what I told you that we don't >>>>>>>>>>>>>> support large database fields. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Best, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 11:15, Mariano Martinez Peck < >>>>>>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 1:59 PM, John Toohey < >>>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I'm currently trying to build openDBX on OSX. I've >>>>>>>>>>>>>>>>> finally found the postgres client libs and include files, and I've run >>>>>>>>>>>>>>>>> ./configure -with-backends="pgsql", but when I run make I get this error :- >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Excellent you are giving SqueakDBX at least a try. The >>>>>>>>>>>>>>>> real thing is this: The squeakDBX team is composed by 4 people. Only one has >>>>>>>>>>>>>>>> a Mac and he is very busy with his work. I have ALL databases working on >>>>>>>>>>>>>>>> Linux and Windows. And I have also prepared binaries for that because I can >>>>>>>>>>>>>>>> (dlls, .deb and .rpm). But I cannot do it with Mac because I don't have a >>>>>>>>>>>>>>>> mac and I don't know how binaries work on Mac. If you make it work, I would >>>>>>>>>>>>>>>> really love you help me generating the binaries so that I can update them to >>>>>>>>>>>>>>>> OpenDBX website. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Which OpenDBX version are you trying to compile? You >>>>>>>>>>>>>>>> should try 1.4.3. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Can you try configuring this way please ? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> ./configure --disable-utils --with-backends="pgsql" >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> If it works, I then explain you why that :) >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Making all in po >>>>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-argmap.o -MD -MP -MF >>>>>>>>>>>>>>>>> .deps/odbx_sql-argmap.Tpo -c -o odbx_sql-argmap.o `test -f 'argmap.cpp' || >>>>>>>>>>>>>>>>> echo './'`argmap.cpp >>>>>>>>>>>>>>>>> mv -f .deps/odbx_sql-argmap.Tpo >>>>>>>>>>>>>>>>> .deps/odbx_sql-argmap.Po >>>>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-commands.o -MD -MP >>>>>>>>>>>>>>>>> -MF .deps/odbx_sql-commands.Tpo -c -o odbx_sql-commands.o `test -f >>>>>>>>>>>>>>>>> 'commands.cpp' || echo './'`commands.cpp >>>>>>>>>>>>>>>>> mv -f .deps/odbx_sql-commands.Tpo >>>>>>>>>>>>>>>>> .deps/odbx_sql-commands.Po >>>>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-completion.o -MD -MP >>>>>>>>>>>>>>>>> -MF .deps/odbx_sql-completion.Tpo -c -o odbx_sql-completion.o `test -f >>>>>>>>>>>>>>>>> 'completion.cpp' || echo './'`completion.cpp >>>>>>>>>>>>>>>>> mv -f .deps/odbx_sql-completion.Tpo >>>>>>>>>>>>>>>>> .deps/odbx_sql-completion.Po >>>>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-odbx-sql.o -MD -MP >>>>>>>>>>>>>>>>> -MF .deps/odbx_sql-odbx-sql.Tpo -c -o odbx_sql-odbx-sql.o `test -f >>>>>>>>>>>>>>>>> 'odbx-sql.cpp' || echo './'`odbx-sql.cpp >>>>>>>>>>>>>>>>> odbx-sql.cpp: In function 'int main(int, char**)': >>>>>>>>>>>>>>>>> odbx-sql.cpp:228: error: invalid conversion from >>>>>>>>>>>>>>>>> 'char* (*)(const char*, int)' to 'int (*)(const char*, int)' >>>>>>>>>>>>>>>>> make[3]: *** [odbx_sql-odbx-sql.o] Error 1 >>>>>>>>>>>>>>>>> make[2]: *** [all-recursive] Error 1 >>>>>>>>>>>>>>>>> make[1]: *** [all-recursive] Error 1 >>>>>>>>>>>>>>>>> make: *** [all] Error 2 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Do you know of any pre-built binaries that will work >>>>>>>>>>>>>>>>> on OSX? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I don't know, but I would love to have them!!! >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 23:09, Mariano Martinez Peck >>>>>>>>>>>>>>>>> marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 11:27 PM, John Toohey < >>>>>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Hey, >>>>>>>>>>>>>>>>>>> Thanks for looking into this for me. I'm just using >>>>>>>>>>>>>>>>>>> Pharo as my app is using the beta of Seaside 3.0. I'm going to do as you >>>>>>>>>>>>>>>>>>> suggested and put some debug statements in PGConnection, and see where that >>>>>>>>>>>>>>>>>>> leads. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Ok, let us know what the problem was if you find it >>>>>>>>>>>>>>>>>> :) >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Is it a lot of changes from me to switch to DBX on >>>>>>>>>>>>>>>>>>> Pharo? >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> No. Your application shouldn't have any changes. You >>>>>>>>>>>>>>>>>> application will use just Glorp. But in this case Glorp won't use the native >>>>>>>>>>>>>>>>>> PostgreSQL driver, but SqueakDBX with PostgreSQL. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I assume there are no changes in my Glorp code, but >>>>>>>>>>>>>>>>>>> what else do I need to do. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> The only thing you must do is: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> - Install the PostgreSQL client library (if you >>>>>>>>>>>>>>>>>> don't have it already installed). >>>>>>>>>>>>>>>>>> - Compile or Install (if you are in Linux you can >>>>>>>>>>>>>>>>>> use the .rpm or .deb) OpenDBX with PostgreSQL, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> You can read how to do it here: >>>>>>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6129 >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> You must do it only once. Once this is done, >>>>>>>>>>>>>>>>>> everything is easy and you can take advantage of all the SqueakDBX features >>>>>>>>>>>>>>>>>> (http://wiki.squeak.org/squeak/6106). OpenDBX works >>>>>>>>>>>>>>>>>> perfect with PostgreSQL in Linux, Mac and Windows. We have also have >>>>>>>>>>>>>>>>>> GlorpDBX working with SqueakDBX and PostgreSQL and it is very easy to >>>>>>>>>>>>>>>>>> install: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6130 (where it >>>>>>>>>>>>>>>>>> says GlorpDBX). >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> The only limitation we have right now is that we >>>>>>>>>>>>>>>>>> don't support large objects (blob, clob, etc) yet. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> If you try it and have any problem, please, let us >>>>>>>>>>>>>>>>>> know!!! >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I develop on OSX and deploy to Linux for >>>>>>>>>>>>>>>>>>> production. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> No problem. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 21:03, Mariano Martinez >>>>>>>>>>>>>>>>>>> Peck marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> I was thinking if you have the problem in Squeak >>>>>>>>>>>>>>>>>>>> also or just Pharo ? >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:12 PM, Mariano Martinez >>>>>>>>>>>>>>>>>>>> Peck marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:25 PM, John Toohey < >>>>>>>>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Hi John! This list is SqueakDBX related, so >>>>>>>>>>>>>>>>>>>>> perhaps I am not the best one to help you. I just make Glorp and PostgreSQL >>>>>>>>>>>>>>>>>>>>> native driver to work on Pharo. Actually, the only thing I did is to have >>>>>>>>>>>>>>>>>>>>> all green tests. No more than that. I don't have a Glorp + native postgresql >>>>>>>>>>>>>>>>>>>>> driver application. Anyway, I will try to help you ;) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> My app frequently losses the connection the >>>>>>>>>>>>>>>>>>>>>> Postgres, and throws a "Connection not Valid" exception. Unfortunately on >>>>>>>>>>>>>>>>>>>>>> the latest Pharo images, there is a bug that causes this to write the stack >>>>>>>>>>>>>>>>>>>>>> trace to disk, and then the image locks up. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> you meat there is a Pharo bug that when there is >>>>>>>>>>>>>>>>>>>>> a walkback and the stacktrace is written to disk, it freezes the image ? is >>>>>>>>>>>>>>>>>>>>> there a bug report of that ? Could you reproduce that ? >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> I think the socket on the PGConnection class is >>>>>>>>>>>>>>>>>>>>>> being closed or times out, and I need to know is there someway that I can >>>>>>>>>>>>>>>>>>>>>> debug this or if its a know issue. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Yes, that's probably the case. I can see in code >>>>>>>>>>>>>>>>>>>>> that the error 'Connection not valid' when the connection is not connected >>>>>>>>>>>>>>>>>>>>> or if it is nil. If you see your stacktrace, you can see that the socket >>>>>>>>>>>>>>>>>>>>> variable is nil. That's why the error. Now, the question is why the socket >>>>>>>>>>>>>>>>>>>>> is nil ? >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> I looked for the code to see where can be the >>>>>>>>>>>>>>>>>>>>> socket set to nil, and I found some places: PGConnection stTerminalError: >>>>>>>>>>>>>>>>>>>>> , stTerminated >>>>>>>>>>>>>>>>>>>>> Perhaps you can put a "self halt" in those >>>>>>>>>>>>>>>>>>>>> methods and then debug them. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> The PGConnection seems to do a lot of "self log: >>>>>>>>>>>>>>>>>>>>> 'XXXX'". So, perhaps you can have a Transcript opened to see that. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Finally, why don't you give a try to GlorpDBX + >>>>>>>>>>>>>>>>>>>>> SqueakDBX ? It works pretty well and has good performance. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> I hope this helps. Remember I am not a native >>>>>>>>>>>>>>>>>>>>> postgresql driver guru. Perhaps you can ask also in squeak-dev or pharo >>>>>>>>>>>>>>>>>>>>> mailing lists. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> I am using the latest Pharo image, with the >>>>>>>>>>>>>>>>>>>>>> latest Pharo-Glorp package, and the newest Postgres driver. I think this is >>>>>>>>>>>>>>>>>>>>>> the relevant part of the stack trace :- >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> PGConnection(Object)>>error: >>>>>>>>>>>>>>>>>>>>>> Receiver: a PGConnection >>>>>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>>>>> aString: 'Connection not valid' >>>>>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>>>>> trace: 0 >>>>>>>>>>>>>>>>>>>>>> state: #Terminated >>>>>>>>>>>>>>>>>>>>>> events: an OrderedCollection() >>>>>>>>>>>>>>>>>>>>>> socket: nil >>>>>>>>>>>>>>>>>>>>>> readBuffer: 'PblankT id ��name �$password >>>>>>>>>>>>>>>>>>>>>> �6client...etc... >>>>>>>>>>>>>>>>>>>>>> readIndex: 384 >>>>>>>>>>>>>>>>>>>>>> lastReadIndex: 384 >>>>>>>>>>>>>>>>>>>>>> writeBuffer: nil >>>>>>>>>>>>>>>>>>>>>> processId: 28132 >>>>>>>>>>>>>>>>>>>>>> secretKey: 1795051851 >>>>>>>>>>>>>>>>>>>>>> sql: 'SELECT t1.id, t1.name, t1.password, >>>>>>>>>>>>>>>>>>>>>> t1.client, t1.role, t1.mobile, t1.ema...etc... >>>>>>>>>>>>>>>>>>>>>> functionCallOid: nil >>>>>>>>>>>>>>>>>>>>>> functionCallArgs: nil >>>>>>>>>>>>>>>>>>>>>> copyStream: nil >>>>>>>>>>>>>>>>>>>>>> result: a PGResult >>>>>>>>>>>>>>>>>>>>>> connectionArgs: a PGConnectionArgs >>>>>>>>>>>>>>>>>>>>>> notificationSubscribers: nil >>>>>>>>>>>>>>>>>>>>>> fieldConverters: an >>>>>>>>>>>>>>>>>>>>>> IdentityDictionary(16->[closure] in PGConnection class>>boo...etc... >>>>>>>>>>>>>>>>>>>>>> sqlStringConverter: [closure] in >>>>>>>>>>>>>>>>>>>>>> PGConnection>>clientEncoding: >>>>>>>>>>>>>>>>>>>>>> receivingTextConverter: an UTF8TextConverter >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> PGConnection>>execute: >>>>>>>>>>>>>>>>>>>>>> Receiver: a PGConnection >>>>>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>>>>> sqlString: 'SELECT t1.id, t1.typename, >>>>>>>>>>>>>>>>>>>>>> t1.description, t1.selectioncount, t1.pr...etc... >>>>>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>>>>> trace: 0 >>>>>>>>>>>>>>>>>>>>>> state: #Terminated >>>>>>>>>>>>>>>>>>>>>> events: an OrderedCollection() >>>>>>>>>>>>>>>>>>>>>> socket: nil >>>>>>>>>>>>>>>>>>>>>> readBuffer: 'PblankT id ��name �$password >>>>>>>>>>>>>>>>>>>>>> �6client...etc... >>>>>>>>>>>>>>>>>>>>>> readIndex: 384 >>>>>>>>>>>>>>>>>>>>>> lastReadIndex: 384 >>>>>>>>>>>>>>>>>>>>>> writeBuffer: nil >>>>>>>>>>>>>>>>>>>>>> processId: 28132 >>>>>>>>>>>>>>>>>>>>>> secretKey: 1795051851 >>>>>>>>>>>>>>>>>>>>>> sql: 'SELECT t1.id, t1.name, t1.password, >>>>>>>>>>>>>>>>>>>>>> t1.client, t1.role, t1.mobile, t1.ema...etc... >>>>>>>>>>>>>>>>>>>>>> functionCallOid: nil >>>>>>>>>>>>>>>>>>>>>> functionCallArgs: nil >>>>>>>>>>>>>>>>>>>>>> copyStream: nil >>>>>>>>>>>>>>>>>>>>>> result: a PGResult >>>>>>>>>>>>>>>>>>>>>> connectionArgs: a PGConnectionArgs >>>>>>>>>>>>>>>>>>>>>> notificationSubscribers: nil >>>>>>>>>>>>>>>>>>>>>> fieldConverters: an >>>>>>>>>>>>>>>>>>>>>> IdentityDictionary(16->[closure] in PGConnection class>>boo...etc... >>>>>>>>>>>>>>>>>>>>>> sqlStringConverter: [closure] in >>>>>>>>>>>>>>>>>>>>>> PGConnection>>clientEncoding: >>>>>>>>>>>>>>>>>>>>>> receivingTextConverter: an UTF8TextConverter >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> SqueakDatabaseAccessor>>basicExecuteSQLString: >>>>>>>>>>>>>>>>>>>>>> Receiver: a SqueakDatabaseAccessor >>>>>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>>>>> aString: 'SELECT t1.id, t1.typename, >>>>>>>>>>>>>>>>>>>>>> t1.description, t1.selectioncount, t1.prio...etc... >>>>>>>>>>>>>>>>>>>>>> result: nil >>>>>>>>>>>>>>>>>>>>>> rowCollection: nil >>>>>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>>>>> connection: a PGConnection >>>>>>>>>>>>>>>>>>>>>> currentLogin: a Login(a PostgreSQLPlatform, >>>>>>>>>>>>>>>>>>>>>> 'postgres', '847129', 'localhost_ju...etc... >>>>>>>>>>>>>>>>>>>>>> logging: true >>>>>>>>>>>>>>>>>>>>>> reusePreparedStatements: nil >>>>>>>>>>>>>>>>>>>>>> deniedCommands: nil >>>>>>>>>>>>>>>>>>>>>> mutex: a Semaphore() >>>>>>>>>>>>>>>>>>>>>> dependents: nil >>>>>>>>>>>>>>>>>>>>>> isInTransaction: false >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Any help would be appreciated, as this is >>>>>>>>>>>>>>>>>>>>>> stopping me from going to a Beta test at the moment. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>>>>>> SqueakDBX mailing list >>>>>>>>>>>>>>>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> -JT >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> SqueakDBX mailing list >>>>>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>>>>> >>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> -JT >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> SqueakDBX mailing list >>>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> -JT >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> SqueakDBX mailing list >>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> -JT >>>>>> >>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> -JT >>>> >>>> >>>> >>> >> >> >> -- >> -JT >> >> >> >
-- -JT
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
-- -JT
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
-- -JT
On Sun, Oct 4, 2009 at 5:39 PM, John Toohey jt@parspro.com wrote:
Just built a new image with the native driver installed, instead of the DBX one. Results are the same, so its something in my code. I'll keep debugging and let you know how I progress.
I imagined that. That's why asked. If I were you I would send and email to glorp mailing list: glorp-group@googlegroups.com Alan is kind and helpful.
Let me know the progress.
Best
Mariano
On Sun, Oct 4, 2009 at 11:22, John Toohey jt@parspro.com wrote:
Yes, it was working fine with Glorp + the native driver. This is the Glorp debug :-Begin Transaction select nextval('TOURNAMENTMARKETS_id_SEQ') from pg_attribute limit 1 INSERT INTO TOURNAMENTS (bookmaker,event,name,status,fee,prizewin,prizeplace,payout,buyin,opentime,closetime,tournamenttype,maxpunters,odds,favourite,version) VALUES (1,1,'T-XY','Unpublished',5,0,0,100,false,'2009-10-04 12:00:00','2009-10-04 12:00:00','Pari-Mutual',100,NULL,NULL,1)10:46:02 am - GlorpDatabaseWriteError: RECOVERABLE OpenDBX: ERROR: null value in column "id" violates not-null constraint Rollback Transaction
The nextval function is being passed the wrong sequence table name, it should be TOURNAMENT_id_SEQ. This is the save code :-
status ifTrue:[ markets := nil. [ self session dataStore commit: [self session dataStore register: tournament]. self session dataStore refresh: tournament ]ifError:[ :error | JulietLogger log: error. status := false. self halt] ].
And this is the table descriptor :-
tableForTOURNAMENTS: aTable |bookieId oddsTableId eventId|
(aTable createFieldNamed: #id type: platform sequence) bePrimaryKey. bookieId := aTable createFieldNamed: #bookmaker type: platform int4. oddsTableId := aTable createFieldNamed: #oddstable type: platform
int4. eventId := aTable createFieldNamed: #event type: platform int4.
aTable createFieldNamed: #name type: (platform varchar: 32); createFieldNamed: #status type: (platform varchar: 32); createFieldNamed: #fee type: (platform integer); createFieldNamed: #prizewin type: (platform integer); createFieldNamed: #prizeplace type: (platform integer); createFieldNamed: #payout type: (platform integer); createFieldNamed: #buyin type: (platform boolean); createFieldNamed: #opentime type: (platform timestamp); createFieldNamed: #closetime type: (platform timestamp); createFieldNamed: #tournamenttype type: (platform varchar: 32); createFieldNamed: #maxpunters type: (platform integer); createFieldNamed: #odds type: (platform integer); createFieldNamed: #favourite type: (platform varchar: 4); createFieldNamed: #version type: (platform versionFieldFor: platform int4); addForeignKeyFrom: bookieId to: ((self tableNamed: #BOOKMAKERS) fieldNamed: 'id'); addForeignKeyFrom: eventId to: ((self tableNamed: #EVENTS) fieldNamed: 'id'); addForeignKeyFrom: oddsTableId to: ((self tableNamed: #ODDSTABLES) fieldNamed: 'id'). (aTable fieldNamed: 'version') beLockKey
Its very strange, as it only seems to be this table that is causing the problem.
On Sat, Oct 3, 2009 at 19:05, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
On Sat, Oct 3, 2009 at 1:39 PM, John Toohey jt@parspro.com wrote:
Okay, I think now I know what is going on. In my Seaside app, I allow the user to logout, and this method disconnects from the DB, and expires the Seaside session. I also have an expiration timeout set on the session. I think that Seaside is sending me a #unregistered message, after I have logged back in, and this method is calling #disconnect. I have removed some of the session handling code, and things are working a lot better now.
Excellent! Good research :)
However, I have know noticed something that was working fine with Glorp, and seems broken now.
when was woring? when you used Glorp + PostgreSQL native driver ? or before doing the changes you said about the seaside session ?
One of my classes that inserts new records in the DB is missing the id (sequence, pk) field. I can see from the GlorpDBX debug, that a call is made to Postgres for the next sequence number, but the insert statement is missing the id field. Here is the trace messages :-
odbx_query: called with values: handle = 380908736 query = select nextval('TOURNAMENTMARKETS_id_SEQ') from pg_attribute limit 1 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 3 odbx_result resultSet handle returned: 381100928 odbx_column_count: called with values: resultSet handle = 381100928 odbx_row_fetch: called with values: resultSet handle = 381100928 odbx_row_fetch call returned 1 odbx_row_fetch: called with values: resultSet handle = 381100928 odbx_row_fetch call returned 0 odbx_result_finish: called with values: resultSet handle = 381100928 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 0 odbx_result resultSet handle returned: 0 odbx_query: called with values: handle = 380908736 query = INSERT INTO TOURNAMENTS (bookmaker,event,name,status,fee,prizewin,prizeplace,payout,buyin,opentime,closetime,tournamenttype,maxpunters,odds,favourite,version) VALUES (1,1,'Tourney-A1','Unpublished',5,0,0,76,false,'2009-10-03 12:00:00','2009-10-03 12:00:00','Pari-Mutual',90,NULL,NULL,1) odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: -1 odbx_result: called with values: handle = 380908736 chunk = 0 odbx_result call return: 0 odbx_result resultSet handle returned: 0 12:27:22 pm - GlorpDatabaseWriteError: RECOVERABLE OpenDBX: ERROR: null value in column "id" violates not-null constraint
This is weird. The query select nextval('TOURNAMENTMARKETS_id_SEQ') from pg_attribute limit 1 works perfect using SqueakDBX (I have just tested it).
Now I wonder why Glorp didn't put the id in the query...do you know if this was working when you were using Glorp + PostgreSQL native driver ? Just to see where the cause of the problem can be. Perhaps it is a GLorp related problem that we should ask in Glorp mailing list.
Do you know that there is also (I think) some debug to enable in Glorp ? because what you send us is the SqueakDBX driver log, not Glorp.
Can you send us the mappings for the class/table TOURNAMENTS ?
which is the message you are sending to Glorp so that it generates the insert ?
Best,
Mariano
On Thu, Oct 1, 2009 at 15:33, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
I fordward the email to the list.
On Thu, Oct 1, 2009 at 4:05 PM, John Toohey jt@parspro.com wrote:
Hey,Haven't loaded the latest yet, as I'm still debugging my connection timeout issue.
Ok, let's go step by step :)
No closer to the cause, but I have a better idea of what is happening now. In all my methods in my DB class, I call a method to get the glorpSession. In this method, I have a check to see if I am still logged in, and break if I am not. Now I see that, as I lazily initialize objects that are referred by foreign keys, the Glorp Proxy will make a DB call on my behalf, whenever I reference one of these objects. The Proxy calls #basicExecuteSQLString in the DataAccessor, and that calls #execute in DBXConnection. That is where the code check if the connection is open, and fails there.
Do you have any suggestions about how I can hook into that, and perhaps try to re-connect on that error?
Great progress!!! I am glad at least that our error handling is working properly ;)
The thing is that any thing you do, is a kind of hack. For example, I cannot reopen a connection in SqueakDBX in that case. Perhaps that change should be done in Glorp?
A hack could be to reopen the connection in #basicExecuteSQLString when that errors happen. Remember you already have a reOpen method in DBXConnection. I can add a reConnect if necessary. They good this that this is very easy, as you don't need to send the querySettings again as the connection already has it as an instance variable :)
Anyway, I don't understand something. The same connection was perfect some time ago it fails, Ok ? so...if it then disconnect or close, who closes that ? the GC? you ? glorp ? We don't handle timeouts or something like that and close the connection.
Cheers,
Mariano
On Wed, Sep 30, 2009 at 11:34, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
> Of course it would be excellent if you can run all tests not only the > one with the problem so that to be sure I didn't break something else ;) > > cheers, > > mariano > > On Wed, Sep 30, 2009 at 12:16 PM, Mariano Martinez Peck < > marianopeck@gmail.com> wrote: > >> Done: >> >> Name: OpenDBX-Core-MarianoMartinezPeck.231 >> Author: MarianoMartinezPeck >> Time: 30 September 2009, 12:14:49 pm >> UUID: 780ee5d8-3d5f-0e46-b3c0-d22ca512b498 >> Ancestors: OpenDBX-Core-Mariano.230 >> >> Fix to possible bug. Now DBXPlatform uses the timeout of the >> QuerySetttings instead of the default. >> >> >> Just download that version from monticello. >> >> However, here at work I only have Sqlite3. So, I should test with >> all backend in Linux and Windows tonight at home. >> >> Tell me if it works. >> >> Best >> >> Mariano >> >> >> On Wed, Sep 30, 2009 at 11:23 AM, John Toohey jt@parspro.comwrote: >> >>> Good, let me know when there is an update, and how to install it, >>> and I can test again. >>> >>> On Wed, Sep 30, 2009 at 09:37, Mariano Martinez Peck < >>> marianopeck@gmail.com> wrote: >>> >>>> Thanks John. I think you found a bug ;) The weird thing is that >>>> I cannot reproduce it here. Perhaps it is because of the client library for >>>> Mac. It's the only difference I see. >>>> >>>> Tonight I will test the fix I have just did and if everything is >>>> ok I will commit it. >>>> >>>> Thank you very much. >>>> >>>> On Wed, Sep 30, 2009 at 10:02 AM, John Toohey jt@parspro.comwrote: >>>> >>>>> This is the full stack :- >>>>> UndefinedObject(Object)>>doesNotUnderstand: #asMiliseconds >>>>> Receiver: nil >>>>> Arguments and temporary variables: >>>>> aMessage: asMiliseconds >>>>> exception: MessageNotUnderstood: receiver of "asMiliseconds" is >>>>> nil >>>>> resumeValue: nil >>>>> Receiver's instance variables: >>>>> nil >>>>> >>>>> [] in [] in >>>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>>> Receiver: a DBXPostgresPlatform >>>>> Arguments and temporary variables: >>>>> aConnection: 0 >>>>> aQuerySettings: 1 >>>>> returnCode: a DBXConnection >>>>> handle: a DBXQuerySettings >>>>> code: #(1) >>>>> Receiver's instance variables: >>>>> a DBXPostgresPlatform >>>>> >>>>> >>>>> DBXPostgresPlatform(DBXPlatform)>>nextResultSet:querySettings:onReturn: >>>>> Receiver: a DBXPostgresPlatform >>>>> Arguments and temporary variables: >>>>> aConnection: a DBXConnection >>>>> aQuerySettings: a DBXQuerySettings >>>>> aBlock: [closure] in [] in >>>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultS...etc... >>>>> handle: 0 >>>>> err: 1 >>>>> handleArray: a WordArray(0) >>>>> Receiver's instance variables: >>>>> a DBXPostgresPlatform >>>>> >>>>> [] in >>>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>>> Receiver: a DBXPostgresPlatform >>>>> Arguments and temporary variables: >>>>> aConnection: a DBXConnection >>>>> aQuerySettings: a DBXQuerySettings >>>>> returnCode: #(1) >>>>> Receiver's instance variables: >>>>> a DBXPostgresPlatform >>>>> >>>>> BlockClosure>>doWhileTrue: >>>>> Receiver: [closure] in >>>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>>> Arguments and temporary variables: >>>>> conditionBlock: [closure] in >>>>> DBXPostgresPlatform(DBXPlatform)>>processNextResul...etc... >>>>> result: nil >>>>> Receiver's instance variables: >>>>> outerContext: >>>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySetti...etc... >>>>> startpc: 91 >>>>> numArgs: 0 >>>>> >>>>> >>>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>>> Receiver: a DBXPostgresPlatform >>>>> Arguments and temporary variables: >>>>> aConnection: a DBXConnection >>>>> aQuerySettings: a DBXQuerySettings >>>>> returnCode: #(1) >>>>> Receiver's instance variables: >>>>> a DBXPostgresPlatform >>>>> >>>>> >>>>> DBXPostgresPlatform(DBXPlatform)>>executeStatement:on:querySettings: >>>>> Receiver: a DBXPostgresPlatform >>>>> Arguments and temporary variables: >>>>> aString: 'select * from student' >>>>> aConnection: a DBXConnection >>>>> aQuerySettings: a DBXQuerySettings >>>>> err: 0 >>>>> result: nil >>>>> Receiver's instance variables: >>>>> a DBXPostgresPlatform >>>>> >>>>> DBXConnection>>execute:querySettings: >>>>> Receiver: a DBXConnection >>>>> Arguments and temporary variables: >>>>> aString: 'select * from student' >>>>> aQuerySettings: a DBXQuerySettings >>>>> aResult: nil >>>>> Receiver's instance variables: >>>>> platform: a DBXPostgresPlatform >>>>> settings: a DBXConnectionSettings >>>>> handle: 3118944 >>>>> open: a ValueHolder >>>>> connected: a ValueHolder >>>>> result: nil >>>>> >>>>> DBXQueryTimeoutTest>>testNoTimeout >>>>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>>>> Arguments and temporary variables: >>>>> conn: a DBXConnection >>>>> aQuerySettings: a DBXQuerySettings >>>>> rows: 5000 >>>>> Receiver's instance variables: >>>>> testSelector: #testNoTimeout >>>>> facility: a DBXPostgreFacility >>>>> connection: a DBXConnection >>>>> >>>>> DBXQueryTimeoutTest(TestCase)>>performTest >>>>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>>>> Arguments and temporary variables: >>>>> >>>>> Receiver's instance variables: >>>>> testSelector: #testNoTimeout >>>>> facility: a DBXPostgreFacility >>>>> connection: a DBXConnection >>>>> >>>>> [] in DBXQueryTimeoutTest(TestCase)>>runCase >>>>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>>>> Arguments and temporary variables: >>>>> >>>>> Receiver's instance variables: >>>>> testSelector: #testNoTimeout >>>>> facility: a DBXPostgreFacility >>>>> connection: a DBXConnection >>>>> >>>>> BlockClosure>>ensure: >>>>> Receiver: [closure] in DBXQueryTimeoutTest(TestCase)>>runCase >>>>> Arguments and temporary variables: >>>>> aBlock: [closure] in DBXQueryTimeoutTest(TestCase)>>runCase >>>>> returnValue: nil >>>>> b: nil >>>>> Receiver's instance variables: >>>>> outerContext: DBXQueryTimeoutTest(TestCase)>>runCase >>>>> startpc: 33 >>>>> numArgs: 0 >>>>> >>>>> DBXQueryTimeoutTest(TestCase)>>runCase >>>>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>>>> Arguments and temporary variables: >>>>> >>>>> Receiver's instance variables: >>>>> testSelector: #testNoTimeout >>>>> facility: a DBXPostgreFacility >>>>> connection: a DBXConnection >>>>> >>>>> [] in DBXQueryTimeoutTest(TestCase)>>debug >>>>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>>>> Arguments and temporary variables: >>>>> >>>>> Receiver's instance variables: >>>>> testSelector: #testNoTimeout >>>>> facility: a DBXPostgreFacility >>>>> connection: nil >>>>> >>>>> BlockClosure>>ensure: >>>>> Receiver: [closure] in DBXQueryTimeoutTest(TestCase)>>debug >>>>> Arguments and temporary variables: >>>>> aBlock: [closure] in DBXQueryTimeoutTest(TestCase)>>debug >>>>> returnValue: nil >>>>> b: nil >>>>> Receiver's instance variables: >>>>> outerContext: DBXQueryTimeoutTest(TestCase)>>debug >>>>> startpc: 62 >>>>> numArgs: 0 >>>>> >>>>> DBXQueryTimeoutTest(TestCase)>>debug >>>>> Receiver: DBXQueryTimeoutTest>>#testNoTimeout >>>>> Arguments and temporary variables: >>>>> >>>>> Receiver's instance variables: >>>>> testSelector: #testNoTimeout >>>>> facility: a DBXPostgreFacility >>>>> connection: nil >>>>> >>>>> [] in TestRunner>>debugSuite: >>>>> Receiver: a TestRunner >>>>> Arguments and temporary variables: >>>>> <<error during printing> >>>>> Receiver's instance variables: >>>>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>>>> #'AutomaticMetho...etc... >>>>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>>>> #'OpenDBX-Core-Tests' #'...etc... >>>>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>>>> DBXConnectionTest . DBXDescri...etc... >>>>> classIndex: 0 >>>>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>>>> failedList: #() >>>>> failedSelected: nil >>>>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>>>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>>>> lastUpdate: 3431753837 >>>>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>>>> errors, 0 unexpecte...etc... >>>>> previousRun: nil >>>>> >>>>> OrderedCollection>>do: >>>>> Receiver: an >>>>> OrderedCollection(DBXQueryTimeoutTest>>#testNoTimeout) >>>>> Arguments and temporary variables: >>>>> aBlock: [closure] in TestRunner>>debugSuite: >>>>> index: 3 >>>>> Receiver's instance variables: >>>>> array: an Array(nil nil DBXQueryTimeoutTest>>#testNoTimeout nil >>>>> nil nil nil nil...etc... >>>>> firstIndex: 3 >>>>> lastIndex: 3 >>>>> >>>>> [] in TestRunner>>basicRunSuite:do: >>>>> Receiver: a TestRunner >>>>> Arguments and temporary variables: >>>>> aTestSuite: a TestSuite >>>>> aBlock: [closure] in TestRunner>>debugSuite: >>>>> Receiver's instance variables: >>>>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>>>> #'AutomaticMetho...etc... >>>>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>>>> #'OpenDBX-Core-Tests' #'...etc... >>>>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>>>> DBXConnectionTest . DBXDescri...etc... >>>>> classIndex: 0 >>>>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>>>> failedList: #() >>>>> failedSelected: nil >>>>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>>>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>>>> lastUpdate: 3431753837 >>>>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>>>> errors, 0 unexpecte...etc... >>>>> previousRun: nil >>>>> >>>>> BlockClosure>>ensure: >>>>> Receiver: [closure] in TestRunner>>basicRunSuite:do: >>>>> Arguments and temporary variables: >>>>> aBlock: [closure] in TestRunner>>basicRunSuite:do: >>>>> returnValue: nil >>>>> b: nil >>>>> Receiver's instance variables: >>>>> outerContext: TestRunner>>basicRunSuite:do: >>>>> startpc: 51 >>>>> numArgs: 0 >>>>> >>>>> TestRunner>>basicRunSuite:do: >>>>> Receiver: a TestRunner >>>>> Arguments and temporary variables: >>>>> aTestSuite: a TestSuite >>>>> aBlock: [closure] in TestRunner>>debugSuite: >>>>> Receiver's instance variables: >>>>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>>>> #'AutomaticMetho...etc... >>>>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>>>> #'OpenDBX-Core-Tests' #'...etc... >>>>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>>>> DBXConnectionTest . DBXDescri...etc... >>>>> classIndex: 0 >>>>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>>>> failedList: #() >>>>> failedSelected: nil >>>>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>>>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>>>> lastUpdate: 3431753837 >>>>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>>>> errors, 0 unexpecte...etc... >>>>> previousRun: nil >>>>> >>>>> TestRunner>>debugSuite: >>>>> Receiver: a TestRunner >>>>> Arguments and temporary variables: >>>>> aTestSuite: a TestSuite >>>>> Receiver's instance variables: >>>>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>>>> #'AutomaticMetho...etc... >>>>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>>>> #'OpenDBX-Core-Tests' #'...etc... >>>>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>>>> DBXConnectionTest . DBXDescri...etc... >>>>> classIndex: 0 >>>>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>>>> failedList: #() >>>>> failedSelected: nil >>>>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>>>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>>>> lastUpdate: 3431753837 >>>>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>>>> errors, 0 unexpecte...etc... >>>>> previousRun: nil >>>>> >>>>> TestRunner>>debug: >>>>> Receiver: a TestRunner >>>>> Arguments and temporary variables: >>>>> aTestCase: DBXQueryTimeoutTest>>#testNoTimeout >>>>> Receiver's instance variables: >>>>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>>>> #'AutomaticMetho...etc... >>>>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>>>> #'OpenDBX-Core-Tests' #'...etc... >>>>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>>>> DBXConnectionTest . DBXDescri...etc... >>>>> classIndex: 0 >>>>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>>>> failedList: #() >>>>> failedSelected: nil >>>>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>>>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>>>> lastUpdate: 3431753837 >>>>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>>>> errors, 0 unexpecte...etc... >>>>> previousRun: nil >>>>> >>>>> TestRunner>>errorSelected: >>>>> Receiver: a TestRunner >>>>> Arguments and temporary variables: >>>>> anInteger: 1 >>>>> Receiver's instance variables: >>>>> categories: #(#'AST-Tests' #'AutomaticMethodCategorizer-Tests' >>>>> #'AutomaticMetho...etc... >>>>> categoriesSelected: a Set(#'OpenDBX-Core-Tests-Extras' >>>>> #'OpenDBX-Core-Tests' #'...etc... >>>>> classes: {DBXBaseTest . DBXCompleteExamplesTest . >>>>> DBXConnectionTest . DBXDescri...etc... >>>>> classIndex: 0 >>>>> classesSelected: a Set(DBXQueryTimeoutTest DBXResetTestBackend) >>>>> failedList: #() >>>>> failedSelected: nil >>>>> errorList: an Array(DBXQueryTimeoutTest>>#testNoTimeout) >>>>> errorSelected: DBXQueryTimeoutTest>>#testNoTimeout >>>>> lastUpdate: 3431753837 >>>>> result: 5 run, 4 passes, 0 expected failures, 0 failures, 1 >>>>> errors, 0 unexpecte...etc... >>>>> previousRun: nil >>>>> >>>>> PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection: >>>>> Receiver: a PluggableListMorphPlus(3968) >>>>> Arguments and temporary variables: >>>>> anInteger: 1 >>>>> Receiver's instance variables: >>>>> bounds: 1481@397 corner: 1792@583 >>>>> owner: a PluggableStandardWindow(1639) >>>>> submorphs: an Array(a TransformMorph(3663)) >>>>> fullBounds: 1481@397 corner: 1792@583 >>>>> color: Color white >>>>> extension: a MorphExtension (3283) [locked] [other: >>>>> (layoutFrame -> a LayoutF...etc... >>>>> borderWidth: 1 >>>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>>> model: a TestRunner >>>>> slotName: nil >>>>> open: false >>>>> scrollBar: a ScrollBar(2643) >>>>> scroller: a TransformMorph(3663) >>>>> retractableScrollBar: false >>>>> scrollBarOnLeft: false >>>>> getMenuSelector: #errorMenu: >>>>> getMenuTitleSelector: nil >>>>> hasFocus: false >>>>> hScrollBar: a ScrollBar(2842) >>>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>>> getListSelector: #errorList >>>>> getListSizeSelector: nil >>>>> getListElementSelector: nil >>>>> getIndexSelector: #errorSelected >>>>> setIndexSelector: #errorSelected: >>>>> keystrokeActionSelector: nil >>>>> autoDeselect: true >>>>> lastKeystrokeTime: 0 >>>>> lastKeystrokes: '' >>>>> doubleClickSelector: nil >>>>> handlesBasicKeys: nil >>>>> potentialDropRow: nil >>>>> listMorph: a LazyListMorph(884) >>>>> hScrollRangeCache: nil >>>>> dragItemSelector: nil >>>>> dropItemSelector: nil >>>>> wantsDropSelector: nil >>>>> >>>>> PluggableListMorphPlus(PluggableListMorph)>>mouseUp: >>>>> Receiver: a PluggableListMorphPlus(3968) >>>>> Arguments and temporary variables: >>>>> event: [1546@408 mouseUp 57402925 nil] >>>>> row: 1 >>>>> mdr: 1 >>>>> Receiver's instance variables: >>>>> bounds: 1481@397 corner: 1792@583 >>>>> owner: a PluggableStandardWindow(1639) >>>>> submorphs: an Array(a TransformMorph(3663)) >>>>> fullBounds: 1481@397 corner: 1792@583 >>>>> color: Color white >>>>> extension: a MorphExtension (3283) [locked] [other: >>>>> (layoutFrame -> a LayoutF...etc... >>>>> borderWidth: 1 >>>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>>> model: a TestRunner >>>>> slotName: nil >>>>> open: false >>>>> scrollBar: a ScrollBar(2643) >>>>> scroller: a TransformMorph(3663) >>>>> retractableScrollBar: false >>>>> scrollBarOnLeft: false >>>>> getMenuSelector: #errorMenu: >>>>> getMenuTitleSelector: nil >>>>> hasFocus: false >>>>> hScrollBar: a ScrollBar(2842) >>>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>>> getListSelector: #errorList >>>>> getListSizeSelector: nil >>>>> getListElementSelector: nil >>>>> getIndexSelector: #errorSelected >>>>> setIndexSelector: #errorSelected: >>>>> keystrokeActionSelector: nil >>>>> autoDeselect: true >>>>> lastKeystrokeTime: 0 >>>>> lastKeystrokes: '' >>>>> doubleClickSelector: nil >>>>> handlesBasicKeys: nil >>>>> potentialDropRow: nil >>>>> listMorph: a LazyListMorph(884) >>>>> hScrollRangeCache: nil >>>>> dragItemSelector: nil >>>>> dropItemSelector: nil >>>>> wantsDropSelector: nil >>>>> >>>>> PluggableListMorphPlus(Morph)>>handleMouseUp: >>>>> Receiver: a PluggableListMorphPlus(3968) >>>>> Arguments and temporary variables: >>>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>>> Receiver's instance variables: >>>>> bounds: 1481@397 corner: 1792@583 >>>>> owner: a PluggableStandardWindow(1639) >>>>> submorphs: an Array(a TransformMorph(3663)) >>>>> fullBounds: 1481@397 corner: 1792@583 >>>>> color: Color white >>>>> extension: a MorphExtension (3283) [locked] [other: >>>>> (layoutFrame -> a LayoutF...etc... >>>>> borderWidth: 1 >>>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>>> model: a TestRunner >>>>> slotName: nil >>>>> open: false >>>>> scrollBar: a ScrollBar(2643) >>>>> scroller: a TransformMorph(3663) >>>>> retractableScrollBar: false >>>>> scrollBarOnLeft: false >>>>> getMenuSelector: #errorMenu: >>>>> getMenuTitleSelector: nil >>>>> hasFocus: false >>>>> hScrollBar: a ScrollBar(2842) >>>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>>> getListSelector: #errorList >>>>> getListSizeSelector: nil >>>>> getListElementSelector: nil >>>>> getIndexSelector: #errorSelected >>>>> setIndexSelector: #errorSelected: >>>>> keystrokeActionSelector: nil >>>>> autoDeselect: true >>>>> lastKeystrokeTime: 0 >>>>> lastKeystrokes: '' >>>>> doubleClickSelector: nil >>>>> handlesBasicKeys: nil >>>>> potentialDropRow: nil >>>>> listMorph: a LazyListMorph(884) >>>>> hScrollRangeCache: nil >>>>> dragItemSelector: nil >>>>> dropItemSelector: nil >>>>> wantsDropSelector: nil >>>>> >>>>> MouseButtonEvent>>sentTo: >>>>> Receiver: [1546@408 mouseUp 57402925 nil] >>>>> Arguments and temporary variables: >>>>> anObject: a PluggableListMorphPlus(3968) >>>>> Receiver's instance variables: >>>>> timeStamp: 57402925 >>>>> source: a HandMorph(3216) >>>>> windowIndex: nil >>>>> type: #mouseUp >>>>> buttons: 0 >>>>> position: 1546@408 >>>>> handler: nil >>>>> wasHandled: true >>>>> whichButton: 4 >>>>> >>>>> PluggableListMorphPlus(Morph)>>handleEvent: >>>>> Receiver: a PluggableListMorphPlus(3968) >>>>> Arguments and temporary variables: >>>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>>> Receiver's instance variables: >>>>> bounds: 1481@397 corner: 1792@583 >>>>> owner: a PluggableStandardWindow(1639) >>>>> submorphs: an Array(a TransformMorph(3663)) >>>>> fullBounds: 1481@397 corner: 1792@583 >>>>> color: Color white >>>>> extension: a MorphExtension (3283) [locked] [other: >>>>> (layoutFrame -> a LayoutF...etc... >>>>> borderWidth: 1 >>>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>>> model: a TestRunner >>>>> slotName: nil >>>>> open: false >>>>> scrollBar: a ScrollBar(2643) >>>>> scroller: a TransformMorph(3663) >>>>> retractableScrollBar: false >>>>> scrollBarOnLeft: false >>>>> getMenuSelector: #errorMenu: >>>>> getMenuTitleSelector: nil >>>>> hasFocus: false >>>>> hScrollBar: a ScrollBar(2842) >>>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>>> getListSelector: #errorList >>>>> getListSizeSelector: nil >>>>> getListElementSelector: nil >>>>> getIndexSelector: #errorSelected >>>>> setIndexSelector: #errorSelected: >>>>> keystrokeActionSelector: nil >>>>> autoDeselect: true >>>>> lastKeystrokeTime: 0 >>>>> lastKeystrokes: '' >>>>> doubleClickSelector: nil >>>>> handlesBasicKeys: nil >>>>> potentialDropRow: nil >>>>> listMorph: a LazyListMorph(884) >>>>> hScrollRangeCache: nil >>>>> dragItemSelector: nil >>>>> dropItemSelector: nil >>>>> wantsDropSelector: nil >>>>> >>>>> MorphicEventDispatcher>>dispatchDefault:with: >>>>> Receiver: a MorphicEventDispatcher >>>>> Arguments and temporary variables: >>>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>>> aMorph: a PluggableListMorphPlus(3968) >>>>> localEvt: [1546@408 mouseUp 57402925 nil] >>>>> index: 2 >>>>> child: a TransformMorph(3663) >>>>> morphs: an Array(a TransformMorph(3663)) >>>>> inside: true >>>>> Receiver's instance variables: >>>>> lastType: #mouseUp >>>>> lastDispatch: #dispatchDefault:with: >>>>> >>>>> MorphicEventDispatcher>>dispatchEvent:with: >>>>> Receiver: a MorphicEventDispatcher >>>>> Arguments and temporary variables: >>>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>>> aMorph: a PluggableListMorphPlus(3968) >>>>> Receiver's instance variables: >>>>> lastType: #mouseUp >>>>> lastDispatch: #dispatchDefault:with: >>>>> >>>>> PluggableListMorphPlus(Morph)>>processEvent:using: >>>>> Receiver: a PluggableListMorphPlus(3968) >>>>> Arguments and temporary variables: >>>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>>> defaultDispatcher: a MorphicEventDispatcher >>>>> Receiver's instance variables: >>>>> bounds: 1481@397 corner: 1792@583 >>>>> owner: a PluggableStandardWindow(1639) >>>>> submorphs: an Array(a TransformMorph(3663)) >>>>> fullBounds: 1481@397 corner: 1792@583 >>>>> color: Color white >>>>> extension: a MorphExtension (3283) [locked] [other: >>>>> (layoutFrame -> a LayoutF...etc... >>>>> borderWidth: 1 >>>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>>> model: a TestRunner >>>>> slotName: nil >>>>> open: false >>>>> scrollBar: a ScrollBar(2643) >>>>> scroller: a TransformMorph(3663) >>>>> retractableScrollBar: false >>>>> scrollBarOnLeft: false >>>>> getMenuSelector: #errorMenu: >>>>> getMenuTitleSelector: nil >>>>> hasFocus: false >>>>> hScrollBar: a ScrollBar(2842) >>>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>>> getListSelector: #errorList >>>>> getListSizeSelector: nil >>>>> getListElementSelector: nil >>>>> getIndexSelector: #errorSelected >>>>> setIndexSelector: #errorSelected: >>>>> keystrokeActionSelector: nil >>>>> autoDeselect: true >>>>> lastKeystrokeTime: 0 >>>>> lastKeystrokes: '' >>>>> doubleClickSelector: nil >>>>> handlesBasicKeys: nil >>>>> potentialDropRow: nil >>>>> listMorph: a LazyListMorph(884) >>>>> hScrollRangeCache: nil >>>>> dragItemSelector: nil >>>>> dropItemSelector: nil >>>>> wantsDropSelector: nil >>>>> >>>>> PluggableListMorphPlus(Morph)>>processEvent: >>>>> Receiver: a PluggableListMorphPlus(3968) >>>>> Arguments and temporary variables: >>>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>>> Receiver's instance variables: >>>>> bounds: 1481@397 corner: 1792@583 >>>>> owner: a PluggableStandardWindow(1639) >>>>> submorphs: an Array(a TransformMorph(3663)) >>>>> fullBounds: 1481@397 corner: 1792@583 >>>>> color: Color white >>>>> extension: a MorphExtension (3283) [locked] [other: >>>>> (layoutFrame -> a LayoutF...etc... >>>>> borderWidth: 1 >>>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>>> model: a TestRunner >>>>> slotName: nil >>>>> open: false >>>>> scrollBar: a ScrollBar(2643) >>>>> scroller: a TransformMorph(3663) >>>>> retractableScrollBar: false >>>>> scrollBarOnLeft: false >>>>> getMenuSelector: #errorMenu: >>>>> getMenuTitleSelector: nil >>>>> hasFocus: false >>>>> hScrollBar: a ScrollBar(2842) >>>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>>> getListSelector: #errorList >>>>> getListSizeSelector: nil >>>>> getListElementSelector: nil >>>>> getIndexSelector: #errorSelected >>>>> setIndexSelector: #errorSelected: >>>>> keystrokeActionSelector: nil >>>>> autoDeselect: true >>>>> lastKeystrokeTime: 0 >>>>> lastKeystrokes: '' >>>>> doubleClickSelector: nil >>>>> handlesBasicKeys: nil >>>>> potentialDropRow: nil >>>>> listMorph: a LazyListMorph(884) >>>>> hScrollRangeCache: nil >>>>> dragItemSelector: nil >>>>> dropItemSelector: nil >>>>> wantsDropSelector: nil >>>>> >>>>> PluggableListMorphPlus(PluggableListMorph)>>handleFocusEvent: >>>>> Receiver: a PluggableListMorphPlus(3968) >>>>> Arguments and temporary variables: >>>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>>> Receiver's instance variables: >>>>> bounds: 1481@397 corner: 1792@583 >>>>> owner: a PluggableStandardWindow(1639) >>>>> submorphs: an Array(a TransformMorph(3663)) >>>>> fullBounds: 1481@397 corner: 1792@583 >>>>> color: Color white >>>>> extension: a MorphExtension (3283) [locked] [other: >>>>> (layoutFrame -> a LayoutF...etc... >>>>> borderWidth: 1 >>>>> borderColor: (Color r: 0.667 g: 0.667 b: 0.667) >>>>> model: a TestRunner >>>>> slotName: nil >>>>> open: false >>>>> scrollBar: a ScrollBar(2643) >>>>> scroller: a TransformMorph(3663) >>>>> retractableScrollBar: false >>>>> scrollBarOnLeft: false >>>>> getMenuSelector: #errorMenu: >>>>> getMenuTitleSelector: nil >>>>> hasFocus: false >>>>> hScrollBar: a ScrollBar(2842) >>>>> list: #('DBXQueryTimeoutTest>>#testNoTimeout') >>>>> getListSelector: #errorList >>>>> getListSizeSelector: nil >>>>> getListElementSelector: nil >>>>> getIndexSelector: #errorSelected >>>>> setIndexSelector: #errorSelected: >>>>> keystrokeActionSelector: nil >>>>> autoDeselect: true >>>>> lastKeystrokeTime: 0 >>>>> lastKeystrokes: '' >>>>> doubleClickSelector: nil >>>>> handlesBasicKeys: nil >>>>> potentialDropRow: nil >>>>> listMorph: a LazyListMorph(884) >>>>> hScrollRangeCache: nil >>>>> dragItemSelector: nil >>>>> dropItemSelector: nil >>>>> wantsDropSelector: nil >>>>> >>>>> [] in HandMorph>>sendFocusEvent:to:clear: >>>>> Receiver: a HandMorph(3216) >>>>> Arguments and temporary variables: >>>>> <<error during printing> >>>>> Receiver's instance variables: >>>>> bounds: 1071@619 corner: 1087@635 >>>>> owner: a PasteUpMorph(1622) [world] >>>>> submorphs: #() >>>>> fullBounds: 1071@619 corner: 1087@635 >>>>> color: Color blue >>>>> extension: a MorphExtension (539) [eventHandler = an >>>>> EventHandler] >>>>> mouseFocus: nil >>>>> keyboardFocus: nil >>>>> eventListeners: nil >>>>> mouseListeners: nil >>>>> keyboardListeners: nil >>>>> mouseClickState: nil >>>>> mouseOverHandler: a MouseOverHandler >>>>> lastMouseEvent: [1071@619 1071@619 mouseMove 57619819 nil] >>>>> targetOffset: 188@12 >>>>> damageRecorder: a DamageRecorder >>>>> cacheCanvas: nil >>>>> cachedCanvasHasHoles: true >>>>> temporaryCursor: nil >>>>> temporaryCursorOffset: nil >>>>> hardwareCursor: nil >>>>> hasChanged: true >>>>> savedPatch: nil >>>>> userInitials: '' >>>>> lastEventBuffer: #(1 57619819 1071 619 0 0 0 1) >>>>> lastKeyScanCode: 36 >>>>> combinedChar: nil >>>>> >>>>> [] in PasteUpMorph>>becomeActiveDuring: >>>>> Receiver: a PasteUpMorph(1622) [world] >>>>> Arguments and temporary variables: >>>>> <<error during printing> >>>>> Receiver's instance variables: >>>>> bounds: 0@0 corner: 1920@1178 >>>>> owner: nil >>>>> submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a >>>>> PluggableStanda...etc... >>>>> fullBounds: 0@0 corner: 1920@1178 >>>>> color: Color gray >>>>> extension: a MorphExtension (2543) [eventHandler = an >>>>> EventHandler] [other: (...etc... >>>>> borderWidth: 0 >>>>> borderColor: (Color r: 0.5 g: 0.5 b: 0.5) >>>>> presenter: a Presenter (1246) >>>>> model: a MorphicModel(1926) >>>>> cursor: 1 >>>>> padding: 3 >>>>> backgroundMorph: nil >>>>> isPartsBin: nil >>>>> autoLineLayout: false >>>>> indicateCursor: nil >>>>> resizeToFit: nil >>>>> wantsMouseOverHalos: nil >>>>> worldState: a WorldState >>>>> griddingOn: nil >>>>> >>>>> BlockClosure>>on:do: >>>>> Receiver: [closure] in PasteUpMorph>>becomeActiveDuring: >>>>> Arguments and temporary variables: >>>>> exception: Error >>>>> handlerAction: [closure] in PasteUpMorph>>becomeActiveDuring: >>>>> handlerActive: false >>>>> Receiver's instance variables: >>>>> outerContext: PasteUpMorph>>becomeActiveDuring: >>>>> startpc: 67 >>>>> numArgs: 0 >>>>> >>>>> PasteUpMorph>>becomeActiveDuring: >>>>> Receiver: a PasteUpMorph(1622) [world] >>>>> Arguments and temporary variables: >>>>> aBlock: [closure] in HandMorph>>sendFocusEvent:to:clear: >>>>> priorWorld: a PasteUpMorph(1622) [world] >>>>> priorHand: a HandMorph(3216) >>>>> priorEvent: [1546@408 mouseOver red nil nil] >>>>> Receiver's instance variables: >>>>> bounds: 0@0 corner: 1920@1178 >>>>> owner: nil >>>>> submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a >>>>> PluggableStanda...etc... >>>>> fullBounds: 0@0 corner: 1920@1178 >>>>> color: Color gray >>>>> extension: a MorphExtension (2543) [eventHandler = an >>>>> EventHandler] [other: (...etc... >>>>> borderWidth: 0 >>>>> borderColor: (Color r: 0.5 g: 0.5 b: 0.5) >>>>> presenter: a Presenter (1246) >>>>> model: a MorphicModel(1926) >>>>> cursor: 1 >>>>> padding: 3 >>>>> backgroundMorph: nil >>>>> isPartsBin: nil >>>>> autoLineLayout: false >>>>> indicateCursor: nil >>>>> resizeToFit: nil >>>>> wantsMouseOverHalos: nil >>>>> worldState: a WorldState >>>>> griddingOn: nil >>>>> >>>>> HandMorph>>sendFocusEvent:to:clear: >>>>> Receiver: a HandMorph(3216) >>>>> Arguments and temporary variables: >>>>> anEvent: [1546@408 mouseUp 57402925 nil] >>>>> focusHolder: a PluggableListMorphPlus(3968) >>>>> aBlock: [closure] in HandMorph>>sendMouseEvent: >>>>> w: a PasteUpMorph(1622) [world] >>>>> result: #(nil) >>>>> Receiver's instance variables: >>>>> bounds: 1071@619 corner: 1087@635 >>>>> owner: a PasteUpMorph(1622) [world] >>>>> submorphs: #() >>>>> fullBounds: 1071@619 corner: 1087@635 >>>>> color: Color blue >>>>> extension: a MorphExtension (539) [eventHandler = an >>>>> EventHandler] >>>>> mouseFocus: nil >>>>> keyboardFocus: nil >>>>> eventListeners: nil >>>>> mouseListeners: nil >>>>> keyboardListeners: nil >>>>> mouseClickState: nil >>>>> mouseOverHandler: a MouseOverHandler >>>>> lastMouseEvent: [1071@619 1071@619 mouseMove 57619819 nil] >>>>> targetOffset: 188@12 >>>>> damageRecorder: a DamageRecorder >>>>> cacheCanvas: nil >>>>> cachedCanvasHasHoles: true >>>>> temporaryCursor: nil >>>>> temporaryCursorOffset: nil >>>>> hardwareCursor: nil >>>>> hasChanged: true >>>>> savedPatch: nil >>>>> userInitials: '' >>>>> lastEventBuffer: #(1 57619819 1071 619 0 0 0 1) >>>>> lastKeyScanCode: 36 >>>>> combinedChar: nil >>>>> >>>>> >>>>> --- The full stack --- >>>>> UndefinedObject(Object)>>doesNotUnderstand: #asMiliseconds >>>>> [] in [] in >>>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>>> >>>>> DBXPostgresPlatform(DBXPlatform)>>nextResultSet:querySettings:onReturn: >>>>> [] in >>>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>>> BlockClosure>>doWhileTrue: >>>>> >>>>> DBXPostgresPlatform(DBXPlatform)>>processNextResultSet:querySettings: >>>>> >>>>> DBXPostgresPlatform(DBXPlatform)>>executeStatement:on:querySettings: >>>>> DBXConnection>>execute:querySettings: >>>>> DBXQueryTimeoutTest>>testNoTimeout >>>>> DBXQueryTimeoutTest(TestCase)>>performTest >>>>> [] in DBXQueryTimeoutTest(TestCase)>>runCase >>>>> BlockClosure>>ensure: >>>>> DBXQueryTimeoutTest(TestCase)>>runCase >>>>> [] in DBXQueryTimeoutTest(TestCase)>>debug >>>>> BlockClosure>>ensure: >>>>> DBXQueryTimeoutTest(TestCase)>>debug >>>>> [] in TestRunner>>debugSuite: >>>>> OrderedCollection>>do: >>>>> [] in TestRunner>>basicRunSuite:do: >>>>> BlockClosure>>ensure: >>>>> TestRunner>>basicRunSuite:do: >>>>> TestRunner>>debugSuite: >>>>> TestRunner>>debug: >>>>> TestRunner>>errorSelected: >>>>> PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection: >>>>> PluggableListMorphPlus(PluggableListMorph)>>mouseUp: >>>>> PluggableListMorphPlus(Morph)>>handleMouseUp: >>>>> MouseButtonEvent>>sentTo: >>>>> PluggableListMorphPlus(Morph)>>handleEvent: >>>>> MorphicEventDispatcher>>dispatchDefault:with: >>>>> MorphicEventDispatcher>>dispatchEvent:with: >>>>> PluggableListMorphPlus(Morph)>>processEvent:using: >>>>> PluggableListMorphPlus(Morph)>>processEvent: >>>>> PluggableListMorphPlus(PluggableListMorph)>>handleFocusEvent: >>>>> [] in HandMorph>>sendFocusEvent:to:clear: >>>>> [] in PasteUpMorph>>becomeActiveDuring: >>>>> BlockClosure>>on:do: >>>>> PasteUpMorph>>becomeActiveDuring: >>>>> HandMorph>>sendFocusEvent:to:clear: >>>>> - - - - - - - - - - - - - - - >>>>> - - - - - - - - - - - - - - - - - - >>>>> HandMorph>>sendEvent:focus:clear: >>>>> HandMorph>>sendMouseEvent: >>>>> HandMorph>>handleEvent: >>>>> HandMorph>>processEvents >>>>> [] in WorldState>>doOneCycleNowFor: >>>>> Array(SequenceableCollection)>>do: >>>>> WorldState>>handsDo: >>>>> WorldState>>doOneCycleNowFor: >>>>> WorldState>>doOneCycleFor: >>>>> PasteUpMorph>>doOneCycle >>>>> [] in Project class>>spawnNewProcess >>>>> [] in BlockClosure>>newProcess >>>>> >>>>> >>>>> On Tue, Sep 29, 2009 at 23:14, Mariano Martinez Peck < >>>>> marianopeck@gmail.com> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Fri, Sep 25, 2009 at 12:07 PM, John Toohey jt@parspro.comwrote: >>>>>> >>>>>>> Had to rebuild a new image, changes file full, and Pharo still >>>>>>> cannot condense a change file. So, now I have a refresh image with just >>>>>>> GlorpDBX installed. Ran the tests and have 94 passed and one failure. The >>>>>>> failed test is DBXQueryNoTimeout and the failing method is #testNoTimeOut. >>>>>>> The DBXQuerySetting object's timeout property is Nil, and this throws a DNU >>>>>>> exception. >>>>>>> >>>>>> >>>>>> John: I am seeing this test but is green for me here in Linux >>>>>> and Windows :( >>>>>> I mean, I set a nil to the timeout property but I never send a >>>>>> message to that object. I just send a null trough FFI. >>>>>> >>>>>> Can you tell me where does the DNU occur, who DNU a message and >>>>>> which message was not understood ? It would be excellent you can send me >>>>>> the stacktrace. >>>>>> >>>>>> Thanks a lot for the testing! >>>>>> >>>>>> Mariano >>>>>> >>>>>> >>>>>> >>>>>>> Going to try to install Seaside now, and hopefully my own app >>>>>>> then. >>>>>>> >>>>>>> >>>>>>> On Fri, Sep 25, 2009 at 09:38, Mariano Martinez Peck < >>>>>>> marianopeck@gmail.com> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Sep 25, 2009 at 12:21 PM, Mariano Martinez Peck < >>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Fri, Sep 25, 2009 at 12:04 PM, John Toohey < >>>>>>>>> jt@parspro.com> wrote: >>>>>>>>> >>>>>>>>>> I now have a new image with Seaside 3 installed, however >>>>>>>>>> when I run the follow :- >>>>>>>>>> Installer ss project: 'SqueakDBX'; install: >>>>>>>>>> 'SqueakDBXPharoLoader'. >>>>>>>>>> SqueakDBXPharoLoader loadGlorpDBX >>>>>>>>>> >>>>>>>>>> This package depends on the following classes: >>>>>>>>>> PGConnection >>>>>>>>>> You must resolve these dependencies before you will be able >>>>>>>>>> to load these definitions: >>>>>>>>>> PGConnection classSide>>buildDefaultFieldConverters >>>>>>>>>> PGConnection classSide>>buildStateTransitionTable >>>>>>>>>> >>>>>>>>>> Do I need to install the Postgres driver before I do this? I >>>>>>>>>> thought it was part of the GlorpDBX install. >>>>>>>>>> >>>>>>>>> >>>>>>>>> Yeah, I know :( >>>>>>>>> It is difficult to explain but there is some places of Glorp >>>>>>>>> which still reference to PGConnection. However, it is not used. Don't worry. >>>>>>>>> Do a "proceed" and everything will be ok. >>>>>>>>> >>>>>>>> >>>>>>>> Ok. I found the problem. It's time to restrucutre some >>>>>>>> packages about Glorp. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> I will then try to see how to fix this. >>>>>>>>> >>>>>>>>> what happened to SqueakDBX tests and the amount of >>>>>>>>> connections? did it work my commit ? >>>>>>>>> >>>>>>>>> Here is a summary of the things we did to GLorp and how to >>>>>>>>> run GlorpDBX tests: >>>>>>>>> >>>>>>>>> http://squeakdbx.smallworks.com.ar/GLORP integration >>>>>>>>> >>>>>>>>> Ok, it was a secret that webpage. It is our own website with >>>>>>>>> seaside and pier to replace the swiki :) We will then do the public ANN >>>>>>>>> hahaha. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Sep 24, 2009 at 21:16, Mariano Martinez Peck < >>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Thu, Sep 24, 2009 at 10:12 PM, John Toohey < >>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> I am running the OpenDBX-Core tests both from the >>>>>>>>>>>> TestRunner and the OBPackageBrowser. The tests run successfully until my DB >>>>>>>>>>>> runs out of connections. Latest Pharo, and latest GlorpDBX installed. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> John: I have just noticed that a lot of SqueakDBX tests >>>>>>>>>>> don't release the DB connections, as you guessed. I have just commit. can >>>>>>>>>>> you please test it and let me know ? of course, you must first reboot or >>>>>>>>>>> kill all the active connections ;) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> "Name: OpenDBX-Core-Mariano.230 >>>>>>>>>>> Author: Mariano >>>>>>>>>>> Time: 24 September 2009, 10:15:03 pm >>>>>>>>>>> UUID: 19ce8340-3070-4495-a21d-cbe2b63aca0e >>>>>>>>>>> Ancestors: OpenDBX-Core-HMC.229 >>>>>>>>>>> >>>>>>>>>>> There were a lot of SqueakDBX tests that don't release the >>>>>>>>>>> connection after testing. So, this can result in a "Too many connections >>>>>>>>>>> error". Now, all tests release connections." >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Thu, Sep 24, 2009 at 20:52, Mariano Martinez Peck < >>>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, Sep 24, 2009 at 3:13 PM, John Toohey < >>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Okay, I've installed SqueakGlorp into my existing image, >>>>>>>>>>>>>> and added the symlink to the VM for openDBX. I can get up to 44 tests to >>>>>>>>>>>>>> pass, but it seems that the tests are not releasing their DB connections, so >>>>>>>>>>>>>> after a while the rest fail with a "Too many connections error" >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> These tests you are talking about are SqueakDBX tests or >>>>>>>>>>>>> Glorp tests when using SqueakDBX as the driver ? >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Is this how it should be for those tests? I am just >>>>>>>>>>>>>> selecting the test package and selecting "run tests". >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> I need to know which tests are you running, if >>>>>>>>>>>>> OpenDBX-Core-Tests or GlorpTest. Anyway, tests should release connections. >>>>>>>>>>>>> If this is not done, so we have a bug in our tests. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 12:24, Mariano Martinez Peck < >>>>>>>>>>>>>> marianopeck@gmail.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 3:06 PM, John Toohey < >>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> - I've managed to build it on a VMWare VM running >>>>>>>>>>>>>>>> Ubunto, and using the --disable-utils switch, I've built it on OSX also. >>>>>>>>>>>>>>>> However on both systems when I run the test suite I see this :- >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Excellent news!!! I tell you: there is an utility >>>>>>>>>>>>>>> called odbx-sql that let you send queries trough OpenDBX. However, that >>>>>>>>>>>>>>> utility requires external libraries which seem to have problems, at least in >>>>>>>>>>>>>>> Windows. So, when we compile in Windows, we must disable that utility. But >>>>>>>>>>>>>>> remember this is an utility, not OpenDBX core or feature. It is not >>>>>>>>>>>>>>> important. I didn't know it has problems also with MacOS, so I will update >>>>>>>>>>>>>>> the webpage. Thanks for the testing!!!! >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> `--> ./odbxtest -b pgsql -h localhost -p 5432 -d >>>>>>>>>>>>>>>> juliet -u postgres -w postgres >>>>>>>>>>>>>>>> ODBX_CAP_BASIC: 1 >>>>>>>>>>>>>>>> ODBX_CAP_LO: 0 >>>>>>>>>>>>>>>> ODBX_OPT_API_VERSION: 10200 >>>>>>>>>>>>>>>> ODBX_OPT_THREAD_SAFE: 1 >>>>>>>>>>>>>>>> ODBX_OPT_TLS: 1 >>>>>>>>>>>>>>>> ODBX_OPT_CONNECT_TIMEOUT: 1 (using) >>>>>>>>>>>>>>>> ODBX_OPT_MULTI_STATEMENTS: 1 (using) >>>>>>>>>>>>>>>> ODBX_OPT_PAGED_RESULTS: 0 >>>>>>>>>>>>>>>> ODBX_OPT_COMPRESS: 0 >>>>>>>>>>>>>>>> ODBX_CAP_BASIC: 1 >>>>>>>>>>>>>>>> ODBX_CAP_LO: 0 >>>>>>>>>>>>>>>> ODBX_OPT_API_VERSION: 10200 >>>>>>>>>>>>>>>> ODBX_OPT_THREAD_SAFE: 1 >>>>>>>>>>>>>>>> ODBX_OPT_TLS: 1 >>>>>>>>>>>>>>>> ODBX_OPT_CONNECT_TIMEOUT: 1 (using) >>>>>>>>>>>>>>>> ODBX_OPT_MULTI_STATEMENTS: 1 (using) >>>>>>>>>>>>>>>> ODBX_OPT_PAGED_RESULTS: 0 >>>>>>>>>>>>>>>> ODBX_OPT_COMPRESS: 0 >>>>>>>>>>>>>>>> WARNING: nonstandard use of \ in a string literal >>>>>>>>>>>>>>>> LINE 1: SELECT * FROM odbxtest WHERE col = >>>>>>>>>>>>>>>> 'a''''\''b' >>>>>>>>>>>>>>>> ^ >>>>>>>>>>>>>>>> HINT: Use the escape string syntax for backslashes, >>>>>>>>>>>>>>>> e.g., E'\'. >>>>>>>>>>>>>>>> Error in odbx_result(): ERROR: relation "odbxtest" >>>>>>>>>>>>>>>> does not exist >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Error in odbx_result(): ERROR: relation "odbxtest" >>>>>>>>>>>>>>>> does not exist >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Not sure if this means there is a problem with the >>>>>>>>>>>>>>>> build (I downloaded to latest one) or a problem with the test suite. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> As you guessed this seems to be a problem with the test >>>>>>>>>>>>>>> suit, but the build is seems to be perfect. I will send this part to OpenDBX >>>>>>>>>>>>>>> mailing list and see if I receive some help. Thanks for the report. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> In order to continue and install GlorpDBX into my >>>>>>>>>>>>>>>> Pharo image, do I need to build a new image, as my current one already has >>>>>>>>>>>>>>>> Pharo-Glorp installed. I've never figured out how to uninstall packages in >>>>>>>>>>>>>>>> Smalltalk. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Yeah. Me neither :( >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> But, what you can do is install just SqueakDBX in that >>>>>>>>>>>>>>> image and run the SqueakDBX tests, using PostgreSQL to see if everything is >>>>>>>>>>>>>>> ok. You should have all green tests. If you get this, I would really >>>>>>>>>>>>>>> appreciate if you can make a binary for MacOS :) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Then, you can take a new image and install GlorpDBX as >>>>>>>>>>>>>>> explained in the wiki. Most of the tests should be green. I say "most" >>>>>>>>>>>>>>> because there are some that fails because of what I told you that we don't >>>>>>>>>>>>>>> support large database fields. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 11:15, Mariano Martinez Peck >>>>>>>>>>>>>>>> marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 1:59 PM, John Toohey < >>>>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I'm currently trying to build openDBX on OSX. I've >>>>>>>>>>>>>>>>>> finally found the postgres client libs and include files, and I've run >>>>>>>>>>>>>>>>>> ./configure -with-backends="pgsql", but when I run make I get this error :- >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Excellent you are giving SqueakDBX at least a try. >>>>>>>>>>>>>>>>> The real thing is this: The squeakDBX team is composed by 4 people. Only one >>>>>>>>>>>>>>>>> has a Mac and he is very busy with his work. I have ALL databases working on >>>>>>>>>>>>>>>>> Linux and Windows. And I have also prepared binaries for that because I can >>>>>>>>>>>>>>>>> (dlls, .deb and .rpm). But I cannot do it with Mac because I don't have a >>>>>>>>>>>>>>>>> mac and I don't know how binaries work on Mac. If you make it work, I would >>>>>>>>>>>>>>>>> really love you help me generating the binaries so that I can update them to >>>>>>>>>>>>>>>>> OpenDBX website. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Which OpenDBX version are you trying to compile? You >>>>>>>>>>>>>>>>> should try 1.4.3. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Can you try configuring this way please ? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./configure --disable-utils --with-backends="pgsql" >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> If it works, I then explain you why that :) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Making all in po >>>>>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-argmap.o -MD -MP -MF >>>>>>>>>>>>>>>>>> .deps/odbx_sql-argmap.Tpo -c -o odbx_sql-argmap.o `test -f 'argmap.cpp' || >>>>>>>>>>>>>>>>>> echo './'`argmap.cpp >>>>>>>>>>>>>>>>>> mv -f .deps/odbx_sql-argmap.Tpo >>>>>>>>>>>>>>>>>> .deps/odbx_sql-argmap.Po >>>>>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-commands.o -MD -MP >>>>>>>>>>>>>>>>>> -MF .deps/odbx_sql-commands.Tpo -c -o odbx_sql-commands.o `test -f >>>>>>>>>>>>>>>>>> 'commands.cpp' || echo './'`commands.cpp >>>>>>>>>>>>>>>>>> mv -f .deps/odbx_sql-commands.Tpo >>>>>>>>>>>>>>>>>> .deps/odbx_sql-commands.Po >>>>>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-completion.o -MD -MP >>>>>>>>>>>>>>>>>> -MF .deps/odbx_sql-completion.Tpo -c -o odbx_sql-completion.o `test -f >>>>>>>>>>>>>>>>>> 'completion.cpp' || echo './'`completion.cpp >>>>>>>>>>>>>>>>>> mv -f .deps/odbx_sql-completion.Tpo >>>>>>>>>>>>>>>>>> .deps/odbx_sql-completion.Po >>>>>>>>>>>>>>>>>> g++ -DHAVE_CONFIG_H -I. -I.. -I../lib >>>>>>>>>>>>>>>>>> -DLOCALEDIR="/usr/local/share/locale" >>>>>>>>>>>>>>>>>> -DKEYWORDFILE="/usr/local/share/opendbx/keywords" >>>>>>>>>>>>>>>>>> -I/opt/local/include/postgresql83 -g -O2 -MT odbx_sql-odbx-sql.o -MD -MP >>>>>>>>>>>>>>>>>> -MF .deps/odbx_sql-odbx-sql.Tpo -c -o odbx_sql-odbx-sql.o `test -f >>>>>>>>>>>>>>>>>> 'odbx-sql.cpp' || echo './'`odbx-sql.cpp >>>>>>>>>>>>>>>>>> odbx-sql.cpp: In function 'int main(int, char**)': >>>>>>>>>>>>>>>>>> odbx-sql.cpp:228: error: invalid conversion from >>>>>>>>>>>>>>>>>> 'char* (*)(const char*, int)' to 'int (*)(const char*, int)' >>>>>>>>>>>>>>>>>> make[3]: *** [odbx_sql-odbx-sql.o] Error 1 >>>>>>>>>>>>>>>>>> make[2]: *** [all-recursive] Error 1 >>>>>>>>>>>>>>>>>> make[1]: *** [all-recursive] Error 1 >>>>>>>>>>>>>>>>>> make: *** [all] Error 2 >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Do you know of any pre-built binaries that will work >>>>>>>>>>>>>>>>>> on OSX? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I don't know, but I would love to have them!!! >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 23:09, Mariano Martinez Peck >>>>>>>>>>>>>>>>>> marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 11:27 PM, John Toohey < >>>>>>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Hey, >>>>>>>>>>>>>>>>>>>> Thanks for looking into this for me. I'm just >>>>>>>>>>>>>>>>>>>> using Pharo as my app is using the beta of Seaside 3.0. I'm going to do as >>>>>>>>>>>>>>>>>>>> you suggested and put some debug statements in PGConnection, and see where >>>>>>>>>>>>>>>>>>>> that leads. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Ok, let us know what the problem was if you find it >>>>>>>>>>>>>>>>>>> :) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Is it a lot of changes from me to switch to DBX on >>>>>>>>>>>>>>>>>>>> Pharo? >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> No. Your application shouldn't have any changes. >>>>>>>>>>>>>>>>>>> You application will use just Glorp. But in this case Glorp won't use the >>>>>>>>>>>>>>>>>>> native PostgreSQL driver, but SqueakDBX with PostgreSQL. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> I assume there are no changes in my Glorp code, >>>>>>>>>>>>>>>>>>>> but what else do I need to do. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> The only thing you must do is: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> - Install the PostgreSQL client library (if you >>>>>>>>>>>>>>>>>>> don't have it already installed). >>>>>>>>>>>>>>>>>>> - Compile or Install (if you are in Linux you can >>>>>>>>>>>>>>>>>>> use the .rpm or .deb) OpenDBX with PostgreSQL, >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> You can read how to do it here: >>>>>>>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6129 >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> You must do it only once. Once this is done, >>>>>>>>>>>>>>>>>>> everything is easy and you can take advantage of all the SqueakDBX features >>>>>>>>>>>>>>>>>>> (http://wiki.squeak.org/squeak/6106). OpenDBX >>>>>>>>>>>>>>>>>>> works perfect with PostgreSQL in Linux, Mac and Windows. We have also have >>>>>>>>>>>>>>>>>>> GlorpDBX working with SqueakDBX and PostgreSQL and it is very easy to >>>>>>>>>>>>>>>>>>> install: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> http://wiki.squeak.org/squeak/6130 (where it >>>>>>>>>>>>>>>>>>> says GlorpDBX). >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> The only limitation we have right now is that we >>>>>>>>>>>>>>>>>>> don't support large objects (blob, clob, etc) yet. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> If you try it and have any problem, please, let us >>>>>>>>>>>>>>>>>>> know!!! >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> I develop on OSX and deploy to Linux for >>>>>>>>>>>>>>>>>>>> production. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> No problem. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 21:03, Mariano Martinez >>>>>>>>>>>>>>>>>>>> Peck marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> I was thinking if you have the problem in Squeak >>>>>>>>>>>>>>>>>>>>> also or just Pharo ? >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:12 PM, Mariano Martinez >>>>>>>>>>>>>>>>>>>>> Peck marianopeck@gmail.com wrote: >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:25 PM, John Toohey < >>>>>>>>>>>>>>>>>>>>>> jt@parspro.com> wrote: >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Hi John! This list is SqueakDBX related, so >>>>>>>>>>>>>>>>>>>>>> perhaps I am not the best one to help you. I just make Glorp and PostgreSQL >>>>>>>>>>>>>>>>>>>>>> native driver to work on Pharo. Actually, the only thing I did is to have >>>>>>>>>>>>>>>>>>>>>> all green tests. No more than that. I don't have a Glorp + native postgresql >>>>>>>>>>>>>>>>>>>>>> driver application. Anyway, I will try to help you ;) >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> My app frequently losses the connection the >>>>>>>>>>>>>>>>>>>>>>> Postgres, and throws a "Connection not Valid" exception. Unfortunately on >>>>>>>>>>>>>>>>>>>>>>> the latest Pharo images, there is a bug that causes this to write the stack >>>>>>>>>>>>>>>>>>>>>>> trace to disk, and then the image locks up. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> you meat there is a Pharo bug that when there is >>>>>>>>>>>>>>>>>>>>>> a walkback and the stacktrace is written to disk, it freezes the image ? is >>>>>>>>>>>>>>>>>>>>>> there a bug report of that ? Could you reproduce that ? >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> I think the socket on the PGConnection class >>>>>>>>>>>>>>>>>>>>>>> is being closed or times out, and I need to know is there someway that I can >>>>>>>>>>>>>>>>>>>>>>> debug this or if its a know issue. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Yes, that's probably the case. I can see in code >>>>>>>>>>>>>>>>>>>>>> that the error 'Connection not valid' when the connection is not connected >>>>>>>>>>>>>>>>>>>>>> or if it is nil. If you see your stacktrace, you can see that the socket >>>>>>>>>>>>>>>>>>>>>> variable is nil. That's why the error. Now, the question is why the socket >>>>>>>>>>>>>>>>>>>>>> is nil ? >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> I looked for the code to see where can be the >>>>>>>>>>>>>>>>>>>>>> socket set to nil, and I found some places: PGConnection stTerminalError: >>>>>>>>>>>>>>>>>>>>>> , stTerminated >>>>>>>>>>>>>>>>>>>>>> Perhaps you can put a "self halt" in those >>>>>>>>>>>>>>>>>>>>>> methods and then debug them. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> The PGConnection seems to do a lot of "self log: >>>>>>>>>>>>>>>>>>>>>> 'XXXX'". So, perhaps you can have a Transcript opened to see that. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Finally, why don't you give a try to GlorpDBX + >>>>>>>>>>>>>>>>>>>>>> SqueakDBX ? It works pretty well and has good performance. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> I hope this helps. Remember I am not a native >>>>>>>>>>>>>>>>>>>>>> postgresql driver guru. Perhaps you can ask also in squeak-dev or pharo >>>>>>>>>>>>>>>>>>>>>> mailing lists. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Mariano >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> I am using the latest Pharo image, with the >>>>>>>>>>>>>>>>>>>>>>> latest Pharo-Glorp package, and the newest Postgres driver. I think this is >>>>>>>>>>>>>>>>>>>>>>> the relevant part of the stack trace :- >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> PGConnection(Object)>>error: >>>>>>>>>>>>>>>>>>>>>>> Receiver: a PGConnection >>>>>>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>>>>>> aString: 'Connection not valid' >>>>>>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>>>>>> trace: 0 >>>>>>>>>>>>>>>>>>>>>>> state: #Terminated >>>>>>>>>>>>>>>>>>>>>>> events: an OrderedCollection() >>>>>>>>>>>>>>>>>>>>>>> socket: nil >>>>>>>>>>>>>>>>>>>>>>> readBuffer: 'PblankT id ��name �$password >>>>>>>>>>>>>>>>>>>>>>> �6client...etc... >>>>>>>>>>>>>>>>>>>>>>> readIndex: 384 >>>>>>>>>>>>>>>>>>>>>>> lastReadIndex: 384 >>>>>>>>>>>>>>>>>>>>>>> writeBuffer: nil >>>>>>>>>>>>>>>>>>>>>>> processId: 28132 >>>>>>>>>>>>>>>>>>>>>>> secretKey: 1795051851 >>>>>>>>>>>>>>>>>>>>>>> sql: 'SELECT t1.id, t1.name, t1.password, >>>>>>>>>>>>>>>>>>>>>>> t1.client, t1.role, t1.mobile, t1.ema...etc... >>>>>>>>>>>>>>>>>>>>>>> functionCallOid: nil >>>>>>>>>>>>>>>>>>>>>>> functionCallArgs: nil >>>>>>>>>>>>>>>>>>>>>>> copyStream: nil >>>>>>>>>>>>>>>>>>>>>>> result: a PGResult >>>>>>>>>>>>>>>>>>>>>>> connectionArgs: a PGConnectionArgs >>>>>>>>>>>>>>>>>>>>>>> notificationSubscribers: nil >>>>>>>>>>>>>>>>>>>>>>> fieldConverters: an >>>>>>>>>>>>>>>>>>>>>>> IdentityDictionary(16->[closure] in PGConnection class>>boo...etc... >>>>>>>>>>>>>>>>>>>>>>> sqlStringConverter: [closure] in >>>>>>>>>>>>>>>>>>>>>>> PGConnection>>clientEncoding: >>>>>>>>>>>>>>>>>>>>>>> receivingTextConverter: an UTF8TextConverter >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> PGConnection>>execute: >>>>>>>>>>>>>>>>>>>>>>> Receiver: a PGConnection >>>>>>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>>>>>> sqlString: 'SELECT t1.id, t1.typename, >>>>>>>>>>>>>>>>>>>>>>> t1.description, t1.selectioncount, t1.pr...etc... >>>>>>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>>>>>> trace: 0 >>>>>>>>>>>>>>>>>>>>>>> state: #Terminated >>>>>>>>>>>>>>>>>>>>>>> events: an OrderedCollection() >>>>>>>>>>>>>>>>>>>>>>> socket: nil >>>>>>>>>>>>>>>>>>>>>>> readBuffer: 'PblankT id ��name �$password >>>>>>>>>>>>>>>>>>>>>>> �6client...etc... >>>>>>>>>>>>>>>>>>>>>>> readIndex: 384 >>>>>>>>>>>>>>>>>>>>>>> lastReadIndex: 384 >>>>>>>>>>>>>>>>>>>>>>> writeBuffer: nil >>>>>>>>>>>>>>>>>>>>>>> processId: 28132 >>>>>>>>>>>>>>>>>>>>>>> secretKey: 1795051851 >>>>>>>>>>>>>>>>>>>>>>> sql: 'SELECT t1.id, t1.name, t1.password, >>>>>>>>>>>>>>>>>>>>>>> t1.client, t1.role, t1.mobile, t1.ema...etc... >>>>>>>>>>>>>>>>>>>>>>> functionCallOid: nil >>>>>>>>>>>>>>>>>>>>>>> functionCallArgs: nil >>>>>>>>>>>>>>>>>>>>>>> copyStream: nil >>>>>>>>>>>>>>>>>>>>>>> result: a PGResult >>>>>>>>>>>>>>>>>>>>>>> connectionArgs: a PGConnectionArgs >>>>>>>>>>>>>>>>>>>>>>> notificationSubscribers: nil >>>>>>>>>>>>>>>>>>>>>>> fieldConverters: an >>>>>>>>>>>>>>>>>>>>>>> IdentityDictionary(16->[closure] in PGConnection class>>boo...etc... >>>>>>>>>>>>>>>>>>>>>>> sqlStringConverter: [closure] in >>>>>>>>>>>>>>>>>>>>>>> PGConnection>>clientEncoding: >>>>>>>>>>>>>>>>>>>>>>> receivingTextConverter: an UTF8TextConverter >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> SqueakDatabaseAccessor>>basicExecuteSQLString: >>>>>>>>>>>>>>>>>>>>>>> Receiver: a SqueakDatabaseAccessor >>>>>>>>>>>>>>>>>>>>>>> Arguments and temporary variables: >>>>>>>>>>>>>>>>>>>>>>> aString: 'SELECT t1.id, t1.typename, >>>>>>>>>>>>>>>>>>>>>>> t1.description, t1.selectioncount, t1.prio...etc... >>>>>>>>>>>>>>>>>>>>>>> result: nil >>>>>>>>>>>>>>>>>>>>>>> rowCollection: nil >>>>>>>>>>>>>>>>>>>>>>> Receiver's instance variables: >>>>>>>>>>>>>>>>>>>>>>> connection: a PGConnection >>>>>>>>>>>>>>>>>>>>>>> currentLogin: a Login(a PostgreSQLPlatform, >>>>>>>>>>>>>>>>>>>>>>> 'postgres', '847129', 'localhost_ju...etc... >>>>>>>>>>>>>>>>>>>>>>> logging: true >>>>>>>>>>>>>>>>>>>>>>> reusePreparedStatements: nil >>>>>>>>>>>>>>>>>>>>>>> deniedCommands: nil >>>>>>>>>>>>>>>>>>>>>>> mutex: a Semaphore() >>>>>>>>>>>>>>>>>>>>>>> dependents: nil >>>>>>>>>>>>>>>>>>>>>>> isInTransaction: false >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Any help would be appreciated, as this is >>>>>>>>>>>>>>>>>>>>>>> stopping me from going to a Beta test at the moment. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>>>>>>> SqueakDBX mailing list >>>>>>>>>>>>>>>>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> -JT >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> -JT >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>> SqueakDBX mailing list >>>>>>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>>>>>> >>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> -JT >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> SqueakDBX mailing list >>>>>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>>>>> >>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> -JT >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> SqueakDBX mailing list >>>>>>>> SqueakDBX@lists.squeakfoundation.org >>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> -JT >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> -JT >>>>> >>>>> >>>>> >>>> >>> >>> >>> -- >>> -JT >>> >>> >>> >> >
-- -JT
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
-- -JT
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
-- -JT
-- -JT
SqueakDBX mailing list SqueakDBX@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
squeakdbx@lists.squeakfoundation.org