Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
2,169 additions
and
1,910 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
329 changes: 165 additions & 164 deletions
329
src/main/java/com/alibaba/druid/util/OracleUtils.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,164 +1,165 @@ | ||
/* | ||
* Copyright 1999-2011 Alibaba Group Holding Ltd. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package com.alibaba.druid.util; | ||
|
||
import java.sql.Connection; | ||
import java.sql.PreparedStatement; | ||
import java.sql.ResultSet; | ||
import java.sql.SQLException; | ||
|
||
import javax.sql.XAConnection; | ||
import javax.transaction.xa.XAException; | ||
|
||
import oracle.jdbc.OracleConnection; | ||
import oracle.jdbc.OracleResultSet; | ||
import oracle.jdbc.OracleStatement; | ||
import oracle.jdbc.internal.OraclePreparedStatement; | ||
import oracle.jdbc.xa.client.OracleXAConnection; | ||
import oracle.sql.ROWID; | ||
|
||
import com.alibaba.druid.pool.DruidPooledConnection; | ||
import com.alibaba.druid.support.logging.Log; | ||
import com.alibaba.druid.support.logging.LogFactory; | ||
|
||
public class OracleUtils { | ||
|
||
private final static Log LOG = LogFactory.getLog(OracleUtils.class); | ||
|
||
public static XAConnection OracleXAConnection(Connection oracleConnection) throws XAException { | ||
return new OracleXAConnection(oracleConnection); | ||
} | ||
|
||
public static int getRowPrefetch(PreparedStatement stmt) throws SQLException { | ||
OracleStatement oracleStmt = stmt.unwrap(OracleStatement.class); | ||
|
||
if (oracleStmt == null) { | ||
return -1; | ||
} | ||
|
||
return oracleStmt.getRowPrefetch(); | ||
} | ||
|
||
public static void setRowPrefetch(PreparedStatement stmt, int value) throws SQLException { | ||
OracleStatement oracleStmt = stmt.unwrap(OracleStatement.class); | ||
if (oracleStmt != null) { | ||
oracleStmt.setRowPrefetch(value); | ||
} | ||
} | ||
|
||
public static void enterImplicitCache(PreparedStatement stmt) throws SQLException { | ||
oracle.jdbc.internal.OraclePreparedStatement oracleStmt = unwrapInternal(stmt); | ||
if (oracleStmt != null) { | ||
oracleStmt.enterImplicitCache(); | ||
} | ||
} | ||
|
||
public static void exitImplicitCacheToClose(PreparedStatement stmt) throws SQLException { | ||
oracle.jdbc.internal.OraclePreparedStatement oracleStmt = unwrapInternal(stmt); | ||
if (oracleStmt != null) { | ||
oracleStmt.exitImplicitCacheToClose(); | ||
} | ||
} | ||
|
||
public static void exitImplicitCacheToActive(PreparedStatement stmt) throws SQLException { | ||
oracle.jdbc.internal.OraclePreparedStatement oracleStmt = unwrapInternal(stmt); | ||
if (oracleStmt != null) { | ||
oracleStmt.exitImplicitCacheToActive(); | ||
} | ||
} | ||
|
||
public static OraclePreparedStatement unwrapInternal(PreparedStatement stmt) throws SQLException { | ||
if (stmt instanceof OraclePreparedStatement) { | ||
return (OraclePreparedStatement) stmt; | ||
} | ||
|
||
OraclePreparedStatement unwrapped = stmt.unwrap(OraclePreparedStatement.class); | ||
|
||
if (unwrapped == null) { | ||
LOG.error("can not unwrap statement : " + stmt.getClass()); | ||
} | ||
|
||
return unwrapped; | ||
} | ||
|
||
public static short getVersionNumber(DruidPooledConnection conn) throws SQLException { | ||
oracle.jdbc.internal.OracleConnection oracleConn = (oracle.jdbc.internal.OracleConnection) unwrap(conn); | ||
return oracleConn.getVersionNumber(); | ||
} | ||
|
||
public static void setDefaultRowPrefetch(Connection conn, int value) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
oracleConn.setDefaultRowPrefetch(value); | ||
} | ||
|
||
public static int getDefaultRowPrefetch(Connection conn, int value) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
return oracleConn.getDefaultRowPrefetch(); | ||
} | ||
|
||
public static boolean getImplicitCachingEnabled(Connection conn) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
return oracleConn.getImplicitCachingEnabled(); | ||
} | ||
|
||
public static int getStatementCacheSize(Connection conn) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
return oracleConn.getStatementCacheSize(); | ||
} | ||
|
||
public static void purgeImplicitCache(Connection conn) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
oracleConn.purgeImplicitCache(); | ||
} | ||
|
||
public static void setImplicitCachingEnabled(Connection conn, boolean cache) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
oracleConn.setImplicitCachingEnabled(cache); | ||
} | ||
|
||
public static void setStatementCacheSize(Connection conn, int size) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
oracleConn.setStatementCacheSize(size); | ||
} | ||
|
||
public static int pingDatabase(Connection conn) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
return oracleConn.pingDatabase(1000); | ||
} | ||
|
||
public static void openProxySession(Connection conn, int type, java.util.Properties prop) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
oracleConn.openProxySession(type, prop); | ||
} | ||
|
||
public static int getDefaultExecuteBatch(Connection conn) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
return oracleConn.getDefaultExecuteBatch(); | ||
} | ||
|
||
public static OracleConnection unwrap(Connection conn) throws SQLException { | ||
if (conn instanceof OracleConnection) { | ||
return (OracleConnection) conn; | ||
} | ||
|
||
return conn.unwrap(OracleConnection.class); | ||
} | ||
|
||
public static ROWID getROWID(ResultSet rs, int columnIndex) throws SQLException { | ||
OracleResultSet oracleResultSet = rs.unwrap(OracleResultSet.class); | ||
return oracleResultSet.getROWID(columnIndex); | ||
} | ||
} | ||
/* | ||
* Copyright 1999-2011 Alibaba Group Holding Ltd. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package com.alibaba.druid.util; | ||
|
||
import java.sql.Connection; | ||
import java.sql.PreparedStatement; | ||
import java.sql.ResultSet; | ||
import java.sql.SQLException; | ||
|
||
import javax.sql.XAConnection; | ||
import javax.transaction.xa.XAException; | ||
|
||
import oracle.jdbc.OracleConnection; | ||
import oracle.jdbc.OracleResultSet; | ||
import oracle.jdbc.OracleStatement; | ||
import oracle.jdbc.internal.OraclePreparedStatement; | ||
import oracle.jdbc.xa.client.OracleXAConnection; | ||
import oracle.sql.ROWID; | ||
|
||
import com.alibaba.druid.pool.DruidPooledConnection; | ||
import com.alibaba.druid.support.logging.Log; | ||
import com.alibaba.druid.support.logging.LogFactory; | ||
|
||
public class OracleUtils { | ||
|
||
private final static Log LOG = LogFactory.getLog(OracleUtils.class); | ||
|
||
public static XAConnection OracleXAConnection(Connection oracleConnection) throws XAException { | ||
return new OracleXAConnection(oracleConnection); | ||
} | ||
|
||
public static int getRowPrefetch(PreparedStatement stmt) throws SQLException { | ||
OracleStatement oracleStmt = stmt.unwrap(OracleStatement.class); | ||
|
||
if (oracleStmt == null) { | ||
return -1; | ||
} | ||
|
||
return oracleStmt.getRowPrefetch(); | ||
} | ||
|
||
public static void setRowPrefetch(PreparedStatement stmt, int value) throws SQLException { | ||
OracleStatement oracleStmt = stmt.unwrap(OracleStatement.class); | ||
if (oracleStmt != null) { | ||
oracleStmt.setRowPrefetch(value); | ||
} | ||
} | ||
|
||
public static void enterImplicitCache(PreparedStatement stmt) throws SQLException { | ||
oracle.jdbc.internal.OraclePreparedStatement oracleStmt = unwrapInternal(stmt); | ||
if (oracleStmt != null) { | ||
oracleStmt.enterImplicitCache(); | ||
} | ||
} | ||
|
||
public static void exitImplicitCacheToClose(PreparedStatement stmt) throws SQLException { | ||
oracle.jdbc.internal.OraclePreparedStatement oracleStmt = unwrapInternal(stmt); | ||
if (oracleStmt != null) { | ||
oracleStmt.exitImplicitCacheToClose(); | ||
} | ||
} | ||
|
||
public static void exitImplicitCacheToActive(PreparedStatement stmt) throws SQLException { | ||
oracle.jdbc.internal.OraclePreparedStatement oracleStmt = unwrapInternal(stmt); | ||
if (oracleStmt != null) { | ||
oracleStmt.exitImplicitCacheToActive(); | ||
} | ||
} | ||
|
||
public static OraclePreparedStatement unwrapInternal(PreparedStatement stmt) throws SQLException { | ||
if (stmt instanceof OraclePreparedStatement) { | ||
return (OraclePreparedStatement) stmt; | ||
} | ||
|
||
OraclePreparedStatement unwrapped = stmt.unwrap(OraclePreparedStatement.class); | ||
|
||
if (unwrapped == null) { | ||
LOG.error("can not unwrap statement : " + stmt.getClass()); | ||
} | ||
|
||
return unwrapped; | ||
} | ||
|
||
public static short getVersionNumber(DruidPooledConnection conn) throws SQLException { | ||
oracle.jdbc.internal.OracleConnection oracleConn = (oracle.jdbc.internal.OracleConnection) unwrap(conn); | ||
return oracleConn.getVersionNumber(); | ||
} | ||
|
||
public static void setDefaultRowPrefetch(Connection conn, int value) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
oracleConn.setDefaultRowPrefetch(value); | ||
} | ||
|
||
public static int getDefaultRowPrefetch(Connection conn, int value) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
return oracleConn.getDefaultRowPrefetch(); | ||
} | ||
|
||
public static boolean getImplicitCachingEnabled(Connection conn) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
return oracleConn.getImplicitCachingEnabled(); | ||
} | ||
|
||
public static int getStatementCacheSize(Connection conn) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
return oracleConn.getStatementCacheSize(); | ||
} | ||
|
||
public static void purgeImplicitCache(Connection conn) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
oracleConn.purgeImplicitCache(); | ||
} | ||
|
||
public static void setImplicitCachingEnabled(Connection conn, boolean cache) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
oracleConn.setImplicitCachingEnabled(cache); | ||
} | ||
|
||
public static void setStatementCacheSize(Connection conn, int size) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
oracleConn.setStatementCacheSize(size); | ||
} | ||
|
||
@SuppressWarnings("deprecation") | ||
public static int pingDatabase(Connection conn) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
return oracleConn.pingDatabase(1000); | ||
} | ||
|
||
public static void openProxySession(Connection conn, int type, java.util.Properties prop) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
oracleConn.openProxySession(type, prop); | ||
} | ||
|
||
public static int getDefaultExecuteBatch(Connection conn) throws SQLException { | ||
OracleConnection oracleConn = unwrap(conn); | ||
return oracleConn.getDefaultExecuteBatch(); | ||
} | ||
|
||
public static OracleConnection unwrap(Connection conn) throws SQLException { | ||
if (conn instanceof OracleConnection) { | ||
return (OracleConnection) conn; | ||
} | ||
|
||
return conn.unwrap(OracleConnection.class); | ||
} | ||
|
||
public static ROWID getROWID(ResultSet rs, int columnIndex) throws SQLException { | ||
OracleResultSet oracleResultSet = rs.unwrap(OracleResultSet.class); | ||
return oracleResultSet.getROWID(columnIndex); | ||
} | ||
} |
Oops, something went wrong.