Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
f37c1c48
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f37c1c48
编写于
9月 06, 2002
作者:
B
Bruce Momjian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Run pgjindent for Java folks.
上级
b4295d05
变更
71
展开全部
隐藏空白更改
内联
并排
Showing
71 changed file
with
8890 addition
and
8017 deletion
+8890
-8017
src/interfaces/jdbc/example/Unicode.java
src/interfaces/jdbc/example/Unicode.java
+1
-1
src/interfaces/jdbc/example/basic.java
src/interfaces/jdbc/example/basic.java
+3
-1
src/interfaces/jdbc/example/corba/StockClient.java
src/interfaces/jdbc/example/corba/StockClient.java
+4
-4
src/interfaces/jdbc/example/corba/StockDispenserImpl.java
src/interfaces/jdbc/example/corba/StockDispenserImpl.java
+3
-3
src/interfaces/jdbc/example/corba/StockServer.java
src/interfaces/jdbc/example/corba/StockServer.java
+3
-3
src/interfaces/jdbc/example/psql.java
src/interfaces/jdbc/example/psql.java
+1
-1
src/interfaces/jdbc/org/postgresql/Driver.java.in
src/interfaces/jdbc/org/postgresql/Driver.java.in
+22
-18
src/interfaces/jdbc/org/postgresql/PGConnection.java
src/interfaces/jdbc/org/postgresql/PGConnection.java
+54
-54
src/interfaces/jdbc/org/postgresql/PGNotification.java
src/interfaces/jdbc/org/postgresql/PGNotification.java
+9
-9
src/interfaces/jdbc/org/postgresql/PGStatement.java
src/interfaces/jdbc/org/postgresql/PGStatement.java
+7
-7
src/interfaces/jdbc/org/postgresql/core/Encoding.java
src/interfaces/jdbc/org/postgresql/core/Encoding.java
+6
-6
src/interfaces/jdbc/org/postgresql/core/Notification.java
src/interfaces/jdbc/org/postgresql/core/Notification.java
+22
-19
src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java
src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java
+199
-198
src/interfaces/jdbc/org/postgresql/core/StartupPacket.java
src/interfaces/jdbc/org/postgresql/core/StartupPacket.java
+5
-4
src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java
src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java
+242
-238
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java
...es/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java
+1235
-1213
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
...c/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
+590
-511
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java
...ces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java
+90
-69
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSetMetaData.java
.../org/postgresql/jdbc1/AbstractJdbc1ResultSetMetaData.java
+1
-1
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java
...ces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java
+376
-322
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1Connection.java
...interfaces/jdbc/org/postgresql/jdbc1/Jdbc1Connection.java
+2
-2
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1ResultSet.java
+2
-2
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1ResultSetMetaData.java
...ces/jdbc/org/postgresql/jdbc1/Jdbc1ResultSetMetaData.java
+1
-1
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1Statement.java
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1Statement.java
+3
-3
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Connection.java
...es/jdbc/org/postgresql/jdbc2/AbstractJdbc2Connection.java
+191
-179
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java
...c/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java
+9
-9
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
...ces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
+1239
-1000
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSetMetaData.java
.../org/postgresql/jdbc2/AbstractJdbc2ResultSetMetaData.java
+52
-52
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java
...ces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java
+14
-13
src/interfaces/jdbc/org/postgresql/jdbc2/Array.java
src/interfaces/jdbc/org/postgresql/jdbc2/Array.java
+8
-8
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Connection.java
...interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Connection.java
+42
-42
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java
+10
-8
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2ResultSetMetaData.java
...ces/jdbc/org/postgresql/jdbc2/Jdbc2ResultSetMetaData.java
+1
-1
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Statement.java
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Statement.java
+2
-2
src/interfaces/jdbc/org/postgresql/jdbc2/optional/BaseDataSource.java
...es/jdbc/org/postgresql/jdbc2/optional/BaseDataSource.java
+243
-211
src/interfaces/jdbc/org/postgresql/jdbc2/optional/ConnectionPool.java
...es/jdbc/org/postgresql/jdbc2/optional/ConnectionPool.java
+51
-45
src/interfaces/jdbc/org/postgresql/jdbc2/optional/PGObjectFactory.java
...s/jdbc/org/postgresql/jdbc2/optional/PGObjectFactory.java
+85
-66
src/interfaces/jdbc/org/postgresql/jdbc2/optional/PooledConnectionImpl.java
...c/org/postgresql/jdbc2/optional/PooledConnectionImpl.java
+228
-171
src/interfaces/jdbc/org/postgresql/jdbc2/optional/PoolingDataSource.java
...jdbc/org/postgresql/jdbc2/optional/PoolingDataSource.java
+421
-355
src/interfaces/jdbc/org/postgresql/jdbc2/optional/SimpleDataSource.java
.../jdbc/org/postgresql/jdbc2/optional/SimpleDataSource.java
+11
-9
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3Blob.java
...terfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3Blob.java
+76
-72
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3Clob.java
...terfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3Clob.java
+93
-88
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3Connection.java
...es/jdbc/org/postgresql/jdbc3/AbstractJdbc3Connection.java
+357
-345
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3DatabaseMetaData.java
...c/org/postgresql/jdbc3/AbstractJdbc3DatabaseMetaData.java
+326
-310
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3ResultSet.java
...ces/jdbc/org/postgresql/jdbc3/AbstractJdbc3ResultSet.java
+180
-168
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3Statement.java
...ces/jdbc/org/postgresql/jdbc3/AbstractJdbc3Statement.java
+1337
-1274
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3CallableStatement.java
...ces/jdbc/org/postgresql/jdbc3/Jdbc3CallableStatement.java
+2
-2
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3Connection.java
...interfaces/jdbc/org/postgresql/jdbc3/Jdbc3Connection.java
+44
-44
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3DatabaseMetaData.java
...aces/jdbc/org/postgresql/jdbc3/Jdbc3DatabaseMetaData.java
+2
-2
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3PreparedStatement.java
...ces/jdbc/org/postgresql/jdbc3/Jdbc3PreparedStatement.java
+2
-2
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3ResultSet.java
+14
-12
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3ResultSetMetaData.java
...ces/jdbc/org/postgresql/jdbc3/Jdbc3ResultSetMetaData.java
+3
-3
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3Statement.java
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3Statement.java
+4
-4
src/interfaces/jdbc/org/postgresql/largeobject/LargeObject.java
...terfaces/jdbc/org/postgresql/largeobject/LargeObject.java
+6
-6
src/interfaces/jdbc/org/postgresql/largeobject/LargeObjectManager.java
...s/jdbc/org/postgresql/largeobject/LargeObjectManager.java
+10
-9
src/interfaces/jdbc/org/postgresql/test/jdbc2/CallableStmtTest.java
...aces/jdbc/org/postgresql/test/jdbc2/CallableStmtTest.java
+27
-18
src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java
.../jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java
+77
-77
src/interfaces/jdbc/org/postgresql/test/jdbc2/JBuilderTest.java
...terfaces/jdbc/org/postgresql/test/jdbc2/JBuilderTest.java
+2
-2
src/interfaces/jdbc/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
...rfaces/jdbc/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
+1
-1
src/interfaces/jdbc/org/postgresql/test/jdbc2/MiscTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/MiscTest.java
+17
-16
src/interfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java
...erfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java
+20
-20
src/interfaces/jdbc/org/postgresql/test/jdbc2/TimestampTest.java
...erfaces/jdbc/org/postgresql/test/jdbc2/TimestampTest.java
+90
-84
src/interfaces/jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java
.../jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java
+115
-114
src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/BaseDataSourceTest.java
...rg/postgresql/test/jdbc2/optional/BaseDataSourceTest.java
+159
-131
src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/ConnectionPoolTest.java
...rg/postgresql/test/jdbc2/optional/ConnectionPoolTest.java
+358
-293
src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/OptionalTestSuite.java
...org/postgresql/test/jdbc2/optional/OptionalTestSuite.java
+14
-12
src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/SimpleDataSourceTest.java
.../postgresql/test/jdbc2/optional/SimpleDataSourceTest.java
+33
-26
src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3TestSuite.java
...rfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3TestSuite.java
+3
-3
src/interfaces/jdbc/org/postgresql/util/PGbytea.java
src/interfaces/jdbc/org/postgresql/util/PGbytea.java
+2
-2
src/interfaces/jdbc/org/postgresql/util/PGtokenizer.java
src/interfaces/jdbc/org/postgresql/util/PGtokenizer.java
+1
-0
src/interfaces/jdbc/org/postgresql/util/Serialize.java
src/interfaces/jdbc/org/postgresql/util/Serialize.java
+27
-16
未找到文件。
src/interfaces/jdbc/example/Unicode.java
浏览文件 @
f37c1c48
...
...
@@ -233,7 +233,7 @@ public class Unicode
catch
(
ClassNotFoundException
cnfe
)
{
log
(
"Unable to load driver"
,
cnfe
);
return
;
return
;
}
try
{
...
...
src/interfaces/jdbc/example/basic.java
浏览文件 @
f37c1c48
...
...
@@ -6,7 +6,7 @@ import java.text.*;
/*
*
* $Id: basic.java,v 1.1
2 2002/07/23 03:59:54 barry
Exp $
* $Id: basic.java,v 1.1
3 2002/09/06 21:23:05 momjian
Exp $
*
* This example tests the basic components of the JDBC driver, and shows
* how even the simplest of queries can be implemented.
...
...
@@ -137,6 +137,7 @@ public class basic
// result if you don't know what column number a value is in
System
.
out
.
println
(
"performing another query"
);
rs
=
st
.
executeQuery
(
"select * from basic where b>1"
);
if
(
rs
!=
null
)
...
...
@@ -164,6 +165,7 @@ public class basic
// Now test maxrows by setting it to 3 rows
st
.
setMaxRows
(
3
);
System
.
out
.
println
(
"performing a query limited to "
+
st
.
getMaxRows
());
rs
=
st
.
executeQuery
(
"select a, b from basic"
);
...
...
src/interfaces/jdbc/example/corba/StockClient.java
浏览文件 @
f37c1c48
...
...
@@ -9,7 +9,7 @@ import org.omg.CosNaming.*;
*
* It has no GUI, just a text frontend to keep it simple.
*
* $Id: StockClient.java,v 1.
5 2001/11/19 23:19:20
momjian Exp $
* $Id: StockClient.java,v 1.
6 2002/09/06 21:23:05
momjian Exp $
*/
public
class
StockClient
{
...
...
@@ -35,14 +35,14 @@ public class StockClient
if
(
nameServiceObj
==
null
)
{
System
.
err
.
println
(
"nameServiceObj == null"
);
return
;
return
;
}
nameService
=
org
.
omg
.
CosNaming
.
NamingContextHelper
.
narrow
(
nameServiceObj
);
if
(
nameService
==
null
)
{
System
.
err
.
println
(
"nameService == null"
);
return
;
return
;
}
// Resolve the dispenser
...
...
@@ -53,7 +53,7 @@ public class StockClient
if
(
dispenser
==
null
)
{
System
.
err
.
println
(
"dispenser == null"
);
return
;
return
;
}
// Now run the front end.
...
...
src/interfaces/jdbc/example/corba/StockDispenserImpl.java
浏览文件 @
f37c1c48
...
...
@@ -5,7 +5,7 @@ import org.omg.CosNaming.*;
/*
* This class implements the server side of the example.
*
* $Id: StockDispenserImpl.java,v 1.
4 2001/11/19 23:19:20
momjian Exp $
* $Id: StockDispenserImpl.java,v 1.
5 2002/09/06 21:23:05
momjian Exp $
*/
public
class
StockDispenserImpl
extends
stock
.
_StockDispenserImplBase
{
...
...
@@ -67,11 +67,11 @@ public class StockDispenserImpl extends stock._StockDispenserImplBase
{
stock
[
i
].
inUse
=
false
;
System
.
out
.
println
(
"Releasing slot "
+
i
);
return
;
return
;
}
}
System
.
out
.
println
(
"Reserved object not a member of this dispenser"
);
return
;
return
;
}
/*
...
...
src/interfaces/jdbc/example/corba/StockServer.java
浏览文件 @
f37c1c48
...
...
@@ -5,7 +5,7 @@ import org.omg.CosNaming.*;
/*
* This class implements the server side of the example.
*
* $Id: StockServer.java,v 1.
4 2001/11/19 23:19:20
momjian Exp $
* $Id: StockServer.java,v 1.
5 2002/09/06 21:23:05
momjian Exp $
*/
public
class
StockServer
{
...
...
@@ -29,14 +29,14 @@ public class StockServer
if
(
nameServiceObj
==
null
)
{
System
.
err
.
println
(
"nameServiceObj = null"
);
return
;
return
;
}
org
.
omg
.
CosNaming
.
NamingContext
nameService
=
org
.
omg
.
CosNaming
.
NamingContextHelper
.
narrow
(
nameServiceObj
);
if
(
nameService
==
null
)
{
System
.
err
.
println
(
"nameService = null"
);
return
;
return
;
}
// bind the dispenser into the naming service
...
...
src/interfaces/jdbc/example/psql.java
浏览文件 @
f37c1c48
...
...
@@ -82,7 +82,7 @@ public class psql
if
(
line
.
startsWith
(
"\\"
))
{
processSlashCommand
(
line
);
return
;
return
;
}
boolean
type
=
st
.
execute
(
line
);
...
...
src/interfaces/jdbc/org/postgresql/Driver.java.in
浏览文件 @
f37c1c48
...
...
@@ -31,8 +31,8 @@ public class Driver implements java.sql.Driver
public
static
final
int
DEBUG
=
2
;
public
static
final
int
INFO
=
1
;
public
static
boolean
logDebug
=
false
;
public
static
boolean
logInfo
=
false
;
public
static
boolean
logDebug
=
false
;
public
static
boolean
logInfo
=
false
;
static
{
...
...
@@ -70,11 +70,11 @@ public class Driver implements java.sql.Driver
*
to
/
from
the
database
to
unicode
.
If
multibyte
is
enabled
on
the
*
server
then
the
character
set
of
the
database
is
used
as
the
default
,
*
otherwise
the
jvm
character
encoding
is
used
as
the
default
.
*
loglevel
-
(
optional
)
Enable
logging
of
messages
from
the
driver
.
*
The
value
is
an
integer
from
1
to
2
where
:
*
INFO
=
1
,
DEBUG
=
2
*
The
output
is
sent
to
DriverManager
.
getPrintWriter
()
if
set
,
*
otherwise
it
is
sent
to
System
.
out
.
*
loglevel
-
(
optional
)
Enable
logging
of
messages
from
the
driver
.
*
The
value
is
an
integer
from
1
to
2
where
:
*
INFO
=
1
,
DEBUG
=
2
*
The
output
is
sent
to
DriverManager
.
getPrintWriter
()
if
set
,
*
otherwise
it
is
sent
to
System
.
out
.
*
compatible
-
(
optional
)
This
is
used
to
toggle
*
between
different
functionality
as
it
changes
across
different
releases
*
of
the
jdbc
driver
code
.
The
values
here
are
versions
of
the
jdbc
...
...
@@ -109,12 +109,14 @@ public class Driver implements java.sql.Driver
{
if
((
props
=
parseURL
(
url
,
info
))
==
null
)
{
if
(
Driver
.
logDebug
)
Driver
.
debug
(
"Error in url"
+
url
);
if
(
Driver
.
logDebug
)
Driver
.
debug
(
"Error in url"
+
url
);
return
null
;
}
try
{
if
(
Driver
.
logDebug
)
Driver
.
debug
(
"connect "
+
url
);
if
(
Driver
.
logDebug
)
Driver
.
debug
(
"connect "
+
url
);
@
JDBCCONNECTCLASS
@
con
=
(@
JDBCCONNECTCLASS
@)(
Class
.
forName
(
"@JDBCCONNECTCLASS@"
).
newInstance
());
con
.
openConnection
(
host
(),
port
(),
props
,
database
(),
url
,
this
);
...
...
@@ -122,7 +124,8 @@ public class Driver implements java.sql.Driver
}
catch
(
ClassNotFoundException
ex
)
{
if
(
Driver
.
logDebug
)
Driver
.
debug
(
"error"
,
ex
);
if
(
Driver
.
logDebug
)
Driver
.
debug
(
"error"
,
ex
);
throw
new
PSQLException
(
"postgresql.jvm.version"
,
ex
);
}
catch
(
PSQLException
ex1
)
...
...
@@ -133,7 +136,8 @@ public class Driver implements java.sql.Driver
}
catch
(
Exception
ex2
)
{
if
(
Driver
.
logDebug
)
Driver
.
debug
(
"error"
,
ex2
);
if
(
Driver
.
logDebug
)
Driver
.
debug
(
"error"
,
ex2
);
throw
new
PSQLException
(
"postgresql.unusual"
,
ex2
);
}
}
...
...
@@ -177,7 +181,7 @@ public class Driver implements java.sql.Driver
*/
public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException
{
//This method isn'
t
really
implemented
//This method isn'
t
really
implemented
Properties
p
=
parseURL
(
url
,
info
);
return
new
DriverPropertyInfo
[
0
];
}
...
...
@@ -385,16 +389,16 @@ public class Driver implements java.sql.Driver
}
/**
*
used
to
turn
logging
on
to
a
certain
level
,
can
be
called
*
used
to
turn
logging
on
to
a
certain
level
,
can
be
called
*
by
specifying
fully
qualified
class
ie
org
.
postgresql
.
Driver
.
setLogLevel
()
*
@
param
int
logLevel
sets
the
level
which
logging
will
respond
to
*
INFO
being
almost
no
messages
*
INFO
being
almost
no
messages
*
DEBUG
most
verbose
*/
public
static
void
setLogLevel
(
int
logLevel
)
{
logDebug
=
(
logLevel
>=
DEBUG
)
?
true
:
false
;
logInfo
=
(
logLevel
>=
INFO
)
?
true
:
false
;
logDebug
=
(
logLevel
>=
DEBUG
)
?
true
:
false
;
logInfo
=
(
logLevel
>=
INFO
)
?
true
:
false
;
}
/*
*
logging
message
at
the
debug
level
...
...
@@ -441,7 +445,7 @@ public class Driver implements java.sql.Driver
}
}
//
The
build
number
should
be
incremented
for
every
new
build
private
static
int
m_buildNumber
=
104
;
//
The
build
number
should
be
incremented
for
every
new
build
private
static
int
m_buildNumber
=
104
;
}
src/interfaces/jdbc/org/postgresql/PGConnection.java
浏览文件 @
f37c1c48
...
...
@@ -7,74 +7,74 @@ import org.postgresql.core.Encoding;
import
org.postgresql.fastpath.Fastpath
;
import
org.postgresql.largeobject.LargeObjectManager
;
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/Attic/PGConnection.java,v 1.
2 2002/09/02 03:07:36 barry
Exp $
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/Attic/PGConnection.java,v 1.
3 2002/09/06 21:23:05 momjian
Exp $
* This interface defines PostgreSQL extentions to the java.sql.Connection interface.
* Any java.sql.Connection object returned by the driver will also implement this
* Any java.sql.Connection object returned by the driver will also implement this
* interface
*/
public
interface
PGConnection
{
/*
* Get the character encoding to use for this connection.
*/
public
Encoding
getEncoding
()
throws
SQLException
;
/*
* Get the character encoding to use for this connection.
*/
public
Encoding
getEncoding
()
throws
SQLException
;
/*
* This method returns the java.sql.Types type for a postgres datatype name
*/
public
int
getSQLType
(
String
pgTypeName
)
throws
SQLException
;
/*
* This method returns the java.sql.Types type for a postgres datatype name
*/
public
int
getSQLType
(
String
pgTypeName
)
throws
SQLException
;
/*
* This returns the java.sql.Types type for a postgres datatype OID
*/
public
int
getSQLType
(
int
oid
)
throws
SQLException
;
/*
* This returns the java.sql.Types type for a postgres datatype OID
*/
public
int
getSQLType
(
int
oid
)
throws
SQLException
;
/*
* This returns the postgres datatype name from the
* postgres datatype OID
*/
public
String
getPGType
(
int
oid
)
throws
SQLException
;
/*
* This returns the postgres datatype name from the
* postgres datatype OID
*/
public
String
getPGType
(
int
oid
)
throws
SQLException
;
/*
* This returns the postgres datatype OID from the
* postgres datatype name
*/
public
int
getPGType
(
String
typeName
)
throws
SQLException
;
/*
* This returns the postgres datatype OID from the
* postgres datatype name
*/
public
int
getPGType
(
String
typeName
)
throws
SQLException
;
/*
* This returns the LargeObject API for the current connection.
*/
public
LargeObjectManager
getLargeObjectAPI
()
throws
SQLException
;
/*
* This returns the LargeObject API for the current connection.
*/
public
LargeObjectManager
getLargeObjectAPI
()
throws
SQLException
;
/*
* This returns the Fastpath API for the current connection.
*/
public
Fastpath
getFastpathAPI
()
throws
SQLException
;
/*
* This returns the Fastpath API for the current connection.
*/
public
Fastpath
getFastpathAPI
()
throws
SQLException
;
/*
* This method is used internally to return an object based around
* org.postgresql's more unique data types.
*
* <p>It uses an internal Hashtable to get the handling class. If the
* type is not supported, then an instance of org.postgresql.util.PGobject
* is returned.
*
* You can use the getValue() or setValue() methods to handle the returned
* object. Custom objects can have their own methods.
*
* @return PGobject for this type, and set to value
* @exception SQLException if value is not correct for this type
* @see org.postgresql.util.Serialize
*/
public
Object
getObject
(
String
type
,
String
value
)
throws
SQLException
;
/*
* This method is used internally to return an object based around
* org.postgresql's more unique data types.
*
* <p>It uses an internal Hashtable to get the handling class. If the
* type is not supported, then an instance of org.postgresql.util.PGobject
* is returned.
*
* You can use the getValue() or setValue() methods to handle the returned
* object. Custom objects can have their own methods.
*
* @return PGobject for this type, and set to value
* @exception SQLException if value is not correct for this type
* @see org.postgresql.util.Serialize
*/
public
Object
getObject
(
String
type
,
String
value
)
throws
SQLException
;
/*
* This method returns any notifications that have been received
* since the last call to this method.
* Returns null if there have been no notifications.
*/
public
PGNotification
[]
getNotifications
();
/*
* This method returns any notifications that have been received
* since the last call to this method.
* Returns null if there have been no notifications.
*/
public
PGNotification
[]
getNotifications
();
}
...
...
src/interfaces/jdbc/org/postgresql/PGNotification.java
浏览文件 @
f37c1c48
package
org.postgresql
;
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/Attic/PGNotification.java,v 1.
1 2002/09/02 03:07:36 barry
Exp $
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/Attic/PGNotification.java,v 1.
2 2002/09/06 21:23:05 momjian
Exp $
* This interface defines PostgreSQL extention for Notifications
*/
public
interface
PGNotification
{
/*
* Returns name of this notification
*/
public
String
getName
();
/*
* Returns name of this notification
*/
public
String
getName
();
/*
* Returns the process id of the backend process making this notification
*/
public
int
getPID
();
/*
* Returns the process id of the backend process making this notification
*/
public
int
getPID
();
}
src/interfaces/jdbc/org/postgresql/PGStatement.java
浏览文件 @
f37c1c48
...
...
@@ -3,23 +3,23 @@ package org.postgresql;
import
java.sql.*
;
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/Attic/PGStatement.java,v 1.
4 2002/09/02 03:07:36 barry
Exp $
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/Attic/PGStatement.java,v 1.
5 2002/09/06 21:23:05 momjian
Exp $
* This interface defines PostgreSQL extentions to the java.sql.Statement interface.
* Any java.sql.Statement object returned by the driver will also implement this
* Any java.sql.Statement object returned by the driver will also implement this
* interface
*/
public
interface
PGStatement
{
/*
* Returns the Last inserted/updated oid.
* Returns the Last inserted/updated oid.
* @return OID of last insert
* @since 7.3
* @since 7.3
*/
public
long
getLastOID
()
throws
SQLException
;
public
long
getLastOID
()
throws
SQLException
;
public
void
setUseServerPrepare
(
boolean
flag
);
public
void
setUseServerPrepare
(
boolean
flag
);
public
boolean
isUseServerPrepare
();
public
boolean
isUseServerPrepare
();
}
src/interfaces/jdbc/org/postgresql/core/Encoding.java
浏览文件 @
f37c1c48
...
...
@@ -8,7 +8,7 @@ import org.postgresql.util.*;
/*
* Converts to and from the character encoding used by the backend.
*
* $Id: Encoding.java,v 1.
5 2002/03/19 02:48:4
5 momjian Exp $
* $Id: Encoding.java,v 1.
6 2002/09/06 21:23:0
5 momjian Exp $
*/
public
class
Encoding
...
...
@@ -42,14 +42,14 @@ public class Encoding
encodings
.
put
(
"EUC_KR"
,
new
String
[]
{
"EUC_KR"
});
encodings
.
put
(
"JOHAB"
,
new
String
[]
{
"Johab"
});
encodings
.
put
(
"EUC_TW"
,
new
String
[]
{
"EUC_TW"
});
encodings
.
put
(
"SJIS"
,
new
String
[]
{
"MS932"
,
"SJIS"
});
encodings
.
put
(
"BIG5"
,
new
String
[]
{
"Big5"
,
"MS950"
,
"Cp950"
});
encodings
.
put
(
"GBK"
,
new
String
[]
{
"GBK"
,
"MS936"
});
encodings
.
put
(
"UHC"
,
new
String
[]
{
"MS949"
,
"Cp949"
,
"Cp949C"
});
encodings
.
put
(
"SJIS"
,
new
String
[]
{
"MS932"
,
"SJIS"
});
encodings
.
put
(
"BIG5"
,
new
String
[]
{
"Big5"
,
"MS950"
,
"Cp950"
});
encodings
.
put
(
"GBK"
,
new
String
[]
{
"GBK"
,
"MS936"
});
encodings
.
put
(
"UHC"
,
new
String
[]
{
"MS949"
,
"Cp949"
,
"Cp949C"
});
encodings
.
put
(
"TCVN"
,
new
String
[]
{
"Cp1258"
});
encodings
.
put
(
"WIN1256"
,
new
String
[]
{
"Cp1256"
});
encodings
.
put
(
"WIN1250"
,
new
String
[]
{
"Cp1250"
});
encodings
.
put
(
"WIN874"
,
new
String
[]
{
"MS874"
,
"Cp874"
});
encodings
.
put
(
"WIN874"
,
new
String
[]
{
"MS874"
,
"Cp874"
});
encodings
.
put
(
"WIN"
,
new
String
[]
{
"Cp1251"
});
encodings
.
put
(
"ALT"
,
new
String
[]
{
"Cp866"
});
// We prefer KOI8-U, since it is a superset of KOI8-R.
...
...
src/interfaces/jdbc/org/postgresql/core/Notification.java
浏览文件 @
f37c1c48
package
org.postgresql.core
;
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/core/Attic/Notification.java,v 1.
1 2002/09/02 03:07:36 barry
Exp $
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/core/Attic/Notification.java,v 1.
2 2002/09/06 21:23:05 momjian
Exp $
* This is the implementation of the PGNotification interface
*/
public
class
Notification
implements
org
.
postgresql
.
PGNotification
{
public
Notification
(
String
p_name
,
int
p_pid
)
{
m_name
=
p_name
;
m_pid
=
p_pid
;
}
public
Notification
(
String
p_name
,
int
p_pid
)
{
m_name
=
p_name
;
m_pid
=
p_pid
;
}
/*
* Returns name of this notification
*/
public
String
getName
()
{
return
m_name
;
}
/*
* Returns name of this notification
*/
public
String
getName
()
{
return
m_name
;
}
/*
* Returns the process id of the backend process making this notification
*/
public
int
getPID
()
{
return
m_pid
;
}
/*
* Returns the process id of the backend process making this notification
*/
public
int
getPID
()
{
return
m_pid
;
}
private
String
m_name
;
private
int
m_pid
;
private
String
m_name
;
private
int
m_pid
;
}
src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java
浏览文件 @
f37c1c48
...
...
@@ -13,208 +13,209 @@ import org.postgresql.util.PSQLException;
* <p>The lifetime of a QueryExecutor object is from sending the query
* until the response has been received from the backend.
*
* $Id: QueryExecutor.java,v 1.1
5 2002/09/02 03:07:36 barry
Exp $
* $Id: QueryExecutor.java,v 1.1
6 2002/09/06 21:23:05 momjian
Exp $
*/
public
class
QueryExecutor
{
private
final
String
[]
m_sqlFrags
;
private
final
Object
[]
m_binds
;
private
final
java
.
sql
.
Statement
statement
;
private
final
PG_Stream
pg_stream
;
private
final
org
.
postgresql
.
jdbc1
.
AbstractJdbc1Connection
connection
;
public
QueryExecutor
(
String
[]
p_sqlFrags
,
Object
[]
p_binds
,
java
.
sql
.
Statement
statement
,
PG_Stream
pg_stream
,
java
.
sql
.
Connection
connection
)
throws
SQLException
{
this
.
m_sqlFrags
=
p_sqlFrags
;
this
.
m_binds
=
p_binds
;
this
.
statement
=
statement
;
this
.
pg_stream
=
pg_stream
;
this
.
connection
=
(
org
.
postgresql
.
jdbc1
.
AbstractJdbc1Connection
)
connection
;
if
(
statement
!=
null
)
maxRows
=
statement
.
getMaxRows
();
else
maxRows
=
0
;
}
private
Field
[]
fields
=
null
;
private
Vector
tuples
=
new
Vector
();
private
boolean
binaryCursor
=
false
;
private
String
status
=
null
;
private
int
update_count
=
1
;
private
long
insert_oid
=
0
;
private
int
maxRows
;
/*
* Execute a query on the backend.
*/
public
java
.
sql
.
ResultSet
execute
()
throws
SQLException
{
StringBuffer
errorMessage
=
null
;
synchronized
(
pg_stream
)
{
sendQuery
();
int
c
;
boolean
l_endQuery
=
false
;
while
(!
l_endQuery
)
{
c
=
pg_stream
.
ReceiveChar
();
switch
(
c
)
{
case
'A'
:
// Asynchronous Notify
int
pid
=
pg_stream
.
ReceiveInteger
(
4
);
String
msg
=
pg_stream
.
ReceiveString
(
connection
.
getEncoding
());
private
final
String
[]
m_sqlFrags
;
private
final
Object
[]
m_binds
;
private
final
java
.
sql
.
Statement
statement
;
private
final
PG_Stream
pg_stream
;
private
final
org
.
postgresql
.
jdbc1
.
AbstractJdbc1Connection
connection
;
public
QueryExecutor
(
String
[]
p_sqlFrags
,
Object
[]
p_binds
,
java
.
sql
.
Statement
statement
,
PG_Stream
pg_stream
,
java
.
sql
.
Connection
connection
)
throws
SQLException
{
this
.
m_sqlFrags
=
p_sqlFrags
;
this
.
m_binds
=
p_binds
;
this
.
statement
=
statement
;
this
.
pg_stream
=
pg_stream
;
this
.
connection
=
(
org
.
postgresql
.
jdbc1
.
AbstractJdbc1Connection
)
connection
;
if
(
statement
!=
null
)
maxRows
=
statement
.
getMaxRows
();
else
maxRows
=
0
;
}
private
Field
[]
fields
=
null
;
private
Vector
tuples
=
new
Vector
();
private
boolean
binaryCursor
=
false
;
private
String
status
=
null
;
private
int
update_count
=
1
;
private
long
insert_oid
=
0
;
private
int
maxRows
;
/*
* Execute a query on the backend.
*/
public
java
.
sql
.
ResultSet
execute
()
throws
SQLException
{
StringBuffer
errorMessage
=
null
;
synchronized
(
pg_stream
)
{
sendQuery
();
int
c
;
boolean
l_endQuery
=
false
;
while
(!
l_endQuery
)
{
c
=
pg_stream
.
ReceiveChar
();
switch
(
c
)
{
case
'A'
:
// Asynchronous Notify
int
pid
=
pg_stream
.
ReceiveInteger
(
4
);
String
msg
=
pg_stream
.
ReceiveString
(
connection
.
getEncoding
());
connection
.
addNotification
(
new
org
.
postgresql
.
core
.
Notification
(
msg
,
pid
));
break
;
case
'B'
:
// Binary Data Transfer
receiveTuple
(
true
);
break
;
case
'C'
:
// Command Status
receiveCommandStatus
();
break
;
case
'D'
:
// Text Data Transfer
receiveTuple
(
false
);
break
;
case
'E'
:
// Error Message
// it's possible to get more than one error message for a query
// see libpq comments wrt backend closing a connection
// so, append messages to a string buffer and keep processing
// check at the bottom to see if we need to throw an exception
if
(
errorMessage
==
null
)
errorMessage
=
new
StringBuffer
();
errorMessage
.
append
(
pg_stream
.
ReceiveString
(
connection
.
getEncoding
()));
// keep processing
break
;
case
'I'
:
// Empty Query
int
t
=
pg_stream
.
ReceiveChar
();
break
;
case
'N'
:
// Error Notification
connection
.
addWarning
(
pg_stream
.
ReceiveString
(
connection
.
getEncoding
()));
break
;
case
'P'
:
// Portal Name
String
pname
=
pg_stream
.
ReceiveString
(
connection
.
getEncoding
());
break
;
case
'T'
:
// MetaData Field Description
receiveFields
();
break
;
case
'Z'
:
l_endQuery
=
true
;
break
;
default
:
throw
new
PSQLException
(
"postgresql.con.type"
,
new
Character
((
char
)
c
));
}
}
// did we get an error during this query?
if
(
errorMessage
!=
null
)
throw
new
SQLException
(
errorMessage
.
toString
()
);
return
connection
.
getResultSet
(
statement
,
fields
,
tuples
,
status
,
update_count
,
insert_oid
,
binaryCursor
);
}
}
/*
* Send a query to the backend.
*/
private
void
sendQuery
()
throws
SQLException
{
try
{
pg_stream
.
SendChar
(
'Q'
);
for
(
int
i
=
0
;
i
<
m_binds
.
length
;
++
i
)
{
if
(
m_binds
[
i
]
==
null
)
throw
new
PSQLException
(
"postgresql.prep.param"
,
new
Integer
(
i
+
1
));
pg_stream
.
Send
(
connection
.
getEncoding
().
encode
(
m_sqlFrags
[
i
]));
pg_stream
.
Send
(
connection
.
getEncoding
().
encode
(
m_binds
[
i
].
toString
()));
}
pg_stream
.
Send
(
connection
.
getEncoding
().
encode
(
m_sqlFrags
[
m_binds
.
length
]));
pg_stream
.
SendChar
(
0
);
pg_stream
.
flush
();
}
catch
(
IOException
e
)
{
throw
new
PSQLException
(
"postgresql.con.ioerror"
,
e
);
}
}
/*
* Receive a tuple from the backend.
*
* @param isBinary set if the tuple should be treated as binary data
*/
private
void
receiveTuple
(
boolean
isBinary
)
throws
SQLException
{
if
(
fields
==
null
)
throw
new
PSQLException
(
"postgresql.con.tuple"
);
Object
tuple
=
pg_stream
.
ReceiveTuple
(
fields
.
length
,
isBinary
);
if
(
isBinary
)
binaryCursor
=
true
;
if
(
maxRows
==
0
||
tuples
.
size
()
<
maxRows
)
tuples
.
addElement
(
tuple
);
}
/*
* Receive command status from the backend.
*/
private
void
receiveCommandStatus
()
throws
SQLException
{
status
=
pg_stream
.
ReceiveString
(
connection
.
getEncoding
());
try
{
// Now handle the update count correctly.
if
(
status
.
startsWith
(
"INSERT"
)
||
status
.
startsWith
(
"UPDATE"
)
||
status
.
startsWith
(
"DELETE"
)
||
status
.
startsWith
(
"MOVE"
))
{
update_count
=
Integer
.
parseInt
(
status
.
substring
(
1
+
status
.
lastIndexOf
(
' '
)));
}
if
(
status
.
startsWith
(
"INSERT"
))
{
insert_oid
=
Long
.
parseLong
(
status
.
substring
(
1
+
status
.
indexOf
(
' '
),
status
.
lastIndexOf
(
' '
)));
}
}
catch
(
NumberFormatException
nfe
)
{
throw
new
PSQLException
(
"postgresql.con.fathom"
,
status
);
}
}
/*
* Receive the field descriptions from the back end.
*/
private
void
receiveFields
()
throws
SQLException
{
if
(
fields
!=
null
)
throw
new
PSQLException
(
"postgresql.con.multres"
);
int
size
=
pg_stream
.
ReceiveIntegerR
(
2
);
fields
=
new
Field
[
size
];
for
(
int
i
=
0
;
i
<
fields
.
length
;
i
++)
{
String
typeName
=
pg_stream
.
ReceiveString
(
connection
.
getEncoding
());
int
typeOid
=
pg_stream
.
ReceiveIntegerR
(
4
);
int
typeLength
=
pg_stream
.
ReceiveIntegerR
(
2
);
int
typeModifier
=
pg_stream
.
ReceiveIntegerR
(
4
);
fields
[
i
]
=
new
Field
(
connection
,
typeName
,
typeOid
,
typeLength
,
typeModifier
);
}
}
break
;
case
'B'
:
// Binary Data Transfer
receiveTuple
(
true
);
break
;
case
'C'
:
// Command Status
receiveCommandStatus
();
break
;
case
'D'
:
// Text Data Transfer
receiveTuple
(
false
);
break
;
case
'E'
:
// Error Message
// it's possible to get more than one error message for a query
// see libpq comments wrt backend closing a connection
// so, append messages to a string buffer and keep processing
// check at the bottom to see if we need to throw an exception
if
(
errorMessage
==
null
)
errorMessage
=
new
StringBuffer
();
errorMessage
.
append
(
pg_stream
.
ReceiveString
(
connection
.
getEncoding
()));
// keep processing
break
;
case
'I'
:
// Empty Query
int
t
=
pg_stream
.
ReceiveChar
();
break
;
case
'N'
:
// Error Notification
connection
.
addWarning
(
pg_stream
.
ReceiveString
(
connection
.
getEncoding
()));
break
;
case
'P'
:
// Portal Name
String
pname
=
pg_stream
.
ReceiveString
(
connection
.
getEncoding
());
break
;
case
'T'
:
// MetaData Field Description
receiveFields
();
break
;
case
'Z'
:
l_endQuery
=
true
;
break
;
default
:
throw
new
PSQLException
(
"postgresql.con.type"
,
new
Character
((
char
)
c
));
}
}
// did we get an error during this query?
if
(
errorMessage
!=
null
)
throw
new
SQLException
(
errorMessage
.
toString
()
);
return
connection
.
getResultSet
(
statement
,
fields
,
tuples
,
status
,
update_count
,
insert_oid
,
binaryCursor
);
}
}
/*
* Send a query to the backend.
*/
private
void
sendQuery
()
throws
SQLException
{
try
{
pg_stream
.
SendChar
(
'Q'
);
for
(
int
i
=
0
;
i
<
m_binds
.
length
;
++
i
)
{
if
(
m_binds
[
i
]
==
null
)
throw
new
PSQLException
(
"postgresql.prep.param"
,
new
Integer
(
i
+
1
));
pg_stream
.
Send
(
connection
.
getEncoding
().
encode
(
m_sqlFrags
[
i
]));
pg_stream
.
Send
(
connection
.
getEncoding
().
encode
(
m_binds
[
i
].
toString
()));
}
pg_stream
.
Send
(
connection
.
getEncoding
().
encode
(
m_sqlFrags
[
m_binds
.
length
]));
pg_stream
.
SendChar
(
0
);
pg_stream
.
flush
();
}
catch
(
IOException
e
)
{
throw
new
PSQLException
(
"postgresql.con.ioerror"
,
e
);
}
}
/*
* Receive a tuple from the backend.
*
* @param isBinary set if the tuple should be treated as binary data
*/
private
void
receiveTuple
(
boolean
isBinary
)
throws
SQLException
{
if
(
fields
==
null
)
throw
new
PSQLException
(
"postgresql.con.tuple"
);
Object
tuple
=
pg_stream
.
ReceiveTuple
(
fields
.
length
,
isBinary
);
if
(
isBinary
)
binaryCursor
=
true
;
if
(
maxRows
==
0
||
tuples
.
size
()
<
maxRows
)
tuples
.
addElement
(
tuple
);
}
/*
* Receive command status from the backend.
*/
private
void
receiveCommandStatus
()
throws
SQLException
{
status
=
pg_stream
.
ReceiveString
(
connection
.
getEncoding
());
try
{
// Now handle the update count correctly.
if
(
status
.
startsWith
(
"INSERT"
)
||
status
.
startsWith
(
"UPDATE"
)
||
status
.
startsWith
(
"DELETE"
)
||
status
.
startsWith
(
"MOVE"
))
{
update_count
=
Integer
.
parseInt
(
status
.
substring
(
1
+
status
.
lastIndexOf
(
' '
)));
}
if
(
status
.
startsWith
(
"INSERT"
))
{
insert_oid
=
Long
.
parseLong
(
status
.
substring
(
1
+
status
.
indexOf
(
' '
),
status
.
lastIndexOf
(
' '
)));
}
}
catch
(
NumberFormatException
nfe
)
{
throw
new
PSQLException
(
"postgresql.con.fathom"
,
status
);
}
}
/*
* Receive the field descriptions from the back end.
*/
private
void
receiveFields
()
throws
SQLException
{
if
(
fields
!=
null
)
throw
new
PSQLException
(
"postgresql.con.multres"
);
int
size
=
pg_stream
.
ReceiveIntegerR
(
2
);
fields
=
new
Field
[
size
];
for
(
int
i
=
0
;
i
<
fields
.
length
;
i
++)
{
String
typeName
=
pg_stream
.
ReceiveString
(
connection
.
getEncoding
());
int
typeOid
=
pg_stream
.
ReceiveIntegerR
(
4
);
int
typeLength
=
pg_stream
.
ReceiveIntegerR
(
2
);
int
typeModifier
=
pg_stream
.
ReceiveIntegerR
(
4
);
fields
[
i
]
=
new
Field
(
connection
,
typeName
,
typeOid
,
typeLength
,
typeModifier
);
}
}
}
src/interfaces/jdbc/org/postgresql/core/StartupPacket.java
浏览文件 @
f37c1c48
...
...
@@ -6,7 +6,7 @@ import java.io.IOException;
/**
* Sent to the backend to initialize a newly created connection.
*
* $Id: StartupPacket.java,v 1.
1 2002/03/21 02:40:03 davec
Exp $
* $Id: StartupPacket.java,v 1.
2 2002/09/06 21:23:05 momjian
Exp $
*/
public
class
StartupPacket
...
...
@@ -22,15 +22,16 @@ public class StartupPacket
private
String
user
;
private
String
database
;
public
StartupPacket
(
int
protocolMajor
,
int
protocolMinor
,
String
user
,
String
database
)
{
public
StartupPacket
(
int
protocolMajor
,
int
protocolMinor
,
String
user
,
String
database
)
{
this
.
protocolMajor
=
protocolMajor
;
this
.
protocolMinor
=
protocolMinor
;
this
.
user
=
user
;
this
.
database
=
database
;
}
public
void
writeTo
(
PG_Stream
stream
)
throws
IOException
{
public
void
writeTo
(
PG_Stream
stream
)
throws
IOException
{
stream
.
SendInteger
(
4
+
4
+
SM_DATABASE
+
SM_USER
+
SM_OPTIONS
+
SM_UNUSED
+
SM_TTY
,
4
);
stream
.
SendInteger
(
protocolMajor
,
2
);
stream
.
SendInteger
(
protocolMinor
,
2
);
...
...
src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java
浏览文件 @
f37c1c48
...
...
@@ -13,7 +13,7 @@ import org.postgresql.largeobject.*;
import
org.postgresql.util.PGbytea
;
import
org.postgresql.util.PSQLException
;
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1ResultSet.java,v 1.
5 2002/09/02 03:07:36 barry
Exp $
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1ResultSet.java,v 1.
6 2002/09/06 21:23:06 momjian
Exp $
* This class defines methods of the jdbc1 specification. This class is
* extended by org.postgresql.jdbc2.AbstractJdbc2ResultSet which adds the jdbc2
* methods. The real ResultSet class (for jdbc1) is org.postgresql.jdbc1.Jdbc1ResultSet
...
...
@@ -22,7 +22,7 @@ public abstract class AbstractJdbc1ResultSet
{
protected
Vector
rows
;
// The results
protected
Statement
statement
;
protected
Statement
statement
;
protected
Field
fields
[];
// The field descriptions
protected
String
status
;
// Status of the result
protected
boolean
binaryCursor
=
false
;
// is the data binary or Strings
...
...
@@ -39,13 +39,13 @@ public abstract class AbstractJdbc1ResultSet
protected
ResultSet
next
=
null
;
protected
StringBuffer
sbuf
=
null
;
public
byte
[][]
rowBuffer
=
null
;
public
byte
[][]
rowBuffer
=
null
;
public
AbstractJdbc1ResultSet
(
org
.
postgresql
.
PGConnection
conn
,
Statement
statement
,
Field
[]
fields
,
Vector
tuples
,
String
status
,
int
updateCount
,
long
insertOID
,
boolean
binaryCursor
)
{
this
.
connection
=
conn
;
this
.
statement
=
statement
;
this
.
statement
=
statement
;
this
.
fields
=
fields
;
this
.
rows
=
tuples
;
this
.
status
=
status
;
...
...
@@ -59,16 +59,16 @@ public abstract class AbstractJdbc1ResultSet
public
boolean
next
()
throws
SQLException
{
if
(
rows
==
null
)
throw
new
PSQLException
(
"postgresql.con.closed"
);
if
(
rows
==
null
)
throw
new
PSQLException
(
"postgresql.con.closed"
);
if
(++
current_row
>=
rows
.
size
())
return
false
;
this_row
=
(
byte
[][])
rows
.
elementAt
(
current_row
);
rowBuffer
=
new
byte
[
this_row
.
length
][];
System
.
arraycopy
(
this_row
,
0
,
rowBuffer
,
0
,
this_row
.
length
);
rowBuffer
=
new
byte
[
this_row
.
length
][];
System
.
arraycopy
(
this_row
,
0
,
rowBuffer
,
0
,
this_row
.
length
);
return
true
;
}
...
...
@@ -230,12 +230,12 @@ public abstract class AbstractJdbc1ResultSet
public
Time
getTime
(
int
columnIndex
)
throws
SQLException
{
return
toTime
(
getString
(
columnIndex
),
(
java
.
sql
.
ResultSet
)
this
,
fields
[
columnIndex
-
1
].
getPGType
()
);
return
toTime
(
getString
(
columnIndex
),
(
java
.
sql
.
ResultSet
)
this
,
fields
[
columnIndex
-
1
].
getPGType
()
);
}
public
Timestamp
getTimestamp
(
int
columnIndex
)
throws
SQLException
{
return
toTimestamp
(
getString
(
columnIndex
),
(
java
.
sql
.
ResultSet
)
this
,
fields
[
columnIndex
-
1
].
getPGType
()
);
return
toTimestamp
(
getString
(
columnIndex
),
(
java
.
sql
.
ResultSet
)
this
,
fields
[
columnIndex
-
1
].
getPGType
()
);
}
public
InputStream
getAsciiStream
(
int
columnIndex
)
throws
SQLException
...
...
@@ -423,11 +423,12 @@ public abstract class AbstractJdbc1ResultSet
warnings
=
null
;
}
public
void
addWarnings
(
SQLWarning
warnings
)
{
if
(
this
.
warnings
!=
null
)
this
.
warnings
.
setNextWarning
(
warnings
);
else
this
.
warnings
=
warnings
;
public
void
addWarnings
(
SQLWarning
warnings
)
{
if
(
this
.
warnings
!=
null
)
this
.
warnings
.
setNextWarning
(
warnings
);
else
this
.
warnings
=
warnings
;
}
public
String
getCursorName
()
throws
SQLException
...
...
@@ -612,18 +613,18 @@ public abstract class AbstractJdbc1ResultSet
/*
* returns the OID of the last inserted row. Deprecated in 7.2 because
* range for OID values is greater than java signed int.
* range for OID values is greater than java signed int.
* @deprecated Replaced by getLastOID() in 7.2
*/
public
int
getInsertedOID
()
{
return
(
int
)
getLastOID
();
return
(
int
)
getLastOID
();
}
/*
* returns the OID of the last inserted row
* @since 7.2
* @since 7.2
*/
public
long
getLastOID
()
{
...
...
@@ -660,8 +661,10 @@ public abstract class AbstractJdbc1ResultSet
protected
void
checkResultSet
(
int
column
)
throws
SQLException
{
if
(
this_row
==
null
)
throw
new
PSQLException
(
"postgresql.res.nextrequired"
);
if
(
column
<
1
||
column
>
fields
.
length
)
throw
new
PSQLException
(
"postgresql.res.colrange"
);
if
(
this_row
==
null
)
throw
new
PSQLException
(
"postgresql.res.nextrequired"
);
if
(
column
<
1
||
column
>
fields
.
length
)
throw
new
PSQLException
(
"postgresql.res.colrange"
);
}
//----------------- Formatting Methods -------------------
...
...
@@ -789,26 +792,34 @@ public abstract class AbstractJdbc1ResultSet
return
null
;
// SQL NULL
try
{
if
(
s
.
length
()
==
8
)
{
//value is a time value
return
java
.
sql
.
Time
.
valueOf
(
s
);
}
else
if
(
s
.
indexOf
(
"."
)
==
8
)
{
//value is a time value with fractional seconds
java
.
sql
.
Time
l_time
=
java
.
sql
.
Time
.
valueOf
(
s
.
substring
(
0
,
8
));
String
l_strMillis
=
s
.
substring
(
9
);
if
(
l_strMillis
.
length
()
>
3
)
l_strMillis
=
l_strMillis
.
substring
(
0
,
3
);
int
l_millis
=
Integer
.
parseInt
(
l_strMillis
);
if
(
l_millis
<
10
)
{
l_millis
=
l_millis
*
100
;
}
else
if
(
l_millis
<
100
)
{
l_millis
=
l_millis
*
10
;
}
return
new
java
.
sql
.
Time
(
l_time
.
getTime
()
+
l_millis
);
}
else
{
//value is a timestamp
return
new
java
.
sql
.
Time
(
toTimestamp
(
s
,
resultSet
,
pgDataType
).
getTime
());
}
if
(
s
.
length
()
==
8
)
{
//value is a time value
return
java
.
sql
.
Time
.
valueOf
(
s
);
}
else
if
(
s
.
indexOf
(
"."
)
==
8
)
{
//value is a time value with fractional seconds
java
.
sql
.
Time
l_time
=
java
.
sql
.
Time
.
valueOf
(
s
.
substring
(
0
,
8
));
String
l_strMillis
=
s
.
substring
(
9
);
if
(
l_strMillis
.
length
()
>
3
)
l_strMillis
=
l_strMillis
.
substring
(
0
,
3
);
int
l_millis
=
Integer
.
parseInt
(
l_strMillis
);
if
(
l_millis
<
10
)
{
l_millis
=
l_millis
*
100
;
}
else
if
(
l_millis
<
100
)
{
l_millis
=
l_millis
*
10
;
}
return
new
java
.
sql
.
Time
(
l_time
.
getTime
()
+
l_millis
);
}
else
{
//value is a timestamp
return
new
java
.
sql
.
Time
(
toTimestamp
(
s
,
resultSet
,
pgDataType
).
getTime
());
}
}
catch
(
NumberFormatException
e
)
{
...
...
@@ -827,7 +838,7 @@ public abstract class AbstractJdbc1ResultSet
* From version 7.2 postgres returns fractional seconds to 6 places.
* If available, we drop the last 3 digits.
*
* @param s
The ISO formated date string to parse.
* @param s
The ISO formated date string to parse.
* @param resultSet The ResultSet this date is part of.
*
* @return null if s is null or a timestamp of the parsed string s.
...
...
@@ -837,7 +848,7 @@ public abstract class AbstractJdbc1ResultSet
public
static
Timestamp
toTimestamp
(
String
s
,
java
.
sql
.
ResultSet
resultSet
,
String
pgDataType
)
throws
SQLException
{
AbstractJdbc1ResultSet
rs
=
(
AbstractJdbc1ResultSet
)
resultSet
;
AbstractJdbc1ResultSet
rs
=
(
AbstractJdbc1ResultSet
)
resultSet
;
if
(
s
==
null
)
return
null
;
...
...
@@ -847,12 +858,14 @@ public abstract class AbstractJdbc1ResultSet
synchronized
(
rs
)
{
SimpleDateFormat
df
=
null
;
if
(
org
.
postgresql
.
Driver
.
logDebug
)
org
.
postgresql
.
Driver
.
debug
(
"the data from the DB is "
+
s
);
if
(
org
.
postgresql
.
Driver
.
logDebug
)
org
.
postgresql
.
Driver
.
debug
(
"the data from the DB is "
+
s
);
// If first time, create the buffer, otherwise clear it.
if
(
rs
.
sbuf
==
null
)
rs
.
sbuf
=
new
StringBuffer
(
32
);
else
{
else
{
rs
.
sbuf
.
setLength
(
0
);
}
...
...
@@ -880,7 +893,8 @@ public abstract class AbstractJdbc1ResultSet
if
(
i
<
24
)
rs
.
sbuf
.
append
(
c
);
c
=
s
.
charAt
(
i
++);
}
while
(
i
<
slen
&&
Character
.
isDigit
(
c
));
}
while
(
i
<
slen
&&
Character
.
isDigit
(
c
));
// If there wasn't at least 3 digits we should add some zeros
// to make up the 3 digits we tell java to expect.
...
...
@@ -911,37 +925,43 @@ public abstract class AbstractJdbc1ResultSet
}
else
{
// Just found fractional seconds but no timezone.
//If timestamptz then we use GMT, else local timezone
if
(
pgDataType
.
equals
(
"timestamptz"
))
{
rs
.
sbuf
.
append
(
" GMT"
);
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss.SSS z"
);
}
else
{
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss.SSS"
);
}
// Just found fractional seconds but no timezone.
//If timestamptz then we use GMT, else local timezone
if
(
pgDataType
.
equals
(
"timestamptz"
))
{
rs
.
sbuf
.
append
(
" GMT"
);
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss.SSS z"
);
}
else
{
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss.SSS"
);
}
}
}
else
if
(
slen
==
19
)
{
// No tz or fractional second info.
//If timestamptz then we use GMT, else local timezone
if
(
pgDataType
.
equals
(
"timestamptz"
))
{
rs
.
sbuf
.
append
(
" GMT"
);
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss z"
);
}
else
{
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
}
// No tz or fractional second info.
//If timestamptz then we use GMT, else local timezone
if
(
pgDataType
.
equals
(
"timestamptz"
))
{
rs
.
sbuf
.
append
(
" GMT"
);
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss z"
);
}
else
{
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
}
}
else
{
if
(
slen
==
8
&&
s
.
equals
(
"infinity"
))
//java doesn't have a concept of postgres's infinity
//so set to an arbitrary future date
s
=
"9999-01-01"
;
if
(
slen
==
8
&&
s
.
equals
(
"infinity"
))
//java doesn't have a concept of postgres's infinity
//so set to an arbitrary future date
s
=
"9999-01-01"
;
if
(
slen
==
9
&&
s
.
equals
(
"-infinity"
))
//java doesn't have a concept of postgres's infinity
//so set to an arbitrary old date
s
=
"0001-01-01"
;
//java doesn't have a concept of postgres's infinity
//so set to an arbitrary old date
s
=
"0001-01-01"
;
// We must just have a date. This case is
// needed if this method is called on a date
...
...
@@ -952,7 +972,8 @@ public abstract class AbstractJdbc1ResultSet
try
{
// All that's left is to parse the string and return the ts.
if
(
org
.
postgresql
.
Driver
.
logDebug
)
org
.
postgresql
.
Driver
.
debug
(
""
+
df
.
parse
(
rs
.
sbuf
.
toString
()).
getTime
()
);
if
(
org
.
postgresql
.
Driver
.
logDebug
)
org
.
postgresql
.
Driver
.
debug
(
""
+
df
.
parse
(
rs
.
sbuf
.
toString
()).
getTime
()
);
return
new
Timestamp
(
df
.
parse
(
rs
.
sbuf
.
toString
()).
getTime
());
}
...
...
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSetMetaData.java
浏览文件 @
f37c1c48
...
...
@@ -8,7 +8,7 @@ import org.postgresql.util.*;
import
java.sql.SQLException
;
import
java.sql.Types
;
public
abstract
class
AbstractJdbc1ResultSetMetaData
public
abstract
class
AbstractJdbc1ResultSetMetaData
{
protected
Vector
rows
;
...
...
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1Connection.java
浏览文件 @
f37c1c48
...
...
@@ -6,9 +6,9 @@ import java.sql.*;
import
org.postgresql.Field
;
import
org.postgresql.util.PSQLException
;
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/Jdbc1Connection.java,v 1.
4 2002/07/26 05:29:35 barry
Exp $
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/Jdbc1Connection.java,v 1.
5 2002/09/06 21:23:06 momjian
Exp $
* This class implements the java.sql.Connection interface for JDBC1.
* However most of the implementation is really done in
* However most of the implementation is really done in
* org.postgresql.jdbc1.AbstractJdbc1Connection
*/
public
class
Jdbc1Connection
extends
org
.
postgresql
.
jdbc1
.
AbstractJdbc1Connection
implements
java
.
sql
.
Connection
...
...
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1ResultSet.java
浏览文件 @
f37c1c48
...
...
@@ -5,9 +5,9 @@ import java.sql.*;
import
java.util.Vector
;
import
org.postgresql.Field
;
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/Jdbc1ResultSet.java,v 1.
3 2002/07/26 05:29:35 barry
Exp $
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/Jdbc1ResultSet.java,v 1.
4 2002/09/06 21:23:06 momjian
Exp $
* This class implements the java.sql.ResultSet interface for JDBC1.
* However most of the implementation is really done in
* However most of the implementation is really done in
* org.postgresql.jdbc1.AbstractJdbc1ResultSet
*/
public
class
Jdbc1ResultSet
extends
org
.
postgresql
.
jdbc1
.
AbstractJdbc1ResultSet
implements
java
.
sql
.
ResultSet
...
...
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1ResultSetMetaData.java
浏览文件 @
f37c1c48
...
...
@@ -4,7 +4,7 @@ public class Jdbc1ResultSetMetaData extends AbstractJdbc1ResultSetMetaData imple
{
public
Jdbc1ResultSetMetaData
(
java
.
util
.
Vector
rows
,
org
.
postgresql
.
Field
[]
fields
)
{
super
(
rows
,
fields
);
super
(
rows
,
fields
);
}
}
...
...
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1Statement.java
浏览文件 @
f37c1c48
...
...
@@ -3,9 +3,9 @@ package org.postgresql.jdbc1;
import
java.sql.*
;
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/Jdbc1Statement.java,v 1.
2 2002/07/24 22:08:40 barry
Exp $
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/Jdbc1Statement.java,v 1.
3 2002/09/06 21:23:06 momjian
Exp $
* This class implements the java.sql.Statement interface for JDBC1.
* However most of the implementation is really done in
* However most of the implementation is really done in
* org.postgresql.jdbc1.AbstractJdbc1Statement
*/
public
class
Jdbc1Statement
extends
org
.
postgresql
.
jdbc1
.
AbstractJdbc1Statement
implements
java
.
sql
.
Statement
...
...
@@ -13,7 +13,7 @@ public class Jdbc1Statement extends org.postgresql.jdbc1.AbstractJdbc1Statement
public
Jdbc1Statement
(
Jdbc1Connection
c
)
{
super
(
c
);
super
(
c
);
}
}
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Connection.java
浏览文件 @
f37c1c48
...
...
@@ -6,194 +6,206 @@ import java.net.ConnectException;
import
java.sql.*
;
import
org.postgresql.util.PSQLException
;
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2Connection.java,v 1.
1 2002/07/23 03:59:55 barry
Exp $
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2Connection.java,v 1.
2 2002/09/06 21:23:06 momjian
Exp $
* This class defines methods of the jdbc2 specification. This class extends
* org.postgresql.jdbc1.AbstractJdbc1Connection which provides the jdbc1
* methods. The real Connection class (for jdbc2) is org.postgresql.jdbc2.Jdbc2Connection
*/
public
abstract
class
AbstractJdbc2Connection
extends
org
.
postgresql
.
jdbc1
.
AbstractJdbc1Connection
{
/*
* The current type mappings
*/
protected
java
.
util
.
Map
typemap
;
public
java
.
sql
.
Statement
createStatement
()
throws
SQLException
{
// The spec says default of TYPE_FORWARD_ONLY but everyone is used to
// using TYPE_SCROLL_INSENSITIVE
return
createStatement
(
java
.
sql
.
ResultSet
.
TYPE_SCROLL_INSENSITIVE
,
java
.
sql
.
ResultSet
.
CONCUR_READ_ONLY
);
}
public
abstract
java
.
sql
.
Statement
createStatement
(
int
resultSetType
,
int
resultSetConcurrency
)
throws
SQLException
;
public
java
.
sql
.
PreparedStatement
prepareStatement
(
String
sql
)
throws
SQLException
{
return
prepareStatement
(
sql
,
java
.
sql
.
ResultSet
.
TYPE_SCROLL_INSENSITIVE
,
java
.
sql
.
ResultSet
.
CONCUR_READ_ONLY
);
}
public
abstract
java
.
sql
.
PreparedStatement
prepareStatement
(
String
sql
,
int
resultSetType
,
int
resultSetConcurrency
)
throws
SQLException
;
public
java
.
sql
.
CallableStatement
prepareCall
(
String
sql
)
throws
SQLException
{
return
prepareCall
(
sql
,
java
.
sql
.
ResultSet
.
TYPE_SCROLL_INSENSITIVE
,
java
.
sql
.
ResultSet
.
CONCUR_READ_ONLY
);
}
public
abstract
java
.
sql
.
CallableStatement
prepareCall
(
String
sql
,
int
resultSetType
,
int
resultSetConcurrency
)
throws
SQLException
;
public
java
.
util
.
Map
getTypeMap
()
throws
SQLException
{
return
typemap
;
}
public
void
setTypeMap
(
java
.
util
.
Map
map
)
throws
SQLException
{
typemap
=
map
;
}
public
void
cancelQuery
()
throws
SQLException
{
org
.
postgresql
.
PG_Stream
cancelStream
=
null
;
try
{
cancelStream
=
new
org
.
postgresql
.
PG_Stream
(
PG_HOST
,
PG_PORT
);
}
catch
(
ConnectException
cex
)
{
// Added by Peter Mount <peter@retep.org.uk>
// ConnectException is thrown when the connection cannot be made.
// we trap this an return a more meaningful message for the end user
throw
new
PSQLException
(
"postgresql.con.refused"
);
}
catch
(
IOException
e
)
{
throw
new
PSQLException
(
"postgresql.con.failed"
,
e
);
}
// Now we need to construct and send a cancel packet
try
{
cancelStream
.
SendInteger
(
16
,
4
);
cancelStream
.
SendInteger
(
80877102
,
4
);
cancelStream
.
SendInteger
(
pid
,
4
);
cancelStream
.
SendInteger
(
ckey
,
4
);
cancelStream
.
flush
();
}
catch
(
IOException
e
)
{
throw
new
PSQLException
(
"postgresql.con.failed"
,
e
);
}
finally
{
try
{
if
(
cancelStream
!=
null
)
cancelStream
.
close
();
}
catch
(
IOException
e
)
{}
// Ignore
}
}
/*
* This overides the standard internal getObject method so that we can
* check the jdbc2 type map first
*/
public
Object
getObject
(
String
type
,
String
value
)
throws
SQLException
{
if
(
typemap
!=
null
)
{
SQLData
d
=
(
SQLData
)
typemap
.
get
(
type
);
if
(
d
!=
null
)
{
// Handle the type (requires SQLInput & SQLOutput classes to be implemented)
throw
org
.
postgresql
.
Driver
.
notImplemented
();
}
}
// Default to the original method
return
super
.
getObject
(
type
,
value
);
}
//Because the get/setLogStream methods are deprecated in JDBC2
//we use the get/setLogWriter methods here for JDBC2 by overriding
//the base version of this method
protected
void
enableDriverManagerLogging
()
{
if
(
DriverManager
.
getLogWriter
()
==
null
)
{
DriverManager
.
setLogWriter
(
new
PrintWriter
(
System
.
out
));
}
/*
* The current type mappings
*/
protected
java
.
util
.
Map
typemap
;
public
java
.
sql
.
Statement
createStatement
()
throws
SQLException
{
// The spec says default of TYPE_FORWARD_ONLY but everyone is used to
// using TYPE_SCROLL_INSENSITIVE
return
createStatement
(
java
.
sql
.
ResultSet
.
TYPE_SCROLL_INSENSITIVE
,
java
.
sql
.
ResultSet
.
CONCUR_READ_ONLY
);
}
public
abstract
java
.
sql
.
Statement
createStatement
(
int
resultSetType
,
int
resultSetConcurrency
)
throws
SQLException
;
/*
* This implemetation uses the jdbc2Types array to support the jdbc2
* datatypes. Basically jdbc1 and jdbc2 are the same, except that
* jdbc2 adds the Array types.
*/
public
int
getSQLType
(
String
pgTypeName
)
{
int
sqlType
=
Types
.
OTHER
;
// default value
for
(
int
i
=
0
;
i
<
jdbc2Types
.
length
;
i
++)
{
if
(
pgTypeName
.
equals
(
jdbc2Types
[
i
]))
{
sqlType
=
jdbc2Typei
[
i
];
break
;
}
}
return
sqlType
;
}
/*
* This table holds the org.postgresql names for the types supported.
* Any types that map to Types.OTHER (eg POINT) don't go into this table.
* They default automatically to Types.OTHER
*
* Note: This must be in the same order as below.
*
* Tip: keep these grouped together by the Types. value
*/
private
static
final
String
jdbc2Types
[]
=
{
"int2"
,
"int4"
,
"oid"
,
"int8"
,
"cash"
,
"money"
,
"numeric"
,
"float4"
,
"float8"
,
"bpchar"
,
"char"
,
"char2"
,
"char4"
,
"char8"
,
"char16"
,
"varchar"
,
"text"
,
"name"
,
"filename"
,
"bytea"
,
"bool"
,
"date"
,
"time"
,
"abstime"
,
"timestamp"
,
"timestamptz"
,
"_bool"
,
"_char"
,
"_int2"
,
"_int4"
,
"_text"
,
"_oid"
,
"_varchar"
,
"_int8"
,
"_float4"
,
"_float8"
,
"_abstime"
,
"_date"
,
"_time"
,
"_timestamp"
,
"_numeric"
,
"_bytea"
};
/*
* This table holds the JDBC type for each entry above.
*
* Note: This must be in the same order as above
*
* Tip: keep these grouped together by the Types. value
*/
private
static
final
int
jdbc2Typei
[]
=
{
Types
.
SMALLINT
,
Types
.
INTEGER
,
Types
.
INTEGER
,
Types
.
BIGINT
,
Types
.
DOUBLE
,
Types
.
DOUBLE
,
Types
.
NUMERIC
,
Types
.
REAL
,
Types
.
DOUBLE
,
Types
.
CHAR
,
Types
.
CHAR
,
Types
.
CHAR
,
Types
.
CHAR
,
Types
.
CHAR
,
Types
.
CHAR
,
Types
.
VARCHAR
,
Types
.
VARCHAR
,
Types
.
VARCHAR
,
Types
.
VARCHAR
,
Types
.
BINARY
,
Types
.
BIT
,
Types
.
DATE
,
Types
.
TIME
,
Types
.
TIMESTAMP
,
Types
.
TIMESTAMP
,
Types
.
TIMESTAMP
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
};
public
java
.
sql
.
PreparedStatement
prepareStatement
(
String
sql
)
throws
SQLException
{
return
prepareStatement
(
sql
,
java
.
sql
.
ResultSet
.
TYPE_SCROLL_INSENSITIVE
,
java
.
sql
.
ResultSet
.
CONCUR_READ_ONLY
);
}
public
abstract
java
.
sql
.
PreparedStatement
prepareStatement
(
String
sql
,
int
resultSetType
,
int
resultSetConcurrency
)
throws
SQLException
;
public
java
.
sql
.
CallableStatement
prepareCall
(
String
sql
)
throws
SQLException
{
return
prepareCall
(
sql
,
java
.
sql
.
ResultSet
.
TYPE_SCROLL_INSENSITIVE
,
java
.
sql
.
ResultSet
.
CONCUR_READ_ONLY
);
}
public
abstract
java
.
sql
.
CallableStatement
prepareCall
(
String
sql
,
int
resultSetType
,
int
resultSetConcurrency
)
throws
SQLException
;
public
java
.
util
.
Map
getTypeMap
()
throws
SQLException
{
return
typemap
;
}
public
void
setTypeMap
(
java
.
util
.
Map
map
)
throws
SQLException
{
typemap
=
map
;
}
public
void
cancelQuery
()
throws
SQLException
{
org
.
postgresql
.
PG_Stream
cancelStream
=
null
;
try
{
cancelStream
=
new
org
.
postgresql
.
PG_Stream
(
PG_HOST
,
PG_PORT
);
}
catch
(
ConnectException
cex
)
{
// Added by Peter Mount <peter@retep.org.uk>
// ConnectException is thrown when the connection cannot be made.
// we trap this an return a more meaningful message for the end user
throw
new
PSQLException
(
"postgresql.con.refused"
);
}
catch
(
IOException
e
)
{
throw
new
PSQLException
(
"postgresql.con.failed"
,
e
);
}
// Now we need to construct and send a cancel packet
try
{
cancelStream
.
SendInteger
(
16
,
4
);
cancelStream
.
SendInteger
(
80877102
,
4
);
cancelStream
.
SendInteger
(
pid
,
4
);
cancelStream
.
SendInteger
(
ckey
,
4
);
cancelStream
.
flush
();
}
catch
(
IOException
e
)
{
throw
new
PSQLException
(
"postgresql.con.failed"
,
e
);
}
finally
{
try
{
if
(
cancelStream
!=
null
)
cancelStream
.
close
();
}
catch
(
IOException
e
)
{}
// Ignore
}
}
/*
* This overides the standard internal getObject method so that we can
* check the jdbc2 type map first
*/
public
Object
getObject
(
String
type
,
String
value
)
throws
SQLException
{
if
(
typemap
!=
null
)
{
SQLData
d
=
(
SQLData
)
typemap
.
get
(
type
);
if
(
d
!=
null
)
{
// Handle the type (requires SQLInput & SQLOutput classes to be implemented)
throw
org
.
postgresql
.
Driver
.
notImplemented
();
}
}
// Default to the original method
return
super
.
getObject
(
type
,
value
);
}
//Because the get/setLogStream methods are deprecated in JDBC2
//we use the get/setLogWriter methods here for JDBC2 by overriding
//the base version of this method
protected
void
enableDriverManagerLogging
()
{
if
(
DriverManager
.
getLogWriter
()
==
null
)
{
DriverManager
.
setLogWriter
(
new
PrintWriter
(
System
.
out
));
}
}
/*
* This implemetation uses the jdbc2Types array to support the jdbc2
* datatypes. Basically jdbc1 and jdbc2 are the same, except that
* jdbc2 adds the Array types.
*/
public
int
getSQLType
(
String
pgTypeName
)
{
int
sqlType
=
Types
.
OTHER
;
// default value
for
(
int
i
=
0
;
i
<
jdbc2Types
.
length
;
i
++)
{
if
(
pgTypeName
.
equals
(
jdbc2Types
[
i
]))
{
sqlType
=
jdbc2Typei
[
i
];
break
;
}
}
return
sqlType
;
}
/*
* This table holds the org.postgresql names for the types supported.
* Any types that map to Types.OTHER (eg POINT) don't go into this table.
* They default automatically to Types.OTHER
*
* Note: This must be in the same order as below.
*
* Tip: keep these grouped together by the Types. value
*/
private
static
final
String
jdbc2Types
[]
=
{
"int2"
,
"int4"
,
"oid"
,
"int8"
,
"cash"
,
"money"
,
"numeric"
,
"float4"
,
"float8"
,
"bpchar"
,
"char"
,
"char2"
,
"char4"
,
"char8"
,
"char16"
,
"varchar"
,
"text"
,
"name"
,
"filename"
,
"bytea"
,
"bool"
,
"date"
,
"time"
,
"abstime"
,
"timestamp"
,
"timestamptz"
,
"_bool"
,
"_char"
,
"_int2"
,
"_int4"
,
"_text"
,
"_oid"
,
"_varchar"
,
"_int8"
,
"_float4"
,
"_float8"
,
"_abstime"
,
"_date"
,
"_time"
,
"_timestamp"
,
"_numeric"
,
"_bytea"
};
/*
* This table holds the JDBC type for each entry above.
*
* Note: This must be in the same order as above
*
* Tip: keep these grouped together by the Types. value
*/
private
static
final
int
jdbc2Typei
[]
=
{
Types
.
SMALLINT
,
Types
.
INTEGER
,
Types
.
INTEGER
,
Types
.
BIGINT
,
Types
.
DOUBLE
,
Types
.
DOUBLE
,
Types
.
NUMERIC
,
Types
.
REAL
,
Types
.
DOUBLE
,
Types
.
CHAR
,
Types
.
CHAR
,
Types
.
CHAR
,
Types
.
CHAR
,
Types
.
CHAR
,
Types
.
CHAR
,
Types
.
VARCHAR
,
Types
.
VARCHAR
,
Types
.
VARCHAR
,
Types
.
VARCHAR
,
Types
.
BINARY
,
Types
.
BIT
,
Types
.
DATE
,
Types
.
TIME
,
Types
.
TIMESTAMP
,
Types
.
TIMESTAMP
,
Types
.
TIMESTAMP
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
,
Types
.
ARRAY
};
...
...
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java
浏览文件 @
f37c1c48
...
...
@@ -13,7 +13,7 @@ public abstract class AbstractJdbc2DatabaseMetaData extends org.postgresql.jdbc1
public
AbstractJdbc2DatabaseMetaData
(
AbstractJdbc2Connection
conn
)
{
super
(
conn
);
super
(
conn
);
}
...
...
@@ -61,18 +61,18 @@ public abstract class AbstractJdbc2DatabaseMetaData extends org.postgresql.jdbc1
/* lots of unsupported stuff... */
public
boolean
ownUpdatesAreVisible
(
int
type
)
throws
SQLException
{
return
true
;
return
true
;
}
public
boolean
ownDeletesAreVisible
(
int
type
)
throws
SQLException
{
return
true
;
return
true
;
}
public
boolean
ownInsertsAreVisible
(
int
type
)
throws
SQLException
{
// indicates that
return
true
;
// indicates that
return
true
;
}
public
boolean
othersUpdatesAreVisible
(
int
type
)
throws
SQLException
...
...
@@ -117,10 +117,10 @@ public abstract class AbstractJdbc2DatabaseMetaData extends org.postgresql.jdbc1
* Return user defined types in a schema
*/
public
java
.
sql
.
ResultSet
getUDTs
(
String
catalog
,
String
schemaPattern
,
String
typeNamePattern
,
int
[]
types
)
throws
SQLException
String
schemaPattern
,
String
typeNamePattern
,
int
[]
types
)
throws
SQLException
{
throw
org
.
postgresql
.
Driver
.
notImplemented
();
}
...
...
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSetMetaData.java
浏览文件 @
f37c1c48
...
...
@@ -19,7 +19,7 @@ public abstract class AbstractJdbc2ResultSetMetaData extends org.postgresql.jdbc
*/
public
AbstractJdbc2ResultSetMetaData
(
Vector
rows
,
Field
[]
fields
)
{
super
(
rows
,
fields
);
super
(
rows
,
fields
);
}
/*
...
...
@@ -459,53 +459,53 @@ public abstract class AbstractJdbc2ResultSetMetaData extends org.postgresql.jdbc
// This can hook into our PG_Object mechanism
/**
* Returns the fully-qualified name of the Java class whose instances
* Returns the fully-qualified name of the Java class whose instances
* are manufactured if the method <code>ResultSet.getObject</code>
* is called to retrieve a value from the column.
*
*
* <code>ResultSet.getObject</code> may return a subclass of the class
* returned by this method.
*
* @param column the first column is 1, the second is 2, ...
* @return the fully-qualified name of the class in the Java programming
*
language that would be used by the method
*
<code>ResultSet.getObject</code> to retrieve the value in the specified
*
column. This is the class name used for custom mapping.
*
language that would be used by the method
*
<code>ResultSet.getObject</code> to retrieve the value in the specified
*
column. This is the class name used for custom mapping.
* @exception SQLException if a database access error occurs
*/
public
String
getColumnClassName
(
int
column
)
throws
SQLException
{
/*
The following data type mapping came from ../Field.java.
"int2",
"int4","oid",
"int8",
"cash","money",
"numeric",
"float4",
"float8",
"bpchar","char","char2","char4","char8","char16",
"varchar","text","name","filename",
"bool",
"date",
"time",
"abstime","timestamp"
Types.SMALLINT,
Types.INTEGER,Types.INTEGER,
Types.BIGINT,
Types.DOUBLE,Types.DOUBLE,
Types.NUMERIC,
Types.REAL,
Types.DOUBLE,
Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,
Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,
Types.BIT,
Types.DATE,
Types.TIME,
Types.TIMESTAMP,Types.TIMESTAMP
*/
/*
The following data type mapping came from ../Field.java.
"int2",
"int4","oid",
"int8",
"cash","money",
"numeric",
"float4",
"float8",
"bpchar","char","char2","char4","char8","char16",
"varchar","text","name","filename",
"bool",
"date",
"time",
"abstime","timestamp"
Types.SMALLINT,
Types.INTEGER,Types.INTEGER,
Types.BIGINT,
Types.DOUBLE,Types.DOUBLE,
Types.NUMERIC,
Types.REAL,
Types.DOUBLE,
Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,
Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,
Types.BIT,
Types.DATE,
Types.TIME,
Types.TIMESTAMP,Types.TIMESTAMP
*/
Field
field
=
getField
(
column
);
int
sql_type
=
field
.
getSQLType
();
...
...
@@ -513,40 +513,40 @@ public abstract class AbstractJdbc2ResultSetMetaData extends org.postgresql.jdbc
switch
(
sql_type
)
{
case
Types
.
BIT
:
return
(
"java.lang.Boolean"
);
return
(
"java.lang.Boolean"
);
case
Types
.
SMALLINT
:
return
(
"java.lang.Short"
);
return
(
"java.lang.Short"
);
case
Types
.
INTEGER
:
return
(
"java.lang.Integer"
);
return
(
"java.lang.Integer"
);
case
Types
.
BIGINT
:
return
(
"java.lang.Long"
);
return
(
"java.lang.Long"
);
case
Types
.
NUMERIC
:
return
(
"java.math.BigDecimal"
);
return
(
"java.math.BigDecimal"
);
case
Types
.
REAL
:
return
(
"java.lang.Float"
);
return
(
"java.lang.Float"
);
case
Types
.
DOUBLE
:
return
(
"java.lang.Double"
);
return
(
"java.lang.Double"
);
case
Types
.
CHAR
:
case
Types
.
VARCHAR
:
return
(
"java.lang.String"
);
return
(
"java.lang.String"
);
case
Types
.
DATE
:
return
(
"java.sql.Date"
);
return
(
"java.sql.Date"
);
case
Types
.
TIME
:
return
(
"java.sql.Time"
);
return
(
"java.sql.Time"
);
case
Types
.
TIMESTAMP
:
return
(
"java.sql.Timestamp"
);
return
(
"java.sql.Timestamp"
);
case
Types
.
BINARY
:
case
Types
.
VARBINARY
:
return
(
"[B"
);
return
(
"[B"
);
case
Types
.
ARRAY
:
return
(
"java.sql.Array"
);
return
(
"java.sql.Array"
);
default
:
String
type
=
field
.
getPGType
();
if
(
"unknown"
.
equals
(
type
))
{
return
(
"java.lang.String"
);
return
(
"java.lang.String"
);
}
return
(
"java.lang.Object"
);
return
(
"java.lang.Object"
);
}
}
}
...
...
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java
浏览文件 @
f37c1c48
...
...
@@ -8,7 +8,7 @@ import java.util.Vector;
import
org.postgresql.largeobject.*
;
import
org.postgresql.util.PSQLException
;
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2Statement.java,v 1.
5 2002/09/02 03:07:36 barry
Exp $
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2Statement.java,v 1.
6 2002/09/06 21:23:06 momjian
Exp $
* This class defines methods of the jdbc2 specification. This class extends
* org.postgresql.jdbc1.AbstractJdbc1Statement which provides the jdbc1
* methods. The real Statement class (for jdbc2) is org.postgresql.jdbc2.Jdbc2Statement
...
...
@@ -45,8 +45,8 @@ public abstract class AbstractJdbc2Statement extends org.postgresql.jdbc1.Abstra
*/
public
boolean
execute
()
throws
SQLException
{
boolean
l_return
=
super
.
execute
();
//Now do the jdbc2 specific stuff
boolean
l_return
=
super
.
execute
();
//Now do the jdbc2 specific stuff
//required for ResultSet.getStatement() to work and updateable resultsets
((
AbstractJdbc2ResultSet
)
result
).
setStatement
((
Statement
)
this
);
...
...
@@ -64,7 +64,7 @@ public abstract class AbstractJdbc2Statement extends org.postgresql.jdbc1.Abstra
public
void
clearBatch
()
throws
SQLException
{
batch
=
null
;
batch
=
null
;
}
public
int
[]
executeBatch
()
throws
SQLException
...
...
@@ -86,7 +86,7 @@ public abstract class AbstractJdbc2Statement extends org.postgresql.jdbc1.Abstra
PBatchUpdateException
updex
=
new
PBatchUpdateException
(
"postgresql.stat.batch.error"
,
new
Integer
(
i
),
batch
.
elementAt
(
i
),
resultSucceeded
);
new
Integer
(
i
),
batch
.
elementAt
(
i
),
resultSucceeded
);
updex
.
setNextException
(
e
);
throw
updex
;
...
...
@@ -183,12 +183,12 @@ public abstract class AbstractJdbc2Statement extends org.postgresql.jdbc1.Abstra
// is buffered internally anyhow, so there would be no performance
// boost gained, if anything it would be worse!
int
bytesRemaining
=
(
int
)
x
.
length
();
int
numRead
=
l_inStream
.
read
(
buf
,
0
,
Math
.
min
(
buf
.
length
,
bytesRemaining
));
int
numRead
=
l_inStream
.
read
(
buf
,
0
,
Math
.
min
(
buf
.
length
,
bytesRemaining
));
while
(
numRead
!=
-
1
&&
bytesRemaining
>
0
)
{
bytesRemaining
-=
numRead
;
los
.
write
(
buf
,
0
,
numRead
);
numRead
=
l_inStream
.
read
(
buf
,
0
,
Math
.
min
(
buf
.
length
,
bytesRemaining
));
bytesRemaining
-=
numRead
;
los
.
write
(
buf
,
0
,
numRead
);
numRead
=
l_inStream
.
read
(
buf
,
0
,
Math
.
min
(
buf
.
length
,
bytesRemaining
));
}
los
.
close
();
}
...
...
@@ -384,9 +384,10 @@ public abstract class AbstractJdbc2Statement extends org.postgresql.jdbc1.Abstra
}
//This is needed by AbstractJdbc2ResultSet to determine if the query is updateable or not
protected
String
[]
getSqlFragments
()
{
return
m_sqlFragments
;
}
//This is needed by AbstractJdbc2ResultSet to determine if the query is updateable or not
protected
String
[]
getSqlFragments
()
{
return
m_sqlFragments
;
}
}
src/interfaces/jdbc/org/postgresql/jdbc2/Array.java
浏览文件 @
f37c1c48
...
...
@@ -27,7 +27,7 @@ public class Array implements java.sql.Array
{
private
org
.
postgresql
.
PGConnection
conn
=
null
;
private
org
.
postgresql
.
Field
field
=
null
;
private
ResultSet
rs
;
private
ResultSet
rs
;
private
int
idx
=
0
;
private
String
rawString
=
null
;
...
...
@@ -44,7 +44,7 @@ public class Array implements java.sql.Array
{
this
.
conn
=
conn
;
this
.
field
=
field
;
this
.
rs
=
rs
;
this
.
rs
=
rs
;
this
.
idx
=
idx
;
this
.
rawString
=
((
AbstractJdbc2ResultSet
)
rs
).
getFixedString
(
idx
);
}
...
...
@@ -76,9 +76,9 @@ public class Array implements java.sql.Array
ArrayList
array
=
new
ArrayList
();
/* Check if the String is also not an empty array
* otherwise there will be an exception thrown below
* in the ResultSet.toX with an empty string.
* -- Doug Fields <dfields-pg-jdbc@pexicom.com> Feb 20, 2002 */
* otherwise there will be an exception thrown below
* in the ResultSet.toX with an empty string.
* -- Doug Fields <dfields-pg-jdbc@pexicom.com> Feb 20, 2002 */
if
(
rawString
!=
null
&&
!
rawString
.
equals
(
"{}"
)
)
{
...
...
@@ -88,9 +88,9 @@ public class Array implements java.sql.Array
boolean
insideString
=
false
;
for
(
int
i
=
0
;
i
<
chars
.
length
;
i
++
)
{
if
(
chars
[
i
]
==
'\\'
)
//escape character that we need to skip
i
++;
if
(
chars
[
i
]
==
'\\'
)
//escape character that we need to skip
i
++;
if
(
chars
[
i
]
==
'{'
)
{
if
(
foundOpen
)
// Only supports 1-D arrays for now
...
...
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Connection.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java
浏览文件 @
f37c1c48
...
...
@@ -5,9 +5,9 @@ import java.sql.*;
import
java.util.Vector
;
import
org.postgresql.Field
;
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/Jdbc2ResultSet.java,v 1.
4 2002/08/14 20:35:39 barry
Exp $
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/Jdbc2ResultSet.java,v 1.
5 2002/09/06 21:23:06 momjian
Exp $
* This class implements the java.sql.ResultSet interface for JDBC2.
* However most of the implementation is really done in
* However most of the implementation is really done in
* org.postgresql.jdbc2.AbstractJdbc2ResultSet or one of it's parents
*/
public
class
Jdbc2ResultSet
extends
org
.
postgresql
.
jdbc2
.
AbstractJdbc2ResultSet
implements
java
.
sql
.
ResultSet
...
...
@@ -23,13 +23,15 @@ public class Jdbc2ResultSet extends org.postgresql.jdbc2.AbstractJdbc2ResultSet
return
new
Jdbc2ResultSetMetaData
(
rows
,
fields
);
}
public
java
.
sql
.
Clob
getClob
(
int
i
)
throws
SQLException
{
return
new
org
.
postgresql
.
jdbc2
.
Jdbc2Clob
(
connection
,
getInt
(
i
));
}
public
java
.
sql
.
Clob
getClob
(
int
i
)
throws
SQLException
{
return
new
org
.
postgresql
.
jdbc2
.
Jdbc2Clob
(
connection
,
getInt
(
i
));
}
public
java
.
sql
.
Blob
getBlob
(
int
i
)
throws
SQLException
{
return
new
org
.
postgresql
.
jdbc2
.
Jdbc2Blob
(
connection
,
getInt
(
i
));
}
public
java
.
sql
.
Blob
getBlob
(
int
i
)
throws
SQLException
{
return
new
org
.
postgresql
.
jdbc2
.
Jdbc2Blob
(
connection
,
getInt
(
i
));
}
}
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2ResultSetMetaData.java
浏览文件 @
f37c1c48
...
...
@@ -4,7 +4,7 @@ public class Jdbc2ResultSetMetaData extends AbstractJdbc2ResultSetMetaData imple
{
public
Jdbc2ResultSetMetaData
(
java
.
util
.
Vector
rows
,
org
.
postgresql
.
Field
[]
fields
)
{
super
(
rows
,
fields
);
super
(
rows
,
fields
);
}
}
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Statement.java
浏览文件 @
f37c1c48
...
...
@@ -3,9 +3,9 @@ package org.postgresql.jdbc2;
import
java.sql.*
;
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/Jdbc2Statement.java,v 1.
2 2002/07/24 22:08:43 barry
Exp $
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/Jdbc2Statement.java,v 1.
3 2002/09/06 21:23:06 momjian
Exp $
* This class implements the java.sql.Statement interface for JDBC2.
* However most of the implementation is really done in
* However most of the implementation is really done in
* org.postgresql.jdbc2.AbstractJdbc2Statement or one of it's parents
*/
public
class
Jdbc2Statement
extends
org
.
postgresql
.
jdbc2
.
AbstractJdbc2Statement
implements
java
.
sql
.
Statement
...
...
src/interfaces/jdbc/org/postgresql/jdbc2/optional/BaseDataSource.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc2/optional/ConnectionPool.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc2/optional/PGObjectFactory.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc2/optional/PooledConnectionImpl.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc2/optional/PoolingDataSource.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc2/optional/SimpleDataSource.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3Blob.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3Clob.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3Connection.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3DatabaseMetaData.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3ResultSet.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3Statement.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3CallableStatement.java
浏览文件 @
f37c1c48
...
...
@@ -5,11 +5,11 @@ import java.sql.*;
public
class
Jdbc3CallableStatement
extends
org
.
postgresql
.
jdbc3
.
AbstractJdbc3Statement
implements
java
.
sql
.
CallableStatement
{
public
Jdbc3CallableStatement
(
Jdbc3Connection
connection
,
String
sql
)
throws
SQLException
{
super
(
connection
,
sql
);
}
}
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3Connection.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3DatabaseMetaData.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3PreparedStatement.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3ResultSet.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3ResultSetMetaData.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3Statement.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/largeobject/LargeObject.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/largeobject/LargeObjectManager.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/test/jdbc2/CallableStmtTest.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/test/jdbc2/JBuilderTest.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
浏览文件 @
f37c1c48
...
...
@@ -63,7 +63,7 @@ public class Jdbc2TestSuite extends TestSuite
suite
.
addTestSuite
(
UpdateableResultTest
.
class
);
suite
.
addTestSuite
(
CallableStmtTest
.
class
);
// That's all folks
return
suite
;
}
...
...
src/interfaces/jdbc/org/postgresql/test/jdbc2/MiscTest.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/test/jdbc2/TimestampTest.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/BaseDataSourceTest.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/ConnectionPoolTest.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/OptionalTestSuite.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/SimpleDataSourceTest.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3TestSuite.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/util/PGbytea.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/util/PGtokenizer.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
src/interfaces/jdbc/org/postgresql/util/Serialize.java
浏览文件 @
f37c1c48
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录