[SqueakDBX] Connection not Valid problem

John Toohey jt at parspro.com
Sun Oct 4 20:39:50 UTC 2009


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 at 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 at gmail.com
> > wrote:
>
>>
>>
>> On Sat, Oct 3, 2009 at 1:39 PM, John Toohey <jt at 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 at gmail.com> wrote:
>>>
>>>> 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
>>>>>
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>>
>>>
>>
>> _______________________________________________
>> SqueakDBX mailing list
>> SqueakDBX at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
>>
>>
>
>
> --
> -JT
>
>
>


-- 
-JT
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeakdbx/attachments/20091004/1c12ef30/attachment-0001.htm


More information about the SqueakDBX mailing list