Applied patch from Teofilis Martisius to improve performance.
Also removed some unused files and fixed the which needed a small change after the previous patch to build.xml. Modified Files: jdbc/Makefile jdbc/org/postgresql/core/Encoding.java jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java Removed Files: jdbc/utils/CheckVersion.java jdbc/utils/buildDriver jdbc/utils/changelog.pl
This commit is contained in:
parent
e9f07b14e1
commit
06b297938d
@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2001, PostgreSQL Global Development Group
|
# Copyright (c) 2001, PostgreSQL Global Development Group
|
||||||
#
|
#
|
||||||
# $Header: /cvsroot/pgsql/src/interfaces/jdbc/Attic/Makefile,v 1.35 2002/07/23 03:59:54 barry Exp $
|
# $Header: /cvsroot/pgsql/src/interfaces/jdbc/Attic/Makefile,v 1.36 2002/10/20 02:55:50 barry Exp $
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ install: installdirs
|
|||||||
-Dinstall.directory=$(javadir) $(properties)
|
-Dinstall.directory=$(javadir) $(properties)
|
||||||
|
|
||||||
installdirs:
|
installdirs:
|
||||||
$(mkinstalldirs) $(javadir)
|
$(mkinstalldirs) $(javadir)
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
$(ANT) -buildfile $(srcdir)/build.xml uninstall \
|
$(ANT) -buildfile $(srcdir)/build.xml uninstall \
|
||||||
@ -39,4 +39,4 @@ clean distclean maintainer-clean:
|
|||||||
$(ANT) -buildfile $(srcdir)/build.xml clean
|
$(ANT) -buildfile $(srcdir)/build.xml clean
|
||||||
|
|
||||||
check: all
|
check: all
|
||||||
$(ANT) -buildfile $(srcdir)/build.xml test
|
$(ANT) -buildfile $(srcdir)/build.xml test $(properties)
|
||||||
|
@ -8,7 +8,7 @@ import org.postgresql.util.*;
|
|||||||
/*
|
/*
|
||||||
* Converts to and from the character encoding used by the backend.
|
* Converts to and from the character encoding used by the backend.
|
||||||
*
|
*
|
||||||
* $Id: Encoding.java,v 1.6 2002/09/06 21:23:05 momjian Exp $
|
* $Id: Encoding.java,v 1.7 2002/10/20 02:55:50 barry Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class Encoding
|
public class Encoding
|
||||||
@ -161,6 +161,9 @@ public class Encoding
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (encoding.equals("UTF-8")) {
|
||||||
|
return decodeUTF8(encodedString, offset, length);
|
||||||
|
}
|
||||||
return new String(encodedString, offset, length, encoding);
|
return new String(encodedString, offset, length, encoding);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -223,4 +226,44 @@ public class Encoding
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* custom byte[] -> String conversion routine, 3x-10x faster than
|
||||||
|
* standard new String(byte[])
|
||||||
|
*/
|
||||||
|
private static final int pow2_6 = 64; // 26
|
||||||
|
private static final int pow2_12 = 4096; // 212
|
||||||
|
private static char[] cdata = new char[50];
|
||||||
|
|
||||||
|
private synchronized String decodeUTF8(byte data[], int offset, int length) {
|
||||||
|
char[] l_cdata = cdata;
|
||||||
|
if (l_cdata.length < (length-offset)) {
|
||||||
|
l_cdata = new char[length-offset];
|
||||||
|
}
|
||||||
|
int i = offset;
|
||||||
|
int j = 0;
|
||||||
|
int z, y, x, val;
|
||||||
|
while (i < length) {
|
||||||
|
z = data[i] & 0xFF;
|
||||||
|
if (z < 0x80) {
|
||||||
|
l_cdata[j++] = (char)data[i];
|
||||||
|
i++;
|
||||||
|
} else if (z >= 0xE0) { // length == 3
|
||||||
|
y = data[i+1] & 0xFF;
|
||||||
|
x = data[i+2] & 0xFF;
|
||||||
|
val = (z-0xE0)*pow2_12 + (y-0x80)*pow2_6 + (x-0x80);
|
||||||
|
l_cdata[j++] = (char) val;
|
||||||
|
i+= 3;
|
||||||
|
} else { // length == 2 (maybe add checking for length > 3, throw exception if it is
|
||||||
|
y = data[i+1] & 0xFF;
|
||||||
|
val = (z - 0xC0)* (pow2_6)+(y-0x80);
|
||||||
|
l_cdata[j++] = (char) val;
|
||||||
|
i+=2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String s = new String(l_cdata, 0, j);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ import org.postgresql.largeobject.LargeObjectManager;
|
|||||||
import org.postgresql.util.*;
|
import org.postgresql.util.*;
|
||||||
|
|
||||||
|
|
||||||
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1Connection.java,v 1.11 2002/10/17 05:33:52 barry Exp $
|
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1Connection.java,v 1.12 2002/10/20 02:55:50 barry Exp $
|
||||||
* This class defines methods of the jdbc1 specification. This class is
|
* This class defines methods of the jdbc1 specification. This class is
|
||||||
* extended by org.postgresql.jdbc2.AbstractJdbc2Connection which adds the jdbc2
|
* extended by org.postgresql.jdbc2.AbstractJdbc2Connection which adds the jdbc2
|
||||||
* methods. The real Connection class (for jdbc1) is org.postgresql.jdbc1.Jdbc1Connection
|
* methods. The real Connection class (for jdbc1) is org.postgresql.jdbc1.Jdbc1Connection
|
||||||
@ -367,10 +367,16 @@ public abstract class AbstractJdbc1Connection implements org.postgresql.PGConnec
|
|||||||
//jdbc by default assumes autocommit is on until setAutoCommit(false)
|
//jdbc by default assumes autocommit is on until setAutoCommit(false)
|
||||||
//is called. Therefore we need to ensure a new connection is
|
//is called. Therefore we need to ensure a new connection is
|
||||||
//initialized to autocommit on.
|
//initialized to autocommit on.
|
||||||
|
//We also set the client encoding so that the driver only needs
|
||||||
|
//to deal with utf8. We can only do this in 7.3 because multibyte
|
||||||
|
//support is now always included
|
||||||
if (haveMinimumServerVersion("7.3"))
|
if (haveMinimumServerVersion("7.3"))
|
||||||
{
|
{
|
||||||
java.sql.ResultSet acRset =
|
java.sql.ResultSet acRset =
|
||||||
ExecSQL("show autocommit");
|
ExecSQL("set client_encoding = 'UNICODE'; show autocommit");
|
||||||
|
|
||||||
|
//set encoding to be unicode
|
||||||
|
encoding = Encoding.getEncoding("UNICODE", null);
|
||||||
|
|
||||||
if (!acRset.next())
|
if (!acRset.next())
|
||||||
{
|
{
|
||||||
|
@ -1,74 +0,0 @@
|
|||||||
package utils;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This little app checks to see what version of JVM is being used.
|
|
||||||
* It does this by checking first the java.vm.version property, and
|
|
||||||
* if that fails, it looks for certain classes that should be present.
|
|
||||||
*/
|
|
||||||
public class CheckVersion
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Check for the existence of a class by attempting to load it
|
|
||||||
*/
|
|
||||||
public static boolean checkClass(String c)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Class.forName(c);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This first checks java.vm.version for 1.1, 1.2 or 1.3.
|
|
||||||
*
|
|
||||||
* It writes jdbc1 to stdout for the 1.1.x VM.
|
|
||||||
*
|
|
||||||
* For 1.2 or 1.3, it checks for the existence of the javax.sql.DataSource
|
|
||||||
* interface, and if found writes enterprise to stdout. If the interface
|
|
||||||
* is not found, it writes jdbc2 to stdout.
|
|
||||||
*
|
|
||||||
* PS: It also looks for the existence of java.lang.Byte which appeared in
|
|
||||||
* JDK1.1.0 incase java.vm.version is not heeded by some JVM's.
|
|
||||||
*
|
|
||||||
* If it can't work it out, it writes huho to stdout.
|
|
||||||
*
|
|
||||||
* The make file uses the written results to determine which rule to run.
|
|
||||||
*
|
|
||||||
* Bugs: This needs thorough testing.
|
|
||||||
*/
|
|
||||||
public static void main(String args[])
|
|
||||||
{
|
|
||||||
String vmversion = System.getProperty("java.vm.version");
|
|
||||||
|
|
||||||
System.out.println("postgresql.jdbc=" + System.getProperty("postgresql.jdbc"));
|
|
||||||
|
|
||||||
// We are running a 1.1 JVM
|
|
||||||
if (vmversion.startsWith("1.1"))
|
|
||||||
{
|
|
||||||
System.out.println("jdbc1");
|
|
||||||
//System.exit(0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
// We are running a 1.2 or 1.3 JVM
|
|
||||||
if (vmversion.startsWith("1.2") ||
|
|
||||||
vmversion.startsWith("1.3") ||
|
|
||||||
checkClass("java.lang.Byte")
|
|
||||||
)
|
|
||||||
{
|
|
||||||
|
|
||||||
// Check to see if we have the standard extensions. If so, then
|
|
||||||
// we want the enterprise edition, otherwise the jdbc2 driver.
|
|
||||||
if (checkClass("javax.sql.DataSource"))
|
|
||||||
System.out.println("enterprise");
|
|
||||||
else
|
|
||||||
System.out.println("jdbc2");
|
|
||||||
//System.exit(0);
|
|
||||||
}
|
|
||||||
System.setProperty("postgresql.jdbc", "yoyo");
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# $Id: buildDriver,v 1.2 2000/12/20 16:22:49 peter Exp $
|
|
||||||
#
|
|
||||||
# This script generates the org/postgresql/Driver.java file from the template
|
|
||||||
# org/postgresql/Driver.java.in
|
|
||||||
#
|
|
||||||
# We do this because we need to include the version number from Makefile.global
|
|
||||||
# and some other goodies.
|
|
||||||
#
|
|
||||||
# This used to be in Makefile, but as it's now done three times, it's better
|
|
||||||
# to have it as a separate script.
|
|
||||||
#
|
|
||||||
# If you have any problems, please let us know ;-)
|
|
||||||
#
|
|
||||||
# Syntax: buildDriver version class
|
|
||||||
#
|
|
||||||
# Where:
|
|
||||||
# version The version string from Makefile.global
|
|
||||||
# class The class implementing java.sql.Connection
|
|
||||||
# edition The driver edition being built
|
|
||||||
# source The file to build. We assume that ${source}.in exists
|
|
||||||
#
|
|
||||||
|
|
||||||
VERSION=$1
|
|
||||||
CLASS=$2
|
|
||||||
EDITION=$3
|
|
||||||
SOURCE=$4
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Extract the version. This will work until version x.9 (and assuming we don't
|
|
||||||
# have 7.10 etc). We only handle 1 digit for MINORVERSION to handle things like
|
|
||||||
# 7.1devel etc
|
|
||||||
#
|
|
||||||
MAJORVERSION=`echo $VERSION | cut -f1 -d'.'`
|
|
||||||
MINORVERSION=`echo $VERSION | cut -f2 -d'.' | cut -c1`
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Now finally build the driver
|
|
||||||
sed \
|
|
||||||
-e "s/@JDBCCONNECTCLASS@/$CLASS/g" \
|
|
||||||
-e "s/@VERSION@/$VERSION $EDITION/g" \
|
|
||||||
-e "s/@MAJORVERSION@/$MAJORVERSION/g" \
|
|
||||||
-e "s/@MINORVERSION@/$MINORVERSION/g" \
|
|
||||||
<${SOURCE}.in \
|
|
||||||
>$SOURCE
|
|
||||||
#---------------------------------------------------------------------------
|
|
@ -1,23 +0,0 @@
|
|||||||
#!/bin/perl
|
|
||||||
|
|
||||||
while(<>) {
|
|
||||||
chomp();
|
|
||||||
s/\t+/ /g;
|
|
||||||
if(substr($_,0,3) eq ' - ') {
|
|
||||||
print "<ul>" if !$inlist;
|
|
||||||
$inlist=1;
|
|
||||||
print "<li>".substr($_,3)."\n";
|
|
||||||
} else {
|
|
||||||
if($_ eq "" || $_ eq " ") {
|
|
||||||
print "</ul>" if $inlist;
|
|
||||||
$inlist=0;
|
|
||||||
print "<br>\n";
|
|
||||||
} elsif(substr($_,0,1) eq " ") {
|
|
||||||
print $_;
|
|
||||||
} else {
|
|
||||||
print "</ul>" if $inlist;
|
|
||||||
$inlist=0;
|
|
||||||
print "<h4>".$_."</h4>\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user