Stef wrote:>Now I do not get it.
> Did you port it to Pharo?
I spend about a day evaluating it in 40272.
I looked at three packages (and their two test packages).
PostgresV3-Core handles the V3 protocol, makes a connection
using a socket, provides a result set with rows, columns and
text converters.
I got a few problems in the unit tests, looks like something in the
way floats are handled is different (PG3SocketReadStream>>parseFloatLength:
and there is a method missing PG3SocketReadStream>>parseScaledDecimal
PostgresV3-Pool provides a connection pool.
I was able to use that to connect to a database, execute queries and get
data out of it. Issues there are trivial:
PG3Connection>>md5HashMessage: aString
^Smalltalk globals
at: #MD5
ifPresent: [ :md5 | (md5 hashMessage: aString) hex asLowercase ]
ifAbsent: [ WebUtils md5Digest: aString ]
We don't have WebUtils, but we have MD5
Then there is PostgresV3-CodeMirror.
In PG3SchemaMirror there are some overrides to select a different
compiler (+parser) and code highlighter. That allows subclasses
to have plsql functions as methods, using the PG3FunctionMirror.
In Pharo, I couldn't easily find how to change the code highlighter in Nautilus.
The PG3Compiler just changes the parser used to PG3Parser.
The PG3Parser is a subclass from the squeak parser and so uses some things that work a bit different
PG3Parser>>checkSyntaxFor: uses a cue instance variable. It is not a full plsql parser, relying on the
database to check syntax.
PG3SchemaChanges uses Toolbuilder to show a window with the differences between the functions in the
database and those in the image and select which ones to change.
Stephan