[SqueakDBX] Connection not Valid problem

Mariano Martinez Peck marianopeck at gmail.com
Thu Oct 1 19:33:25 UTC 2009


I fordward the email to the list.

On Thu, Oct 1, 2009 at 4:05 PM, John Toohey <jt at 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 at 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 at 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 at 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 at 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 at 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 at 397 corner: 1792 at 583
>>>>>> owner: a PluggableStandardWindow(1639)
>>>>>>  submorphs: an Array(a TransformMorph(3663))
>>>>>> fullBounds: 1481 at 397 corner: 1792 at 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 at 408 mouseUp 57402925 nil]
>>>>>> row: 1
>>>>>>  mdr: 1
>>>>>> Receiver's instance variables:
>>>>>>  bounds: 1481 at 397 corner: 1792 at 583
>>>>>> owner: a PluggableStandardWindow(1639)
>>>>>>  submorphs: an Array(a TransformMorph(3663))
>>>>>> fullBounds: 1481 at 397 corner: 1792 at 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 at 408 mouseUp 57402925 nil]
>>>>>> Receiver's instance variables:
>>>>>>  bounds: 1481 at 397 corner: 1792 at 583
>>>>>> owner: a PluggableStandardWindow(1639)
>>>>>>  submorphs: an Array(a TransformMorph(3663))
>>>>>> fullBounds: 1481 at 397 corner: 1792 at 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 at 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 at 408
>>>>>> handler: nil
>>>>>>  wasHandled: true
>>>>>> whichButton: 4
>>>>>>
>>>>>> PluggableListMorphPlus(Morph)>>handleEvent:
>>>>>> Receiver: a PluggableListMorphPlus(3968)
>>>>>> Arguments and temporary variables:
>>>>>>  anEvent: [1546 at 408 mouseUp 57402925 nil]
>>>>>> Receiver's instance variables:
>>>>>>  bounds: 1481 at 397 corner: 1792 at 583
>>>>>> owner: a PluggableStandardWindow(1639)
>>>>>>  submorphs: an Array(a TransformMorph(3663))
>>>>>> fullBounds: 1481 at 397 corner: 1792 at 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 at 408 mouseUp 57402925 nil]
>>>>>>  aMorph: a PluggableListMorphPlus(3968)
>>>>>> localEvt: [1546 at 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 at 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 at 408 mouseUp 57402925 nil]
>>>>>> defaultDispatcher: a MorphicEventDispatcher
>>>>>>  Receiver's instance variables:
>>>>>> bounds: 1481 at 397 corner: 1792 at 583
>>>>>>  owner: a PluggableStandardWindow(1639)
>>>>>> submorphs: an Array(a TransformMorph(3663))
>>>>>>  fullBounds: 1481 at 397 corner: 1792 at 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 at 408 mouseUp 57402925 nil]
>>>>>> Receiver's instance variables:
>>>>>>  bounds: 1481 at 397 corner: 1792 at 583
>>>>>> owner: a PluggableStandardWindow(1639)
>>>>>>  submorphs: an Array(a TransformMorph(3663))
>>>>>> fullBounds: 1481 at 397 corner: 1792 at 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 at 408 mouseUp 57402925 nil]
>>>>>> Receiver's instance variables:
>>>>>>  bounds: 1481 at 397 corner: 1792 at 583
>>>>>> owner: a PluggableStandardWindow(1639)
>>>>>>  submorphs: an Array(a TransformMorph(3663))
>>>>>> fullBounds: 1481 at 397 corner: 1792 at 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 at 619 corner: 1087 at 635
>>>>>>  owner: a PasteUpMorph(1622) [world]
>>>>>> submorphs: #()
>>>>>>  fullBounds: 1071 at 619 corner: 1087 at 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 at 619 1071 at 619 mouseMove 57619819 nil]
>>>>>> targetOffset: 188 at 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 at 0 corner: 1920 at 1178
>>>>>>  owner: nil
>>>>>> submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a
>>>>>> PluggableStanda...etc...
>>>>>>  fullBounds: 0 at 0 corner: 1920 at 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 at 408 mouseOver red nil nil]
>>>>>> Receiver's instance variables:
>>>>>>  bounds: 0 at 0 corner: 1920 at 1178
>>>>>> owner: nil
>>>>>>  submorphs: an Array(a TaskbarMorph(3095) a SystemWindow(3955) a
>>>>>> PluggableStanda...etc...
>>>>>>  fullBounds: 0 at 0 corner: 1920 at 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 at 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 at 619 corner: 1087 at 635
>>>>>> owner: a PasteUpMorph(1622) [world]
>>>>>>  submorphs: #()
>>>>>> fullBounds: 1071 at 619 corner: 1087 at 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 at 619 1071 at 619 mouseMove 57619819 nil]
>>>>>>  targetOffset: 188 at 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 at gmail.com> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Sep 25, 2009 at 12:07 PM, John Toohey <jt at parspro.com>wrote:
>>>>>>>
>>>>>>>> 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 at gmail.com> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Fri, Sep 25, 2009 at 12:21 PM, Mariano Martinez Peck <
>>>>>>>>> marianopeck at gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Fri, Sep 25, 2009 at 12:04 PM, John Toohey <jt at 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 at gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Sep 24, 2009 at 10:12 PM, John Toohey <jt at 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 at gmail.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 3:13 PM, John Toohey <jt at 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 at gmail.com> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 3:06 PM, John Toohey <
>>>>>>>>>>>>>>>> jt at 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 at gmail.com> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Thu, Sep 24, 2009 at 1:59 PM, John Toohey <
>>>>>>>>>>>>>>>>>> jt at 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 at gmail.com> wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 11:27 PM, John Toohey <
>>>>>>>>>>>>>>>>>>>> jt at 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 at 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 at gmail.com> wrote:
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> On Wed, Sep 23, 2009 at 8:25 PM, John Toohey <
>>>>>>>>>>>>>>>>>>>>>>> jt at 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 at lists.squeakfoundation.org
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>> -JT
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>> -JT
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>> -JT
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> -JT
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> SqueakDBX mailing list
>>>>>>>>>>>>>> SqueakDBX at lists.squeakfoundation.org
>>>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> -JT
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> SqueakDBX mailing list
>>>>>>>>>>>> SqueakDBX at lists.squeakfoundation.org
>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> -JT
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> SqueakDBX mailing list
>>>>>>>>> SqueakDBX at lists.squeakfoundation.org
>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> -JT
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> -JT
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> -JT
>>>>
>>>>
>>>>
>>>
>>
>
>
> --
> -JT
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeakdbx/attachments/20091001/1a7cf7ca/attachment-0001.htm


More information about the SqueakDBX mailing list