On Sat, 28 Jun 2003, Kurt Roeckx wrote:
> On Thu, Jun 26, 2003 at 08:02:01AM -0400, Kris Jurka wrote: > > > > > > On Thu, 26 Jun 2003, Manuel Gil [iso-8859-1] Pérez wrote: > > > > > Hi all. > > > > > > I have a Java application that it connects to the PostgreSQL database with > > > IPv6 patch installed. > > > > > What exactly do you have for the URL in the first argument to > > getConnection? If you have a direct IPv6 address like > > jdbc:postgresql://::1 it will not work at the moment because it tries to > > parse the url using the colon as a delimiter which works fine for IPv4 > > addresses, but not IPv6 see org.postgresql.Driver#parseURL for more info. > > > > What happens if you are using a name that resolves to an IPv6 address? > > You're probably the first person to actually try this. I will look into > > this further, but it may take me a while to get IPv6 up and running on my > > machine. > > Did you get it working yet? > > > Kurt > The following patch allows you to connect using an IPv6 address by enclosing it in square brackets. jdbc:postgresql://[::1]:5432/dbname Additionally some minor cleanup to JDBC docs, adding <acronym> tags, mentioning JDBC 3 support, and cross referencing the installation instructions. Kris Jurka
Index: src/interfaces/jdbc/org/postgresql/Driver.java.in =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/Driver.java.in,v retrieving revision 1.30 diff -c -r1.30 Driver.java.in *** src/interfaces/jdbc/org/postgresql/Driver.java.in 29 May 2003 04:39:51 -0000 1.30 --- src/interfaces/jdbc/org/postgresql/Driver.java.in 29 Jun 2003 11:15:53 -0000 *************** *** 272,277 **** --- 272,288 ---- l_urlArgs = url.substring(l_qPos+1); } + // look for an IPv6 address that is enclosed by [] + // the upcoming parsing that uses colons as identifiers can't handle + // the colons in an IPv6 address. + int ipv6start = l_urlServer.indexOf("["); + int ipv6end = l_urlServer.indexOf("]"); + String ipv6address = null; + if (ipv6start != -1 && ipv6end > ipv6start) { + ipv6address = l_urlServer.substring(ipv6start+1,ipv6end); + l_urlServer = l_urlServer.substring(0,ipv6start)+"ipv6host"+l_urlServer.substring(ipv6end+1); + } + //parse the server part of the url StringTokenizer st = new StringTokenizer(l_urlServer, ":/", true); for (int count = 0; (st.hasMoreTokens()); count++) *************** *** 345,350 **** --- 356,365 ---- } } } + + // if we extracted an IPv6 address out earlier put it back + if (ipv6address != null) + urlProps.put("PGHOST",ipv6address); //parse the args part of the url StringTokenizer qst = new StringTokenizer(l_urlArgs, "&"); Index: doc/src/sgml/jdbc.sgml =================================================================== RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/jdbc.sgml,v retrieving revision 1.44 diff -c -r1.44 jdbc.sgml *** doc/src/sgml/jdbc.sgml 7 Apr 2003 01:29:25 -0000 1.44 --- doc/src/sgml/jdbc.sgml 29 Jun 2003 11:15:54 -0000 *************** *** 33,39 **** <para> This section describes the steps you need to take before you can ! write or run programs that use the JDBC interface. </para> <sect2 id="jdbc-build"> --- 33,39 ---- <para> This section describes the steps you need to take before you can ! write or run programs that use the <acronym>JDBC</> interface. </para> <sect2 id="jdbc-build"> *************** *** 49,63 **** <para> Alternatively you can build the driver from source, but you should only need to do this if you are making changes to the source code. ! For details, refer to the <productname>PostgreSQL</> installation ! instructions. After installation, the driver should be found in <filename><replaceable>PREFIX</>/share/java/postgresql.jar</filename>. The resulting driver will be built for the version of Java you are running. If you build with a 1.1 <acronym>JDK</> you will build a ! version that supports the JDBC 1 specification, if you build with ! a Java 2 <acronym>JDK</> (e.g., <acronym>JDK</> 1.2 or ! <acronym>JDK</> 1.3) you will build a version that supports the ! JDBC 2 specification. </para> </sect2> --- 49,65 ---- <para> Alternatively you can build the driver from source, but you should only need to do this if you are making changes to the source code. ! For details, refer to the <productname>PostgreSQL</> ! <link linkend="installation">installation instructions</link>. ! After installation, the driver should be found in <filename><replaceable>PREFIX</>/share/java/postgresql.jar</filename>. The resulting driver will be built for the version of Java you are running. If you build with a 1.1 <acronym>JDK</> you will build a ! version that supports the <acronym>JDBC</> 1 specification, if you build ! with a 1.2 or 1.3 <acronym>JDK</> you will build a version that supports ! the <acronym>JDBC</> 2 specification, and finally if you build with a ! 1.4 <acronym>JDK</acronym> you will build a version that supports the ! <acronym>JDBC</> 3 specification. </para> </sect2> *************** *** 67,78 **** <para> To use the driver, the JAR archive (named <filename>postgresql.jar</filename> if you built from source, otherwise ! it will likely be named <filename>jdbc&majorversion;-1.1.jar</filename> or ! <filename>jdbc&majorversion;-1.2.jar</filename> for the JDBC 1 and JDBC 2 versions ! respectively) ! needs to be included in the ! class path, either by putting it in the <envar>CLASSPATH</envar> ! environment variable, or by using flags on the <command>java</command> command line. </para> --- 69,80 ---- <para> To use the driver, the JAR archive (named <filename>postgresql.jar</filename> if you built from source, otherwise ! it will likely be named <filename>pg&majorversion;jdbc1.jar</filename>, ! <filename>pg&majorversion;jdbc2.jar</filename>, or ! <filename>pg&majorversion;jdbc3.jar</filename> for the <acronym>JDBC</> 1, ! <acronym>JDBC</> 2, and <acronym>JDBC</> 3 versions respectively) ! needs to be included in the class path, either by putting it in the ! <envar>CLASSPATH</envar> environment variable, or by using flags on the <command>java</command> command line. </para> *************** *** 81,87 **** <acronym>JDBC</acronym> driver to access a database, and that application is installed as <filename>/usr/local/lib/myapp.jar</filename>. The PostgreSQL ! JDBC driver installed as <filename>/usr/local/pgsql/share/java/postgresql.jar</>. To run the application, we would use: <programlisting> --- 83,89 ---- <acronym>JDBC</acronym> driver to access a database, and that application is installed as <filename>/usr/local/lib/myapp.jar</filename>. The PostgreSQL ! <acronym>JDBC</> driver installed as <filename>/usr/local/pgsql/share/java/postgresql.jar</>. To run the application, we would use: <programlisting> *************** *** 113,120 **** Also, the client authentication setup in the <filename>pg_hba.conf</filename> file may need to be configured. Refer to <xref linkend="client-authentication"> for details. The ! <acronym>JDBC</acronym> driver supports the trust, ident, ! password, md5, and crypt authentication methods. </para> </sect2> </sect1> --- 115,123 ---- Also, the client authentication setup in the <filename>pg_hba.conf</filename> file may need to be configured. Refer to <xref linkend="client-authentication"> for details. The ! <acronym>JDBC</acronym> driver supports the <literal>trust</>, ! <literal>ident</>, <literal>password</>, <literal>md5</>, and ! <literal>crypt</> authentication methods. </para> </sect2> </sect1> *************** *** 123,130 **** <title>Initializing the Driver</title> <para> ! This section describes how to load and initialize the JDBC driver ! in your programs. </para> <sect2 id="jdbc-import"> --- 126,133 ---- <title>Initializing the Driver</title> <para> ! This section describes how to load and initialize the <acronym>JDBC</> ! driver in your programs. </para> <sect2 id="jdbc-import"> *************** *** 252,258 **** </term> <listitem> <para> ! The host name of the server. Defaults to <literal>localhost</literal>. </para> </listitem> </varlistentry> --- 255,264 ---- </term> <listitem> <para> ! The host name of the server. Defaults to <literal>localhost</literal>. To specify an IPv6 address your must enclose the <replaceable class="parameter">host</replaceable> parameter with square brackets, for example: ! <programlisting> ! jdbc:postgresql://[::1]:5740/accounting ! </programlisting> </para> </listitem> </varlistentry> *************** *** 451,466 **** </para> </listitem> - <listitem> - <para> - <classname>ResultSet</classname> is currently read only. - You can not update data through the <classname>ResultSet</classname>. - If you want to update data you need to do it the normal way - by using the <acronym>SQL</acronym> statement <command>UPDATE</command>. This is - in conformance with the <acronym>JDBC</acronym> specification - which does not require drivers to provide updatable result sets. - </para> - </listitem> </itemizedlist> </para> </sect2> --- 457,462 ---- *************** *** 606,616 **** <para> <xref linkend="jdbc-binary-data-example"> contains some examples on ! how to process binary data using the PostgreSQL JDBC driver. </para> <example id="jdbc-binary-data-example"> ! <title>Processing Binary Data in JDBC</title> <para> For example, suppose you have a table containing the file names of --- 602,612 ---- <para> <xref linkend="jdbc-binary-data-example"> contains some examples on ! how to process binary data using the PostgreSQL <acronym>JDBC</> driver. </para> <example id="jdbc-binary-data-example"> ! <title>Processing Binary Data in <acronym>JDBC</></title> <para> For example, suppose you have a table containing the file names of *************** *** 2490,2501 **** <title>Connection Pools and Data Sources</title> <para> ! JDBC 2 introduced standard connection pooling features in an ! add-on API known as the <acronym>JDBC</acronym> 2.0 Optional Package (also known as the <acronym>JDBC</acronym> 2.0 Standard Extension). These features have since been included in ! the core JDBC 3 API. The <productname>PostgreSQL</productname> ! <acronym>JDBC</acronym> drivers support these features if it has been compiled with <acronym>JDK</acronym> 1.3.x in combination with the <acronym>JDBC</acronym> 2.0 Optional Package (<acronym>JDBC</acronym> 2), or with <acronym>JDK</acronym> 1.4 or higher --- 2486,2498 ---- <title>Connection Pools and Data Sources</title> <para> ! <acronym>JDBC</> 2 introduced standard connection pooling features in an ! add-on <acronym>API</> known as the <acronym>JDBC</acronym> 2.0 Optional Package (also known as the <acronym>JDBC</acronym> 2.0 Standard Extension). These features have since been included in ! the core <acronym>JDBC</> 3 <acronym>API</>. The ! <productname>PostgreSQL</productname> <acronym>JDBC</acronym> drivers ! support these features if it has been compiled with <acronym>JDK</acronym> 1.3.x in combination with the <acronym>JDBC</acronym> 2.0 Optional Package (<acronym>JDBC</acronym> 2), or with <acronym>JDK</acronym> 1.4 or higher *************** *** 2510,2516 **** <title>Overview</title> <para> ! The <acronym>JDBC</acronym> API provides a client and a server interface for connection pooling. The client interface is <literal>javax.sql.DataSource</literal>, which is what application code will typically use to --- 2507,2513 ---- <title>Overview</title> <para> ! The <acronym>JDBC</acronym> <acronym>API</> provides a client and a server interface for connection pooling. The client interface is <literal>javax.sql.DataSource</literal>, which is what application code will typically use to
---------------------------(end of broadcast)--------------------------- TIP 7: don't forget to increase your free space map settings