Please take our Survey
logo       

Choosing A Webhost:
A web hosting service is a type of Internet hosting service that allows individuals and organizations to provide their own website accessible via the World Wide Web. Web hosts are companies that provide space on a server they own for use by their clients as well as providing Internet connectivity, typically in a data center. Web hosts can also provide data center space and connectivity to the Internet for servers they do not own to be located in their data center, called colocation. more...

Re: [JDBC] IPv6 patch doesn't work fine: msg#00155

db.postgresql.jdbc

Subject: Re: [JDBC] IPv6 patch doesn't work fine

Patch applied.

thanks,
--Barry


Kris Jurka wrote:

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 8: explain analyze is your friend



---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@xxxxxxxxxxxxxx so that your
message can get through to the mailing list cleanly



<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
qnx.openqnx.dev...    gcc.libstdc++.c...    solaris.opensol...    information-ret...    misc.misterhous...    web.catalyst.ge...    apache.webservi...    redhat.release....    hardware.lirc/2...    kernel.autofs/2...    technology.sust...    linux.vdr/2003-...    editors.lyx.gen...    org.user-groups...    netbsd.devel.pk...    xdg.devel/2004-...    version-control...    jakarta.slide.d...    debian.packages...    creativecommons...    ports.ppc.embed...    bug-tracking.bu...   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business.
subscribe

Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field.
subscribe

The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business.
subscribe

Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company.
subscribe

Total Telecom Total Telecom is "The Economist of the communications industry".
subscribe