Actually, if I were to attempt "going native" with an Oracle driver I am not sure I would build it on top of OCI. I would probably attempt to with a pure "thin" driver ala the JDBC thin drivers using sockets directly in Squeak and eliminating FFI all together. (See http://www.lc.leidenuniv.nl/awcourse/oracle/java.920/a96654/overvw.htm) for an overview of the different types of drivers
----------=-=-=-=-=-=-=-=-========oOo========-=-=-=-=-=-=-=-=---------- mailto:Ronald.P.Welch@baesystems.com Phone:(607)770-3701 BAE SYSTEMS Controls 600 Main St Johnson City, NY 13790-1888 ----------=-=-=-=-=-=-=-=-===================-=-=-=-=-=-=-=-=----------
-----Original Message----- From: Avi Bryant [mailto:avi.bryant@gmail.com] Sent: Monday, November 29, 2004 4:52 PM To: The general-purpose Squeak developers list Subject: Connecting to Oracle (was: ODBC connection)
On Mon, 29 Nov 2004 13:26:15 -0800, John M McIntosh
johnmci@smalltalkconsulting.com wrote:
If you dig around you'll find the Oracle Call Interface is documented by Oracle in one of their publications. This is what VW uses at the lowest
level.
It's straight C code binding to atomic values or arrays. This could easily be done in FFI.
mmm let's see http://www.csee.umbc.edu/help/oracle8/server.815/a67846/toc.htm
Hmm... but concurrent calls may still be a problem. Good news: their non-blocking interface uses polling rather than callbacks (so would work with FFI). Bad news:
" While waiting to retry non-blocking OCI call, the application may not issue any other OCI calls, or an ORA-03124 error will occur. The only exceptions to this rule are OCIBreak() and OCIReset(). See "Cancelling a Non-blocking Call" for more information on these calls. ".
So, you won't block the whole VM, but your Oracle queries will be strictly serialized.
Avi
On Mon, 29 Nov 2004 17:01:52 -0500, Welch, Ronald P (US SSA) ronald.p.welch@baesystems.com wrote:
Actually, if I were to attempt "going native" with an Oracle driver I am not sure I would build it on top of OCI. I would probably attempt to with a pure "thin" driver ala the JDBC thin drivers using sockets directly in Squeak and eliminating FFI all together.
Yeah, that would be great, but where are the protocol docs? I don't know of any third-party implementations of such "thin" drivers (and only one, for Java, provided by Oracle), so I assume it's not an easy task - compare with Postgres, which must have dozens of client implementations (there are at least 3 for Smalltalk alone).
Avi
squeak-dev@lists.squeakfoundation.org