Login  Register

Re: Glorp & PostgresV2

Posted by Sven Van Caekenberghe on Jun 11, 2010; 8:49am
URL: https://forum.world.st/Glorp-PostgresV2-tp2250501p2251472.html

Mariano,

I had to change PGConnection class>>#timestampWithTimezoneConverter otherwise it wouldn't want to parse my timestamp with time zone colums that look like '2010-06-16 00:01:00+02' (no millis to skip, no minutes in the offset). Now, my fix is a bit dirty, because it assumes that what I see on my system is the rule while it probably isn't.

timestampWithTimezoneConverter

        ^[ :s |
                | direction offset |
                direction := (s at: 20) = $- ifTrue: [ -1 ] ifFalse: [ 1 ].
                offset := Duration
                        hours: (s copyFrom: 21 to: 22) asInteger * direction.
                DateAndTime
                        year: (s copyFrom: 1 to: 4) asInteger
                        month: (s copyFrom: 6 to: 7) asInteger
                        day: (s copyFrom: 9 to: 10) asInteger
                        hour: (s copyFrom: 12 to: 13) asInteger
                        minute: (s copyFrom: 15 to: 16) asInteger
                        second: (s copyFrom: 18 to: 19) asInteger
                        offset: offset ]

I can definitively write a better version that handles different kinds of formats in a flexible way. I also think the #copyFrom:to:'s are waistful and could at least be replaced with ReadStream>>#on:from:to:'s. This goes for some other converters as well. This code is execute for each column so seems resource critical.

This change did not come up as a failed unit test, so maybe I should also try to add one ?

On my Pharo 1.0 image, all PGConnection tests pass.

Of the 844 GlorpTest tests, 2 fail: GlorpRowMapForMementosCollectionTest>>#testRBSmallDictionary and GlorpSelectCommandTest>>#testExecute. GlorpTest-DBTests all succeed. GlorpMainBackendTest fails.

I also had to add NativePostgresDriver>>#externalDatabaseErrorSignal

externalDatabaseErrorSignal
        ^Dialect error

This also came up during day to day usage and not as a test failure.

So, for Glorp itself there were no real problems ;-)

Maybe just one feature request: on VW NC 7.7 Glorp (when you enable logging) prints timing info on all queries, on Pharo only for updates and deletes, which is strange.

Sven

On 11 Jun 2010, at 00:32, Mariano Martinez Peck wrote:

>
>
> On Thu, Jun 10, 2010 at 9:07 PM, Sven Van Caekenberghe <[hidden email]> wrote:
> Mariano,
>
> The fact that you did the port is more than official enough for me ;-)
>
> First, thanks a lot for the port, I know that this must be a lot of work.
>
> I think that Glorp and the different drivers are _very_ important for many people: talking to an RDBMS is an absolute requirement in almost any serious application. Without it, Pharo/Seaside becomes almost unusable in most commercial contexts. Only in some specific cases the other persistency strategies would be applicable.
>
> Thanks. This is exactly why we did SqueakDBX ;) and then GlorpDBX.
>  
>
> I would very much like to help in making the Glorp+PostgreSQL combination easy to use in Pharo. Writing a ConfigurationOf.. is a bit to much for me right now though.
>
>
> Great. So, at least, we should make it work, then we see how to load it.  
>
>  
>
> Concerning my changes, I can send them to you, or save modified versions of the packages where you want. BTW, I was working on Pharo 1.0
>
> mmmmm I thought Glorp was already working in 1.0. Weird...which are the changes? yes, please send me your changes. We have committed Glorp packages in SqueakDBX repository as we have been changing a lot of things. A big refactor to Glorp in order to support multiple database drivers.
>
> You can send me the changes or commit them to the packages that are in SqueakDBX repository at least. I am not sure in Glorp original repository, but at least in SqueakDBX repository for sure:  http://www.squeaksource.com/SqueakDBX
>
> Please, run all the tests before comitting.
>
> Cheers
>
> Mariano
>
>  
>
> Should we continue this discussion over the mailing list or privately ?
>
> Sven
>
>
>
>
>
>
> _______________________________________________
> Pharo-users mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users
>
> _______________________________________________
> Pharo-users mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users


_______________________________________________
Pharo-users mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users