diff options
Diffstat (limited to 'src/interfaces/jdbc/Implementation')
-rw-r--r-- | src/interfaces/jdbc/Implementation | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/src/interfaces/jdbc/Implementation b/src/interfaces/jdbc/Implementation new file mode 100644 index 00000000000..05ceee2a3cf --- /dev/null +++ b/src/interfaces/jdbc/Implementation @@ -0,0 +1,123 @@ +This short document is provided to help programmers through the internals of +the PostgreSQL JDBC driver. + +Makefile +-------- + +All compilation must be done by using Make. This is because there are two +versions of the driver, one for JDBC1 (for JDK 1.1.x) and the other for JDBC2 +(for JDK 1.2 or later). The makefile determines which version to compile by +using a helper class makeVersion. This class is only used by make, and is not +stored in the Jar file. + +Note: It is not sufficient to simply call javac on postgresql/Driver.java as + some classes are dynamically loaded, so javac will not compile them. + +postgresql.jar +-------------- + +This jar file is produced by make, and contains the driver for your JDK +platform. + +Note: It is possible to compile the driver under say JDK1.1.7, then under + JDK 1.2. Because make doesn't remove the old classes before compiling, + jar will simply package both sets together. When the driver is loaded, + the postgresql.Driver class will sort out which set of classes to use. + +Importing packages +------------------ + +In user code, you may have to import one or more packages, if and only if you +are using the non jdbc extensions (like FastPath, or LargeObject). + +DO NOT import the postgresql, postgresql.jdbc1 or postgresql.jdbc2 packages! + +Internally, some classes will import the packages when there is a link between +them and the other packages. However, the above rule still applies. It's there +because Javac becomes confused between the different places that similar class +names are present. + +However, there are places where they need to refer to classes in the postgresql +package. In this case, import the individual classes, and not the entire +package. + +ie: import postgresql.Field + + NOT import postgresql.* + +Package Layout +-------------- + +The driver is split into several packages: + +postgresql core classes, common to both JDBC 1 & 2 +postgresql.jdbc1 classes used only in implementing JDBC 1 +postgresql.jdbc2 classes used only in implementing JDBC 2 +postgresql.fastpath FastPath to backend functions +postgresql.geometric 2D Geometric types mapped to Java Objects +postgresql.largeobject Low level Large Object access +postgresql.util Utility classes + + +Package postgresql +------------------ + +This package holds the core classes. + +Driver registers the driver when it's loaded, and determines which + Connection class (in jdbc1 or jdbc2 packages) to use when + connecting to a database. + +Field Used internally to represent a Field +PG_Stream Used internally to manage the network stream. + + These classes contains common code that is not dependent to the + two JDBC specifications. + +Connection Common code used in Connections, mainly Network Protocol stuff. +ResultSet Common code used in ResultSet's + +Package postgresql.fastpath +--------------------------- + +Fastpath Handles executing a function on the PostgreSQL Backend +FastpathArg Defines an argument for a function call + +Package postgresql.geometric +---------------------------- + +PGbox Maps to postgresql type box +PGcircle Maps to postgresql type circle +PGline Maps to postgresql type line +PGlseg Maps to postgresql type lseg +PGpath Maps to postgresql type path +PGpoint Maps to postgresql type point +PGpolygon Maps to postgresql type polygon + +Package postgresql.jdbc1 +------------------------ + +The classes in this package handle the JDBC 1 Specification, for JDK 1.1.x +All interfaces in the java.sql package are present here. + +Package postgresql.jdbc2 +------------------------ + +The classes in this package handle the JDBC 2 Specification, for JDK 1.2 +All interfaces in the java.sql, and javax.sql packages are present here. + +Package postgresql.largeobject +------------------------------ + +LargeObject Represents an open LargeObject +LargeObjectManager Handles the opening and deleting of LargeObjects + +Package postgresql.util +----------------------- + +PGmoney Maps to postgresql type money +PGobject Used to represent postgresql types that have no Java equivalent +PGtokenizer Helper class for the geometric types +Serialize Used to serialise Java objects into tabes, rather than Blobs +UnixCrypt Used to handle crypt authentication + |