annotate src/main/java/org/monetdb/jdbc/MonetStatement.java @ 451:3dfcd06fd8ba

Correcting typos in documentation text. Also improved the readability of the generated javadoc documents.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 04 Mar 2021 18:57:51 +0100 (2021-03-04)
parents 1e278695fe54
children 849af4b76b28
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1 /*
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
2 * This Source Code Form is subject to the terms of the Mozilla Public
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
5 *
406
bf9f6b6ecf40 Update Copyright year.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 392
diff changeset
6 * Copyright 1997 - July 2008 CWI, August 2008 - 2021 MonetDB B.V.
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
7 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
8
391
f523727db392 Moved Java classes from packages starting with nl.cwi.monetdb.* to package org.monetdb.*
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 378
diff changeset
9 package org.monetdb.jdbc;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
10
391
f523727db392 Moved Java classes from packages starting with nl.cwi.monetdb.* to package org.monetdb.*
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 378
diff changeset
11 import org.monetdb.mcl.net.MapiSocket;
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
12 import java.sql.BatchUpdateException;
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
13 import java.sql.Connection;
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
14 import java.sql.Statement;
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
15 import java.sql.ResultSet;
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
16 import java.sql.SQLException;
179
f0a704e33fe4 Improvement: throw SQLFeatureNotSupportedException instead of SQLException
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 164
diff changeset
17 import java.sql.SQLFeatureNotSupportedException;
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
18 import java.sql.SQLWarning;
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
19 import java.util.ArrayList;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
20 import java.util.concurrent.locks.ReentrantLock;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
21
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
22 /**
451
3dfcd06fd8ba Correcting typos in documentation text. Also improved the readability of the generated javadoc documents.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 414
diff changeset
23 *<pre>
3dfcd06fd8ba Correcting typos in documentation text. Also improved the readability of the generated javadoc documents.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 414
diff changeset
24 * A {@link Statement} suitable for the MonetDB database.
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
25 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
26 * The object used for executing a static SQL statement and returning
451
3dfcd06fd8ba Correcting typos in documentation text. Also improved the readability of the generated javadoc documents.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 414
diff changeset
27 * the result(s) it produces.
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
28 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
29 * By default, only one {@link ResultSet} object per Statement object can be
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
30 * open at the same time. Therefore, if the reading of one ResultSet
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
31 * object is interleaved with the reading of another, each must have
451
3dfcd06fd8ba Correcting typos in documentation text. Also improved the readability of the generated javadoc documents.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 414
diff changeset
32 * been generated by different {@link Statement} objects. All execution
3dfcd06fd8ba Correcting typos in documentation text. Also improved the readability of the generated javadoc documents.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 414
diff changeset
33 * methods in the Statement interface implicitly close a Statement's current
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
34 * ResultSet object if an open one exists.
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
35 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
36 * The current state of this Statement is that it only implements the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
37 * executeQuery() which returns a ResultSet where from results can be
259
1485870ae208 Improve comment text and resolve 4 javadoc errors:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 250
diff changeset
38 * read and executeUpdate() which returns the affected rows for DML.
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
39 * Commit and rollback are implemented, as is the autoCommit mechanism
194
1296dbcc4958 Resolved javadoc many errors and warnings, such as:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 183
diff changeset
40 * which relies on server side auto commit.
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
41 * Multi-result queries are supported using the getMoreResults() method.
451
3dfcd06fd8ba Correcting typos in documentation text. Also improved the readability of the generated javadoc documents.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 414
diff changeset
42 *</pre>
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
43 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
44 * @author Fabian Groffen
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
45 * @author Martin van Dinther
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
46 * @version 0.9
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
47 */
164
7c9e386fe49a As of Java 1.7 implementations of JDBC interfaces Connection, Statement, PreparedStatement,
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 90
diff changeset
48 public class MonetStatement
7c9e386fe49a As of Java 1.7 implementations of JDBC interfaces Connection, Statement, PreparedStatement,
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 90
diff changeset
49 extends MonetWrapper
7c9e386fe49a As of Java 1.7 implementations of JDBC interfaces Connection, Statement, PreparedStatement,
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 90
diff changeset
50 implements Statement, AutoCloseable
7c9e386fe49a As of Java 1.7 implementations of JDBC interfaces Connection, Statement, PreparedStatement,
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 90
diff changeset
51 {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
52 /** The parental Connection object */
286
d430f8adbf1b Add keyword "final" to those variables which do not change after first assigment.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 261
diff changeset
53 protected final MonetConnection connection;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
54 /** The last ResponseList object this Statement produced */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
55 private MonetConnection.ResponseList lastResponseList;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
56 /** The last Response that this object uses */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
57 MonetConnection.Response header;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
58 /** The warnings this Statement object generated */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
59 private SQLWarning warnings;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
60 /** Whether this Statement object is closed or not */
292
b127164342c4 Introduce default general behavior settings DEF_... for MonetResultSets and use them
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 291
diff changeset
61 protected boolean closed = false;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
62 /** Whether the application wants this Statement object to be pooled */
292
b127164342c4 Introduce default general behavior settings DEF_... for MonetResultSets and use them
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 291
diff changeset
63 protected boolean poolable = false;
249
46385d8ff8c9 Improve the implementation of Statement methods getQueryTimeout() and setQueryTimeout().
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 200
diff changeset
64 /** Whether this Statement should be closed if the last ResultSet closes */
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
65 private boolean closeOnCompletion = false;
249
46385d8ff8c9 Improve the implementation of Statement methods getQueryTimeout() and setQueryTimeout().
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 200
diff changeset
66 /** The timeout (in sec) for the query to return, 0 means no timeout */
408
5540793628d6 Improve code when setting query timeout. It used to call the sys.settimeout(bigint) which is deprecated as of release Jun2020 (11.37.7) and replaced by new sys.setquerytimeout(int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 406
diff changeset
67 private int queryTimeout;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
68 /** The size of the blocks of results to ask for at the server */
408
5540793628d6 Improve code when setting query timeout. It used to call the sys.settimeout(bigint) which is deprecated as of release Jun2020 (11.37.7) and replaced by new sys.setquerytimeout(int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 406
diff changeset
69 private int fetchSize;
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
70 /** The maximum number of rows to return in a ResultSet, 0 indicates unlimited */
408
5540793628d6 Improve code when setting query timeout. It used to call the sys.settimeout(bigint) which is deprecated as of release Jun2020 (11.37.7) and replaced by new sys.setquerytimeout(int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 406
diff changeset
71 private long maxRows;
292
b127164342c4 Introduce default general behavior settings DEF_... for MonetResultSets and use them
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 291
diff changeset
72 /** The type of ResultSet to produce; i.e. forward only, random access */
b127164342c4 Introduce default general behavior settings DEF_... for MonetResultSets and use them
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 291
diff changeset
73 private int resultSetType = MonetResultSet.DEF_RESULTSETTYPE;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
74 /** The suggested direction of fetching data (implemented but not used) */
292
b127164342c4 Introduce default general behavior settings DEF_... for MonetResultSets and use them
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 291
diff changeset
75 private int fetchDirection = MonetResultSet.DEF_FETCHDIRECTION;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
76 /** The concurrency of the ResultSet to produce */
292
b127164342c4 Introduce default general behavior settings DEF_... for MonetResultSets and use them
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 291
diff changeset
77 private int resultSetConcurrency = MonetResultSet.DEF_CONCURRENCY;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
78
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
79 /** A List to hold all queries of a batch */
408
5540793628d6 Improve code when setting query timeout. It used to call the sys.settimeout(bigint) which is deprecated as of release Jun2020 (11.37.7) and replaced by new sys.setquerytimeout(int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 406
diff changeset
80 private ArrayList<String> batch;
5540793628d6 Improve code when setting query timeout. It used to call the sys.settimeout(bigint) which is deprecated as of release Jun2020 (11.37.7) and replaced by new sys.setquerytimeout(int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 406
diff changeset
81 private ReentrantLock batchLock;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
82
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
83
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
84 /**
292
b127164342c4 Introduce default general behavior settings DEF_... for MonetResultSets and use them
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 291
diff changeset
85 * MonetStatement constructor which checks the arguments for validity.
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
86 * This constructor is only accessible to classes from the jdbc package.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
87 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
88 * @param connection the connection that created this Statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
89 * @param resultSetType type of ResultSet to produce
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
90 * @param resultSetConcurrency concurrency of ResultSet to produce
292
b127164342c4 Introduce default general behavior settings DEF_... for MonetResultSets and use them
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 291
diff changeset
91 * @param resultSetHoldability holdability of ResultSet after commit
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
92 * @throws SQLException if an error occurs during login
292
b127164342c4 Introduce default general behavior settings DEF_... for MonetResultSets and use them
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 291
diff changeset
93 * @throws IllegalArgumentException is one of the arguments null or empty
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
94 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
95 MonetStatement(
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
96 final MonetConnection connection,
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
97 final int resultSetType,
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
98 final int resultSetConcurrency,
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
99 final int resultSetHoldability)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
100 throws SQLException, IllegalArgumentException
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
101 {
164
7c9e386fe49a As of Java 1.7 implementations of JDBC interfaces Connection, Statement, PreparedStatement,
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 90
diff changeset
102 if (connection == null)
7c9e386fe49a As of Java 1.7 implementations of JDBC interfaces Connection, Statement, PreparedStatement,
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 90
diff changeset
103 throw new IllegalArgumentException("No Connection given!");
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
104
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
105 this.connection = connection;
292
b127164342c4 Introduce default general behavior settings DEF_... for MonetResultSets and use them
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 291
diff changeset
106 this.queryTimeout = connection.lastSetQueryTimeout;
b127164342c4 Introduce default general behavior settings DEF_... for MonetResultSets and use them
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 291
diff changeset
107
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
108 this.resultSetType = resultSetType;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
109 this.resultSetConcurrency = resultSetConcurrency;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
110
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
111 // check our limits, and generate warnings as appropriate
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
112 if (this.resultSetConcurrency != ResultSet.CONCUR_READ_ONLY) {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
113 addWarning("No concurrency mode other then read only is supported, continuing with concurrency level READ_ONLY", "01M13");
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
114 this.resultSetConcurrency = ResultSet.CONCUR_READ_ONLY;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
115 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
116
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
117 // check type for supported mode
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
118 if (this.resultSetType == ResultSet.TYPE_SCROLL_SENSITIVE) {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
119 addWarning("Change sensitive scrolling ResultSet objects are not supported, continuing with a change non-sensitive scrollable cursor.", "01M14");
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
120 this.resultSetType = ResultSet.TYPE_SCROLL_INSENSITIVE;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
121 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
122
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
123 // check type for supported holdability
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
124 if (resultSetHoldability != ResultSet.HOLD_CURSORS_OVER_COMMIT) {
292
b127164342c4 Introduce default general behavior settings DEF_... for MonetResultSets and use them
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 291
diff changeset
125 addWarning("Close cursors at commit not supported, continuing with holdability to hold cursors open over commit.", "01M15");
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
126 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
127 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
128
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
129 //== methods of interface Statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
130
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
131 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
132 * Adds the given SQL command to the current list of commmands for this
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
133 * Statement object. The commands in this list can be executed as a
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
134 * batch by calling the method executeBatch.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
135 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
136 * @param sql typically this is a static SQL INSERT or UPDATE statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
137 * @throws SQLException so the PreparedStatement can throw this exception
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
138 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
139 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
140 public void addBatch(final String sql) throws SQLException {
290
d477b3103a8b Optimised MonetStatement memory resource usage by only creating an ArrayList and ReentrantLock object when the batch methods addBatch() or executeBatch() are called. In most Statement usages those methods are not called.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 286
diff changeset
141 if (batch == null) {
d477b3103a8b Optimised MonetStatement memory resource usage by only creating an ArrayList and ReentrantLock object when the batch methods addBatch() or executeBatch() are called. In most Statement usages those methods are not called.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 286
diff changeset
142 // create the ArrayList at first time use
d477b3103a8b Optimised MonetStatement memory resource usage by only creating an ArrayList and ReentrantLock object when the batch methods addBatch() or executeBatch() are called. In most Statement usages those methods are not called.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 286
diff changeset
143 batch = new ArrayList<String>();
d477b3103a8b Optimised MonetStatement memory resource usage by only creating an ArrayList and ReentrantLock object when the batch methods addBatch() or executeBatch() are called. In most Statement usages those methods are not called.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 286
diff changeset
144 }
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
145 batch.add(sql);
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
146 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
147
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
148 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
149 * Empties this Statement object's current list of SQL commands.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
150 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
151 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
152 public void clearBatch() {
290
d477b3103a8b Optimised MonetStatement memory resource usage by only creating an ArrayList and ReentrantLock object when the batch methods addBatch() or executeBatch() are called. In most Statement usages those methods are not called.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 286
diff changeset
153 if (batch != null)
d477b3103a8b Optimised MonetStatement memory resource usage by only creating an ArrayList and ReentrantLock object when the batch methods addBatch() or executeBatch() are called. In most Statement usages those methods are not called.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 286
diff changeset
154 batch.clear();
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
155 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
156
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
157 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
158 * Submits a batch of commands to the database for execution and if
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
159 * all commands execute successfully, returns an array of update
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
160 * counts. The int elements of the array that is returned are
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
161 * ordered to correspond to the commands in the batch, which are
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
162 * ordered according to the order in which they were added to the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
163 * batch. The elements in the array returned by the method
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
164 * executeBatch may be one of the following:
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
165 * <ol>
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
166 * <li>A number greater than or equal to zero -- indicates that the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
167 * command was processed successfully and is an update count giving
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
168 * the number of rows in the database that were affected by the
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
169 * command's execution
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
170 * <li>A value of SUCCESS_NO_INFO -- indicates that the command was
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
171 * processed successfully but that the number of rows affected is unknown
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
172 * <p>If one of the commands in a batch update fails to execute properly,
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
173 * this method throws a BatchUpdateException, and a JDBC driver may or
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
174 * may not continue to process the remaining commands in the batch.
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
175 * However, the driver's behavior must be consistent with a particular DBMS,
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
176 * either always continuing to process commands or never continuing to process
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
177 * commands. If the driver continues processing after a failure, the array
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
178 * returned by the method BatchUpdateException.getUpdateCounts will
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
179 * contain as many elements as there are commands in the batch, and at
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
180 * least one of the elements will be the following:</p>
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
181 * <li>A value of EXECUTE_FAILED -- indicates that the command failed to
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
182 * execute successfully and occurs only if a driver continues to process
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
183 * commands after a command fails
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
184 * </ol>
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
185 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
186 * MonetDB does continues after an error has occurred in the batch.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
187 * If one of the commands attempts to return a result set, an
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
188 * SQLException is added to the SQLException list and thrown
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
189 * afterwards execution. Failing queries result in SQLExceptions
194
1296dbcc4958 Resolved javadoc many errors and warnings, such as:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 183
diff changeset
190 * too and may cause subparts of the batch to fail as well.
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
191 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
192 * @return an array of update counts containing one element for each
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
193 * command in the batch. The elements of the array are ordered
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
194 * according to the order in which commands were added to the batch.
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
195 * @throws SQLException if a database access error occurs.
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
196 * @throws BatchUpdateException (a subclass of SQLException) if one of the
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
197 * commands sent to the database fails to execute properly.
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
198 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
199 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
200 public int[] executeBatch() throws SQLException {
290
d477b3103a8b Optimised MonetStatement memory resource usage by only creating an ArrayList and ReentrantLock object when the batch methods addBatch() or executeBatch() are called. In most Statement usages those methods are not called.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 286
diff changeset
201 if (batch == null || batch.isEmpty()) {
d477b3103a8b Optimised MonetStatement memory resource usage by only creating an ArrayList and ReentrantLock object when the batch methods addBatch() or executeBatch() are called. In most Statement usages those methods are not called.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 286
diff changeset
202 return new int[0];
d477b3103a8b Optimised MonetStatement memory resource usage by only creating an ArrayList and ReentrantLock object when the batch methods addBatch() or executeBatch() are called. In most Statement usages those methods are not called.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 286
diff changeset
203 }
d477b3103a8b Optimised MonetStatement memory resource usage by only creating an ArrayList and ReentrantLock object when the batch methods addBatch() or executeBatch() are called. In most Statement usages those methods are not called.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 286
diff changeset
204
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
205 final long[] ret = executeLargeBatch();
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
206 // copy contents of long[] into new int[]
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
207 final int[] counts = new int[ret.length];
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
208 for (int i = 0; i < ret.length; i++) {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
209 counts[i] = (ret[i] >= Integer.MAX_VALUE) ? Integer.MAX_VALUE : (int)ret[i];
290
d477b3103a8b Optimised MonetStatement memory resource usage by only creating an ArrayList and ReentrantLock object when the batch methods addBatch() or executeBatch() are called. In most Statement usages those methods are not called.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 286
diff changeset
210 }
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
211 return counts;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
212 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
213
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
214 /**
181
237816fef586 Correct the documentation of the cancel() method.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 179
diff changeset
215 * Cancels this Statement object if both the DBMS and driver support aborting an SQL statement.
237816fef586 Correct the documentation of the cancel() method.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 179
diff changeset
216 * This method can be used by one thread to cancel a statement that is being executed by another thread.
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
217 *
181
237816fef586 Correct the documentation of the cancel() method.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 179
diff changeset
218 * @throws SQLException - if a database access error occurs or this method is called on a closed Statement
179
f0a704e33fe4 Improvement: throw SQLFeatureNotSupportedException instead of SQLException
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 164
diff changeset
219 * @throws SQLFeatureNotSupportedException - if the JDBC driver does not support this method
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
220 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
221 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
222 public void cancel() throws SQLException {
179
f0a704e33fe4 Improvement: throw SQLFeatureNotSupportedException instead of SQLException
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 164
diff changeset
223 throw new SQLFeatureNotSupportedException("Query cancelling is currently not supported by the driver.", "0A000");
291
611c0954b0e6 Add a reference to the request logged in bugzilla to implement Statement.cancel() method
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 290
diff changeset
224 // a request to implement this is already logged, see: https://www.monetdb.org/bugzilla/show_bug.cgi?id=6222
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
225 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
226
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
227 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
228 * Clears all warnings reported for this Statement object. After a call to
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
229 * this method, the method getWarnings returns null until a new warning is
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
230 * reported for this Statement object.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
231 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
232 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
233 public void clearWarnings() {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
234 warnings = null;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
235 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
236
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
237 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
238 * Releases this Statement object's database and JDBC resources immediately
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
239 * instead of waiting for this to happen when it is automatically closed. It
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
240 * is generally good practice to release resources as soon as you are
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
241 * finished with them to avoid tying up database resources.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
242 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
243 * Calling the method close on a Statement object that is already closed has
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
244 * no effect.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
245 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
246 * A Statement object is automatically closed when it is garbage collected.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
247 * When a Statement object is closed, its current ResultSet object, if one
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
248 * exists, is also closed.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
249 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
250 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
251 public void close() {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
252 // close previous ResultSet, if not closed already
183
57f09396b22c Small improvements
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 181
diff changeset
253 if (lastResponseList != null) {
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
254 lastResponseList.close();
183
57f09396b22c Small improvements
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 181
diff changeset
255 lastResponseList = null;
57f09396b22c Small improvements
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 181
diff changeset
256 }
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
257 closed = true;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
258 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
259
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
260 // Chapter 13.1.2.3 of Sun's JDBC 3.0 Specification
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
261 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
262 * Executes the given SQL statement, which may return multiple results. In
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
263 * some (uncommon) situations, a single SQL statement may return multiple
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
264 * result sets and/or update counts. Normally you can ignore this unless
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
265 * you are (1) executing a stored procedure that you know may return
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
266 * multiple results or (2) you are dynamically executing an unknown SQL
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
267 * string.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
268 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
269 * The execute method executes an SQL statement and indicates the form of
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
270 * the first result. You must then use the methods getResultSet or
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
271 * getUpdateCount to retrieve the result, and getMoreResults to move to any
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
272 * subsequent result(s).
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
273 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
274 * @param sql any SQL statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
275 * @return true if the first result is a ResultSet object; false if it is an
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
276 * update count or there are no results
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
277 * @throws SQLException if a database access error occurs
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
278 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
279 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
280 public boolean execute(final String sql) throws SQLException {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
281 return internalExecute(sql);
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
282 }
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
283
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
284 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
285 * Executes the given SQL statement, which may return multiple
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
286 * results, and signals the driver that any auto-generated keys
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
287 * should be made available for retrieval. The driver will ignore
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
288 * this signal if the SQL statement is not an INSERT statement.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
289 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
290 * In some (uncommon) situations, a single SQL statement may return
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
291 * multiple result sets and/or update counts. Normally you can
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
292 * ignore this unless you are (1) executing a stored procedure that
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
293 * you know may return multiple results or (2) you are dynamically
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
294 * executing an unknown SQL string.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
295 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
296 * The execute method executes an SQL statement and indicates the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
297 * form of the first result. You must then use the methods
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
298 * getResultSet or getUpdateCount to retrieve the result, and
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
299 * getMoreResults to move to any subsequent result(s).
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
300 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
301 * @param sql any SQL statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
302 * @param autoGeneratedKeys a constant indicating whether
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
303 * auto-generated keys should be made available for retrieval
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
304 * using the method getGeneratedKeys; one of the following
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
305 * constants: Statement.RETURN_GENERATED_KEYS or
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
306 * Statement.NO_GENERATED_KEYS
259
1485870ae208 Improve comment text and resolve 4 javadoc errors:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 250
diff changeset
307 * @return true if the first result is a ResultSet object; false if
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
308 * it is an update count or there are no results
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
309 * @throws SQLException - if a database access error occurs or the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
310 * second parameter supplied to this method is not
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
311 * Statement.RETURN_GENERATED_KEYS or
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
312 * Statement.NO_GENERATED_KEYS.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
313 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
314 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
315 public boolean execute(final String sql, final int autoGeneratedKeys)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
316 throws SQLException
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
317 {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
318 if (autoGeneratedKeys != Statement.RETURN_GENERATED_KEYS &&
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
319 autoGeneratedKeys != Statement.NO_GENERATED_KEYS)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
320 throw new SQLException("Invalid argument, expected RETURN_GENERATED_KEYS or NO_GENERATED_KEYS", "M1M05");
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
321
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
322 /* MonetDB has no way to disable this, so just do the normal thing ;) */
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
323 return internalExecute(sql);
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
324 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
325
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
326 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
327 * Executes the given SQL statement, which may return multiple
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
328 * results, and signals the driver that the auto-generated keys
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
329 * indicated in the given array should be made available for
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
330 * retrieval. This array contains the indexes of the columns in the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
331 * target table that contain the auto-generated keys that should be
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
332 * made available. The driver will ignore the array if the given SQL
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
333 * statement is not an INSERT statement.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
334 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
335 * Under some (uncommon) situations, a single SQL statement may
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
336 * return multiple result sets and/or update counts. Normally you
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
337 * can ignore this unless you are (1) executing a stored procedure
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
338 * that you know may return multiple results or (2) you are
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
339 * dynamically executing an unknown SQL string.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
340 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
341 * The execute method executes an SQL statement and indicates the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
342 * form of the first result. You must then use the methods
259
1485870ae208 Improve comment text and resolve 4 javadoc errors:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 250
diff changeset
343 * getResultSet or getUpdateCount to retrieve the result, and
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
344 * getMoreResults to move to any subsequent result(s).
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
345 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
346 * MonetDB only supports returing the generated key for one column,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
347 * which will be the first column that has a serial. Hence, this
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
348 * method cannot work as required and the driver will fall back to
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
349 * executing with request to the database to return the generated
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
350 * key, if any.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
351 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
352 * @param sql any SQL statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
353 * @param columnIndexes an array of the indexes of the columns in
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
354 * the inserted row that should be made available for
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
355 * retrieval by a call to the method getGeneratedKeys
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
356 * @return true if the first result is a ResultSet object; false if
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
357 * it is an update count or there are no results
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
358 * @throws SQLException if a database access error occurs or the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
359 * elements in the int array passed to this method are not
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
360 * valid column indexes
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
361 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
362 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
363 public boolean execute(final String sql, final int[] columnIndexes)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
364 throws SQLException
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
365 {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
366 addWarning("execute: generated keys for fixed set of columns not supported", "01M18");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
367 return execute(sql, Statement.RETURN_GENERATED_KEYS);
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
368 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
369
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
370 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
371 * Executes the given SQL statement, which may return multiple
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
372 * results, and signals the driver that the auto-generated keys
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
373 * indicated in the given array should be made available for
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
374 * retrieval. This array contains the names of the columns in the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
375 * target table that contain the auto-generated keys that should be
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
376 * made available. The driver will ignore the array if the given SQL
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
377 * statement is not an INSERT statement.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
378 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
379 * In some (uncommon) situations, a single SQL statement may return
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
380 * multiple result sets and/or update counts. Normally you can
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
381 * ignore this unless you are (1) executing a stored procedure that
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
382 * you know may return multiple results or (2) you are dynamically
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
383 * executing an unknown SQL string.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
384 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
385 * The execute method executes an SQL statement and indicates the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
386 * form of the first result. You must then use the methods
259
1485870ae208 Improve comment text and resolve 4 javadoc errors:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 250
diff changeset
387 * getResultSet or getUpdateCount to retrieve the result, and
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
388 * getMoreResults to move to any subsequent result(s).
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
389 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
390 * MonetDB only supports returing the generated key for one column,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
391 * which will be the first column that has a serial. Hence, this
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
392 * method cannot work as required and the driver will fall back to
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
393 * executing with request to the database to return the generated
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
394 * key, if any.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
395 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
396 * @param sql any SQL statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
397 * @param columnNames an array of the names of the columns in the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
398 * inserted row that should be made available for retrieval
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
399 * by a call to the method getGeneratedKeys
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
400 * @return true if the next result is a ResultSet object; false if
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
401 * it is an update count or there are no more results
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
402 * @throws SQLException if a database access error occurs or the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
403 * elements of the String array passed to this method are
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
404 * not valid column names
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
405 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
406 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
407 public boolean execute(final String sql, final String[] columnNames)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
408 throws SQLException
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
409 {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
410 addWarning("execute: generated keys for fixed set of columns not supported", "01M18");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
411 return execute(sql, Statement.RETURN_GENERATED_KEYS);
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
412 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
413
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
414 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
415 * Performs the steps to execute a given SQL statement. This method
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
416 * exists to allow the functionality of this function to be called
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
417 * from within this class only. The PreparedStatement for example
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
418 * overrides the execute() method to throw an SQLException, but it
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
419 * needs its functionality when the executeBatch method (which is
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
420 * inherited) is called.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
421 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
422 * @param sql any SQL statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
423 * @return true if the first result is a ResultSet object; false if
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
424 * it is an update count or there are no results
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
425 * @throws SQLException if a database access error occurs
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
426 */
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
427 private boolean internalExecute(final String sql) throws SQLException {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
428 // close previous query, if not closed already
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
429 if (lastResponseList != null) {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
430 lastResponseList.close();
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
431 lastResponseList = null;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
432 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
433
249
46385d8ff8c9 Improve the implementation of Statement methods getQueryTimeout() and setQueryTimeout().
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 200
diff changeset
434 if (queryTimeout != connection.lastSetQueryTimeout) {
46385d8ff8c9 Improve the implementation of Statement methods getQueryTimeout() and setQueryTimeout().
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 200
diff changeset
435 // set requested/changed queryTimeout on the server side first
408
5540793628d6 Improve code when setting query timeout. It used to call the sys.settimeout(bigint) which is deprecated as of release Jun2020 (11.37.7) and replaced by new sys.setquerytimeout(int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 406
diff changeset
436 connection.setQueryTimeout(queryTimeout);
249
46385d8ff8c9 Improve the implementation of Statement methods getQueryTimeout() and setQueryTimeout().
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 200
diff changeset
437 }
46385d8ff8c9 Improve the implementation of Statement methods getQueryTimeout() and setQueryTimeout().
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 200
diff changeset
438
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
439 // create a container for the result
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
440 lastResponseList = connection.new ResponseList(
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
441 fetchSize,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
442 maxRows,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
443 resultSetType,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
444 resultSetConcurrency
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
445 );
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
446 // fill the header list by processing the query
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
447 lastResponseList.processQuery(sql);
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
448
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
449 return getMoreResults();
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
450 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
451
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
452 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
453 * Executes the given SQL statement, which returns a single ResultSet
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
454 * object.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
455 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
456 * @param sql an SQL statement to be sent to the database, typically a
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
457 * static SQL SELECT statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
458 * @return a ResultSet object that contains the data produced by the given
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
459 * query; never null
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
460 * @throws SQLException if a database access error occurs or the given SQL
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
461 * statement produces anything other than a single ResultSet object
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
462 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
463 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
464 public ResultSet executeQuery(final String sql) throws SQLException {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
465 if (execute(sql) != true)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
466 throw new SQLException("Query did not produce a result set", "M1M19");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
467
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
468 return getResultSet();
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
469 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
470
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
471 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
472 * Executes the given SQL statement, which may be an INSERT, UPDATE, or
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
473 * DELETE statement or an SQL statement that returns nothing, such as an
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
474 * SQL DDL statement.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
475 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
476 * @param sql an SQL INSERT, UPDATE or DELETE statement or an SQL statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
477 * that returns nothing
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
478 * @return either the row count for INSERT, UPDATE or DELETE statements, or
194
1296dbcc4958 Resolved javadoc many errors and warnings, such as:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 183
diff changeset
479 * 0 for SQL statements that return nothing
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
480 * @throws SQLException if a database access error occurs or the given SQL
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
481 * statement produces a ResultSet object
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
482 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
483 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
484 public int executeUpdate(final String sql) throws SQLException {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
485 if (execute(sql) != false)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
486 throw new SQLException("Query produced a result set", "M1M17");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
487
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
488 return getUpdateCount();
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
489 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
490
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
491 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
492 * Executes the given SQL statement and signals the driver with the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
493 * given flag about whether the auto-generated keys produced by this
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
494 * Statement object should be made available for retrieval.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
495 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
496 * @param sql must be an SQL INSERT, UPDATE or DELETE statement or
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
497 * an SQL statement that returns nothing
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
498 * @param autoGeneratedKeys - a flag indicating whether
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
499 * auto-generated keys should be made available for
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
500 * retrieval; one of the following constants:
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
501 * Statement.RETURN_GENERATED_KEYS
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
502 * Statement.NO_GENERATED_KEYS
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
503 * @return either the row count for INSERT, UPDATE or DELETE
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
504 * statements, or 0 for SQL statements that return nothing
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
505 * @throws SQLException if a database access error occurs, the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
506 * given SQL statement returns a ResultSet object, or the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
507 * given constant is not one of those allowed
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
508 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
509 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
510 public int executeUpdate(final String sql, final int autoGeneratedKeys)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
511 throws SQLException
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
512 {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
513 if (autoGeneratedKeys != Statement.RETURN_GENERATED_KEYS &&
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
514 autoGeneratedKeys != Statement.NO_GENERATED_KEYS)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
515 throw new SQLException("Invalid argument, expected RETURN_GENERATED_KEYS or NO_GENERATED_KEYS", "M1M05");
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
516
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
517 /* MonetDB has no way to disable this, so just do the normal thing ;) */
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
518 if (execute(sql) != false)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
519 throw new SQLException("Query produced a result set", "M1M17");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
520
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
521 return getUpdateCount();
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
522 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
523
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
524 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
525 * Executes the given SQL statement and signals the driver that the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
526 * auto-generated keys indicated in the given array should be made
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
527 * available for retrieval. The driver will ignore the array if the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
528 * SQL statement is not an INSERT statement.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
529 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
530 * MonetDB only supports returing the generated key for one column,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
531 * which will be the first column that has a serial. Hence, this
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
532 * method cannot work as required and the driver will fall back to
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
533 * executing with request to the database to return the generated
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
534 * key, if any.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
535 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
536 * @param sql an SQL INSERT, UPDATE or DELETE statement or an SQL
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
537 * statement that returns nothing, such as an SQL DDL statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
538 * @param columnIndexes an array of column indexes indicating the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
539 * columns that should be returned from the inserted row
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
540 * @return either the row count for INSERT, UPDATE, or DELETE
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
541 * statements, or 0 for SQL statements that return nothing
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
542 * @throws SQLException if a database access error occurs, the SQL
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
543 * statement returns a ResultSet object, or the second
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
544 * argument supplied to this method is not an int array
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
545 * whose elements are valid column indexes
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
546 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
547 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
548 public int executeUpdate(final String sql, final int[] columnIndexes)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
549 throws SQLException
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
550 {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
551 addWarning("executeUpdate: generated keys for fixed set of columns not supported", "01M18");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
552 return executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
553 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
554
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
555 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
556 * Executes the given SQL statement and signals the driver that the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
557 * auto-generated keys indicated in the given array should be made
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
558 * available for retrieval. The driver will ignore the array if the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
559 * SQL statement is not an INSERT statement.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
560 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
561 * MonetDB only supports returing the generated key for one column,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
562 * which will be the first column that has a serial. Hence, this
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
563 * method cannot work as required and the driver will fall back to
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
564 * executing with request to the database to return the generated
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
565 * key, if any.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
566 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
567 * @param sql an SQL INSERT, UPDATE or DELETE statement or an SQL
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
568 * statement that returns nothing, such as an SQL DDL statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
569 * @param columnNames an array of the names of the columns that
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
570 * should be returned from the inserted row
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
571 * @return either the row count for INSERT, UPDATE, or DELETE
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
572 * statements, or 0 for SQL statements that return nothing
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
573 * @throws SQLException if a database access error occurs, the SQL
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
574 * statement returns a ResultSet object, or the second
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
575 * argument supplied to this method is not a String array
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
576 * whose elements are valid column names
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
577 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
578 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
579 public int executeUpdate(final String sql, final String[] columnNames)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
580 throws SQLException
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
581 {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
582 addWarning("executeUpdate: generated keys for fixed set of columns not supported", "01M18");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
583 return executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
584 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
585
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
586 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
587 * Retrieves the Connection object that produced this Statement object.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
588 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
589 * @return the connection that produced this statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
590 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
591 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
592 public Connection getConnection() {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
593 return connection;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
594 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
595
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
596 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
597 * Retrieves the direction for fetching rows from database tables that is
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
598 * the default for result sets generated from this Statement object. If
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
599 * this Statement object has not set a fetch direction by calling the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
600 * method setFetchDirection, the return value is ResultSet.FETCH_FORWARD.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
601 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
602 * @return the default fetch direction for result sets generated from this
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
603 * Statement object
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
604 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
605 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
606 public int getFetchDirection() {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
607 return fetchDirection;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
608 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
609
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
610 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
611 * Retrieves the number of result set rows that is the default fetch size
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
612 * for ResultSet objects generated from this Statement object. If this
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
613 * Statement object has not set a fetch size by calling the method
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
614 * setFetchSize, or the method setFetchSize was called as such to let
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
615 * the driver ignore the hint, 0 is returned.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
616 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
617 * @return the default fetch size for result sets generated from this
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
618 * Statement object
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
619 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
620 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
621 public int getFetchSize() {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
622 return fetchSize;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
623 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
624
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
625 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
626 * Retrieves any auto-generated keys created as a result of
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
627 * executing this Statement object. If this Statement object did not
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
628 * generate any keys, an empty ResultSet object is returned.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
629 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
630 * @return a ResultSet object containing the auto-generated key(s)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
631 * generated by the execution of this Statement object
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
632 * @throws SQLException - if a database access error occurs
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
633 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
634 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
635 public ResultSet getGeneratedKeys() throws SQLException {
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
636 final String[] columns, types;
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
637 final String[][] results;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
638
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
639 columns = new String[1];
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
640 types = new String[1];
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
641
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
642 columns[0] = "GENERATED_KEY";
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
643 /* the generated key should be an integer, because (wait for it) other
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
644 * frameworks such as spring expect this. */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
645 types[0] = "BIGINT";
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
646
260
d3d466182d65 Prevent NullPointerExceptions to be thrown when header == null.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 259
diff changeset
647 if (header != null && header instanceof MonetConnection.UpdateResponse) {
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
648 final String lastid = ((MonetConnection.UpdateResponse)header).lastid;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
649 if (lastid.equals("-1")) {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
650 results = new String[0][1];
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
651 } else {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
652 results = new String[1][1];
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
653 results[0][0] = lastid;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
654 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
655 } else {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
656 results = new String[0][1];
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
657 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
658
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
659 try {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
660 return new MonetVirtualResultSet(this, columns, types, results);
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
661 } catch (IllegalArgumentException e) {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
662 throw new SQLException("Internal driver error: " + e.getMessage(), "M0M03");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
663 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
664 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
665
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
666 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
667 * Retrieves the maximum number of bytes that can be returned for
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
668 * character and binary column values in a ResultSet object produced
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
669 * by this Statement object. This limit applies only to BINARY,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
670 * VARBINARY, LONGVARBINARY, CHAR, VARCHAR, and LONGVARCHAR
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
671 * columns. If the limit is exceeded, the excess data is silently
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
672 * discarded.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
673 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
674 * The MonetDB JDBC driver currently doesn't support limiting
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
675 * fieldsizes, and hence always return 0 (unlimited).
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
676 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
677 * @return the current column size limit for columns storing
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
678 * character and binary values; zero means there is no limit
194
1296dbcc4958 Resolved javadoc many errors and warnings, such as:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 183
diff changeset
679 * @see #setMaxFieldSize(int max)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
680 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
681 @Override
250
3038e60bdca1 If methods never throw an SQLException, remove the "throws SQLException" part.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 249
diff changeset
682 public int getMaxFieldSize() {
194
1296dbcc4958 Resolved javadoc many errors and warnings, such as:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 183
diff changeset
683 return 2*1024*1024*1024 - 2; // MonetDB supports null terminated strings of max 2GB, see function: int UTF8_strlen()
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
684 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
685
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
686 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
687 * Retrieves the maximum number of rows that a ResultSet object produced by
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
688 * this Statement object can contain. If this limit is exceeded, the excess
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
689 * rows are silently dropped.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
690 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
691 * @return the current maximum number of rows for a ResultSet object
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
692 * produced by this Statement object; zero means there is no limit
194
1296dbcc4958 Resolved javadoc many errors and warnings, such as:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 183
diff changeset
693 * @see #setMaxRows(int max)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
694 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
695 @Override
250
3038e60bdca1 If methods never throw an SQLException, remove the "throws SQLException" part.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 249
diff changeset
696 public int getMaxRows() {
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
697 if (maxRows >= Integer.MAX_VALUE)
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
698 return Integer.MAX_VALUE;
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
699 return (int)maxRows;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
700 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
701
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
702 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
703 * Moves to this Statement object's next result, returns true if it is a
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
704 * ResultSet object, and implicitly closes any current ResultSet object(s)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
705 * obtained with the method getResultSet.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
706 *
194
1296dbcc4958 Resolved javadoc many errors and warnings, such as:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 183
diff changeset
707 * There are no more results when the following is true:
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
708 * (!getMoreResults() &amp;&amp; (getUpdateCount() == -1)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
709 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
710 * @return true if the next result is a ResultSet object; false if it is
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
711 * an update count or there are no more results
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
712 * @throws SQLException if a database access error occurs
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
713 * @see #getMoreResults(int current)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
714 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
715 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
716 public boolean getMoreResults() throws SQLException {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
717 return getMoreResults(CLOSE_ALL_RESULTS);
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
718 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
719
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
720 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
721 * Moves to this Statement object's next result, deals with any current
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
722 * ResultSet object(s) according to the instructions specified by the given
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
723 * flag, and returns true if the next result is a ResultSet object.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
724 *
194
1296dbcc4958 Resolved javadoc many errors and warnings, such as:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 183
diff changeset
725 * There are no more results when the following is true:
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
726 * (!getMoreResults() &amp;&amp; (getUpdateCount() == -1)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
727 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
728 * @param current one of the following Statement constants indicating what
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
729 * should happen to current ResultSet objects obtained using
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
730 * the method getResultSet: CLOSE_CURRENT_RESULT,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
731 * KEEP_CURRENT_RESULT, or CLOSE_ALL_RESULTS
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
732 * @return true if the next result is a ResultSet object; false if it is
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
733 * an update count or there are no more results
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
734 * @throws SQLException if a database access error occurs
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
735 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
736 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
737 public boolean getMoreResults(final int current) throws SQLException {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
738 // protect against people calling this on an unitialised state
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
739 if (lastResponseList == null) {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
740 header = null;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
741 return false;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
742 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
743
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
744 if (current == CLOSE_CURRENT_RESULT) {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
745 lastResponseList.closeCurrentResponse();
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
746 } else if (current == CLOSE_ALL_RESULTS) {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
747 lastResponseList.closeCurOldResponses();
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
748 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
749 // we default to keep current result, which requires no action
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
750 header = lastResponseList.getNextResponse();
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
751
260
d3d466182d65 Prevent NullPointerExceptions to be thrown when header == null.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 259
diff changeset
752 return (header != null && header instanceof MonetConnection.ResultSetResponse);
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
753 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
754
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
755 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
756 * Retrieves the number of seconds the driver will wait for a
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
757 * Statement object to execute. If the limit is exceeded, a
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
758 * SQLException is thrown.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
759 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
760 * @return the current query timeout limit in seconds; zero means
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
761 * there is no limit
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
762 * @see #setQueryTimeout(int)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
763 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
764 @Override
249
46385d8ff8c9 Improve the implementation of Statement methods getQueryTimeout() and setQueryTimeout().
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 200
diff changeset
765 public int getQueryTimeout() {
46385d8ff8c9 Improve the implementation of Statement methods getQueryTimeout() and setQueryTimeout().
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 200
diff changeset
766 return queryTimeout;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
767 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
768
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
769 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
770 * Retrieves the current result as a ResultSet object. This method
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
771 * should be called only once per result.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
772 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
773 * @return the current result as a ResultSet object or null if the result
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
774 * is an update count or there are no more results
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
775 * @throws SQLException if a database access error occurs
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
776 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
777 @Override
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
778 public ResultSet getResultSet() throws SQLException {
260
d3d466182d65 Prevent NullPointerExceptions to be thrown when header == null.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 259
diff changeset
779 return (header != null && header instanceof MonetConnection.ResultSetResponse)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
780 ? new MonetResultSet(this,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
781 (MonetConnection.ResultSetResponse)header)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
782 : null;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
783 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
784
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
785 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
786 * Retrieves the result set concurrency for ResultSet objects generated
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
787 * by this Statement object.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
788 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
789 * @return either ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
790 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
791 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
792 public int getResultSetConcurrency() {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
793 return resultSetConcurrency;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
794 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
795
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
796 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
797 * Retrieves the result set holdability for ResultSet objects
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
798 * generated by this Statement object.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
799 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
800 * @return either ResultSet.HOLD_CURSORS_OVER_COMMIT or
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
801 * ResultSet.CLOSE_CURSORS_AT_COMMIT
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
802 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
803 @Override
250
3038e60bdca1 If methods never throw an SQLException, remove the "throws SQLException" part.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 249
diff changeset
804 public int getResultSetHoldability() {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
805 return ResultSet.HOLD_CURSORS_OVER_COMMIT;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
806 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
807
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
808 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
809 * Retrieves the result set type for ResultSet objects generated by this
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
810 * Statement object.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
811 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
812 * @return one of ResultSet.TYPE_FORWARD_ONLY,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
813 * ResultSet.TYPE_SCROLL_INSENSITIVE, or
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
814 * ResultSet.TYPE_SCROLL_SENSITIVE
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
815 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
816 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
817 public int getResultSetType() {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
818 return resultSetType;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
819 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
820
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
821 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
822 * Retrieves the current result as an update count; if the result is a
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
823 * ResultSet object or there are no more results, -1 is returned. This
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
824 * method should be called only once per result.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
825 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
826 * @return the current result as an update count; -1 if the current result
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
827 * is a ResultSet object or there are no more results
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
828 * @throws SQLException if a database access error occurs
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
829 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
830 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
831 public int getUpdateCount() throws SQLException {
378
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
832 long ret = getLargeUpdateCount();
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
833 if (ret >= Integer.MAX_VALUE)
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
834 return Integer.MAX_VALUE;
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
835 return (int)ret;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
836 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
837
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
838 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
839 * Retrieves the first warning reported by calls on this Statement object.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
840 * If there is more than one warning, subsequent warnings will be chained to
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
841 * the first one and can be retrieved by calling the method
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
842 * SQLWarning.getNextWarning on the warning that was retrieved previously.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
843 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
844 * This method may not be called on a closed statement; doing so will cause
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
845 * an SQLException to be thrown.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
846 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
847 * Note: Subsequent warnings will be chained to this SQLWarning.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
848 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
849 * @return the first SQLWarning object or null if there are none
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
850 * @throws SQLException if a database access error occurs or this method is
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
851 * called on a closed connection
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
852 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
853 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
854 public SQLWarning getWarnings() throws SQLException {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
855 if (closed)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
856 throw new SQLException("Cannot call on closed Statement", "M1M20");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
857
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
858 // if there are no warnings, this will be null, which fits with the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
859 // specification.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
860 return warnings;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
861 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
862
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
863 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
864 * Sets the SQL cursor name to the given String, which will be used
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
865 * by subsequent Statement object execute methods. This name can
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
866 * then be used in SQL positioned update or delete statements to
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
867 * identify the current row in the ResultSet object generated by
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
868 * this statement. If the database does not support positioned
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
869 * update/delete, this method is a noop. To insure that a cursor has
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
870 * the proper isolation level to support updates, the cursor's
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
871 * SELECT statement should have the form SELECT FOR UPDATE. If FOR
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
872 * UPDATE is not present, positioned updates may fail.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
873 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
874 * <b>Note:</b> By definition, the execution of positioned updates
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
875 * and deletes must be done by a different Statement object than the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
876 * one that generated the ResultSet object being used for
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
877 * positioning. Also, cursor names must be unique within a
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
878 * connection.
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
879 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
880 * Since MonetDB does not support positioned update/delete, this
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
881 * method is a noop.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
882 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
883 * @param name the new cursor name, which must be unique within a
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
884 * connection
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
885 * @throws SQLException if a database access error occurs
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
886 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
887 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
888 public void setCursorName(final String name) throws SQLException {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
889 addWarning("setCursorName: positioned updates/deletes not supported", "01M21");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
890 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
891
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
892 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
893 * Sets escape processing on or off. If escape scanning is on (the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
894 * default), the driver will do escape substitution before sending
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
895 * the SQL statement to the database. Note: Since prepared
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
896 * statements have usually been parsed prior to making this call,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
897 * disabling escape processing for PreparedStatements objects will
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
898 * have no effect.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
899 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
900 * The MonetDB JDBC driver implements no escape processing at all in
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
901 * its current implementation because it is too expensive, and in
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
902 * general should not be necessary given SQL standards compliance.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
903 * In this sense, this driver will ignore any call to this function.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
904 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
905 * @param enable true to enable escape processing; false to disable
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
906 * it
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
907 * @throws SQLException if a database access error occurs
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
908 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
909 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
910 public void setEscapeProcessing(final boolean enable) throws SQLException {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
911 if (enable)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
912 addWarning("setEscapeProcessing: JDBC escape syntax is not supported by this driver", "01M22");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
913 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
914
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
915 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
916 * Gives the driver a hint as to the direction in which rows will be
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
917 * processed in ResultSet objects created using this Statement object.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
918 * The default value is ResultSet.FETCH_FORWARD.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
919 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
920 * Note that this method sets the default fetch direction for result sets
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
921 * generated by this Statement object. Each result set has its own methods
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
922 * for getting and setting its own fetch direction.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
923 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
924 * @param direction the initial direction for processing rows
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
925 * @throws SQLException if a database access error occurs or the given
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
926 * direction is not one of ResultSet.FETCH_FORWARD,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
927 * ResultSet.FETCH_REVERSE, or ResultSet.FETCH_UNKNOWN
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
928 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
929 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
930 public void setFetchDirection(final int direction) throws SQLException {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
931 if (direction == ResultSet.FETCH_FORWARD ||
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
932 direction == ResultSet.FETCH_REVERSE ||
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
933 direction == ResultSet.FETCH_UNKNOWN)
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
934 {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
935 fetchDirection = direction;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
936 } else {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
937 throw new SQLException("Illegal direction: " + direction, "M1M05");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
938 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
939 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
940
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
941 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
942 * Gives the JDBC driver a hint as to the number of rows that should be
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
943 * fetched from the database when more rows are needed. The number of rows
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
944 * specified affects only result sets created using this statement. If the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
945 * value specified is zero, then the hint is ignored.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
946 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
947 * @param rows the number of rows to fetch
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
948 * @throws SQLException if the condition 0 &lt;= rows &lt;= this.getMaxRows()
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
949 * is not satisfied.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
950 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
951 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
952 public void setFetchSize(final int rows) throws SQLException {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
953 if (rows >= 0 && !(getMaxRows() != 0 && rows > getMaxRows())) {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
954 fetchSize = rows;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
955 } else {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
956 throw new SQLException("Illegal fetch size value: " + rows, "M1M05");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
957 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
958 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
959
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
960 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
961 * Sets the limit for the maximum number of bytes in a ResultSet
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
962 * column storing character or binary values to the given number of
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
963 * bytes. This limit applies only to BINARY, VARBINARY,
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
964 * LONGVARBINARY, CHAR, VARCHAR, and LONGVARCHAR fields. If the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
965 * limit is exceeded, the excess data is silently discarded. For
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
966 * maximum portability, use values greater than 256.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
967 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
968 * MonetDB does not support any fieldsize limiting, and hence the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
969 * driver does not emulate it either, since it doesn't really lead
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
970 * to memory reduction.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
971 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
972 * @param max the new column size limit in bytes; zero means there
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
973 * is no limit
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
974 * @throws SQLException if a database access error occurs or the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
975 * condition max &gt;= 0 is not satisfied
194
1296dbcc4958 Resolved javadoc many errors and warnings, such as:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 183
diff changeset
976 * @see #getMaxFieldSize()
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
977 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
978 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
979 public void setMaxFieldSize(final int max) throws SQLException {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
980 if (max < 0)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
981 throw new SQLException("Illegal max value: " + max, "M1M05");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
982 if (max > 0)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
983 addWarning("setMaxFieldSize: field size limitation not supported", "01M23");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
984 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
985
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
986 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
987 * Sets the limit for the maximum number of rows that any ResultSet object
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
988 * can contain to the given number. If the limit is exceeded, the excess
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
989 * rows are silently dropped.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
990 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
991 * @param max the new max rows limit; zero means there is no limit
194
1296dbcc4958 Resolved javadoc many errors and warnings, such as:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 183
diff changeset
992 * @throws SQLException if the condition max &gt;= 0 is not satisfied
1296dbcc4958 Resolved javadoc many errors and warnings, such as:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 183
diff changeset
993 * @see #getMaxRows()
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
994 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
995 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
996 public void setMaxRows(final int max) throws SQLException {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
997 if (max < 0)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
998 throw new SQLException("Illegal max value: " + max, "M1M05");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
999 maxRows = max;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1000 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1001
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1002 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1003 * Sets the number of seconds the driver will wait for a Statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1004 * object to execute to the given number of seconds. If the limit is
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1005 * exceeded, an SQLException is thrown.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
1006 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1007 * @param seconds the new query timeout limit in seconds; zero means
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1008 * there is no limit
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1009 * @throws SQLException if a database access error occurs or the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1010 * condition seconds &gt;= 0 is not satisfied
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1011 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1012 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
1013 public void setQueryTimeout(final int seconds) throws SQLException {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1014 if (seconds < 0)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1015 throw new SQLException("Illegal timeout value: " + seconds, "M1M05");
249
46385d8ff8c9 Improve the implementation of Statement methods getQueryTimeout() and setQueryTimeout().
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 200
diff changeset
1016 queryTimeout = seconds;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1017 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1018
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1019 //== 1.6 methods (JDBC 4.0)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1020
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1021 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1022 * Retrieves whether this Statement object has been closed. A
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1023 * Statement is closed if the method close has been called on it, or
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1024 * if it is automatically closed.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1025 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1026 * @return true if this Statement object is closed; false if it is
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1027 * still open
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1028 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1029 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1030 public boolean isClosed() {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1031 return closed;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1032 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1033
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1034 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1035 * Requests that a Statement be pooled or not pooled. The value
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1036 * specified is a hint to the statement pool implementation
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1037 * indicating whether the applicaiton wants the statement to be
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1038 * pooled. It is up to the statement pool manager as to whether the
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
1039 * hint is used.
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
1040 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1041 * The poolable value of a statement is applicable to both internal
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1042 * statement caches implemented by the driver and external statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1043 * caches implemented by application servers and other applications.
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
1044 *
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1045 * By default, a Statement is not poolable when created, and a
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1046 * PreparedStatement and CallableStatement are poolable when
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1047 * created.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1048 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1049 * @param poolable requests that the statement be pooled if true
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1050 * and that the statement not be pooled if false
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1051 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1052 @Override
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
1053 public void setPoolable(final boolean poolable) {
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1054 this.poolable = poolable;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1055 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1056
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1057 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1058 * Returns a value indicating whether the Statement is poolable or
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1059 * not.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1060 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1061 * @return true if the Statement is poolable; false otherwise
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1062 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1063 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1064 public boolean isPoolable() {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1065 return poolable;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1066 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1067
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1068 //== 1.7 methods (JDBC 4.1)
29
c26213e86442 Use newSQLFeatureNotSupportedException() for setArray()
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 14
diff changeset
1069
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1070 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1071 * Specifies that this Statement will be closed when all its
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1072 * dependent result sets are closed. If execution of the Statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1073 * does not produce any result sets, this method has no effect.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1074 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1075 * @throws SQLException if this method is called on a closed Statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1076 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1077 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1078 public void closeOnCompletion() throws SQLException {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1079 if (closed)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1080 throw new SQLException("Cannot call on closed Statement", "M1M20");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1081 closeOnCompletion = true;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1082 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1083
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1084 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1085 * Returns a value indicating whether this Statement will be closed
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1086 * when all its dependent result sets are closed.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1087 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1088 * @return true if the Statement will be closed when all of its
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1089 * dependent result sets are closed; false otherwise
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1090 * @throws SQLException if this method is called on a closed Statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1091 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1092 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1093 public boolean isCloseOnCompletion() throws SQLException {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1094 if (closed)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1095 throw new SQLException("Cannot call on closed Statement", "M1M20");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1096 return closeOnCompletion;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1097 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1098
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1099 //== Java 1.8 methods (JDBC 4.2)
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1100
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1101 /**
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1102 * Retrieves the current result as an update count;
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1103 * if the result is a ResultSet object or there are no more results, -1 is returned.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1104 * This method should be called only once per result.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1105 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1106 * This method should be used when the returned row count may exceed Integer.MAX_VALUE.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1107 * The default implementation will throw UnsupportedOperationException
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1108 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1109 * @return the current result as an update count; -1 if the current
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1110 * result is a ResultSet object or there are no more results
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1111 * @throws SQLException if a database access error occurs or this
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1112 * method is called on a closed Statement
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1113 */
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1114 public long getLargeUpdateCount() throws SQLException {
378
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
1115 long ret = -1;
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
1116 if (header != null) {
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
1117 if (header instanceof MonetConnection.UpdateResponse) {
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
1118 ret = ((MonetConnection.UpdateResponse)header).count;
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
1119 } else if (header instanceof MonetConnection.SchemaResponse) {
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
1120 ret = ((MonetConnection.SchemaResponse)header).state;
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
1121 }
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
1122 }
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
1123
02f353f62abe Adjust UpdateResponse to allow for large updates (long instead of int).
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 377
diff changeset
1124 return ret;
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1125 }
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1126
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1127 /**
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1128 * Sets the limit for the maximum number of rows that any ResultSet object
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1129 * generated by this Statement object can contain to the given number.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1130 * If the limit is exceeded, the excess rows are silently dropped.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1131 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1132 * This method should be used when the row limit may exceed Integer.MAX_VALUE.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1133 * The default implementation will throw UnsupportedOperationException
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1134 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1135 * @param max the new max rows limit; zero means there is no limit
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1136 * @throws SQLException if a database access error occurs,
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1137 * this method is called on a closed Statement or
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1138 * the condition max &gt;= 0 is not satisfied
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1139 * @see #getLargeMaxRows()
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1140 */
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1141 @Override
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1142 public void setLargeMaxRows(final long max) throws SQLException {
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1143 if (max < 0)
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1144 throw new SQLException("Illegal max value: " + max, "M1M05");
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1145 maxRows = max;
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1146 }
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1147
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1148 /**
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1149 * Retrieves the maximum number of rows that a ResultSet object produced by
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1150 * this Statement object can contain. If this limit is exceeded, the excess
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1151 * rows are silently dropped.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1152 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1153 * This method should be used when the returned row limit may exceed Integer.MAX_VALUE.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1154 * The default implementation will return 0
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1155 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1156 * @return the current maximum number of rows for a ResultSet object
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1157 * produced by this Statement object; zero means there is no limit
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1158 * @see #setLargeMaxRows(long max)
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1159 */
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1160 @Override
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1161 public long getLargeMaxRows() {
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1162 return maxRows;
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1163 }
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1164
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1165 /**
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1166 * Submits a batch of commands to the database for execution and if
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1167 * all commands execute successfully, returns an array of update counts.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1168 * The long elements of the array that is returned are ordered to
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1169 * correspond to the commands in the batch, which are ordered according
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1170 * to the order in which they were added to the batch.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1171 * The elements in the array returned by the method executeLargeBatch
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1172 * may be one of the following:
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1173 * <ol>
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1174 * <li>A number greater than or equal to zero -- indicates that the command
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1175 * was processed successfully and is an update count giving the number of
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1176 * rows in the database that were affected by the command's execution
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1177 * <li>A value of SUCCESS_NO_INFO -- indicates that the command was
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1178 * processed successfully but that the number of rows affected is unknown
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1179 * <p>If one of the commands in a batch update fails to execute properly,
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1180 * this method throws a BatchUpdateException, and a JDBC driver may or
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1181 * may not continue to process the remaining commands in the batch.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1182 * However, the driver's behavior must be consistent with a particular DBMS,
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1183 * either always continuing to process commands or never continuing to process
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1184 * commands. If the driver continues processing after a failure, the array
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1185 * returned by the method BatchUpdateException.getLargeUpdateCounts will
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1186 * contain as many elements as there are commands in the batch, and at
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1187 * least one of the elements will be the following:</p>
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1188 * <li>A value of EXECUTE_FAILED -- indicates that the command failed to
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1189 * execute successfully and occurs only if a driver continues to process
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1190 * commands after a command fails
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1191 * </ol>
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1192 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1193 * This method should be used when the returned row count may exceed Integer.MAX_VALUE.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1194 * The default implementation will throw UnsupportedOperationException
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1195 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1196 * MonetDB does continues after an error has occurred in the batch.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1197 * If one of the commands attempts to return a result set, an
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1198 * SQLException is added to the SQLException list and thrown
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1199 * afterwards execution. Failing queries result in SQLExceptions
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1200 * too and may cause subparts of the batch to fail as well.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1201 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1202 * @return an array of update counts containing one element for each
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1203 * command in the batch. The elements of the array are ordered
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1204 * according to the order in which commands were added to the batch.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1205 * @throws SQLException if a database access error occurs, this method is called
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1206 * on a closed Statement or the driver does not support batch statements.
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1207 * @throws BatchUpdateException (a subclass of SQLException) if one of the
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1208 * commands sent to the database fails to execute properly or
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1209 * attempts to return a result set.
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1210 */
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1211 @Override
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1212 public long[] executeLargeBatch() throws SQLException {
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1213 if (batch == null || batch.isEmpty()) {
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1214 return new long[0];
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1215 }
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1216
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1217 // this method is synchronized/locked to make sure no one gets in between the
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1218 // operations we execute below
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1219 if (batchLock == null) {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1220 // create a ReentrantLock at first time use
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1221 batchLock = new ReentrantLock();
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1222 }
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1223 batchLock.lock();
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1224 try {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1225 final long[] counts = new long[batch.size()];
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1226 final String sep = connection.queryTempl[2];
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1227 final int sepLen = sep.length();
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1228 final BatchUpdateException e = new BatchUpdateException(
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1229 "Error(s) occurred while executing the batch, " +
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1230 "see chained SQLExceptions for details", "22000", 22000, counts, null);
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1231 final StringBuilder tmpBatch = new StringBuilder(MapiSocket.BLOCK);
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1232 int offset = 0;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1233 boolean first = true;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1234 boolean error = false;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1235
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1236 for (int i = 0; i < batch.size(); i++) {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1237 String tmp = batch.get(i);
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1238 if (sepLen + tmp.length() > MapiSocket.BLOCK) {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1239 // The thing is too big. Way too big. Since it won't
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1240 // be optimal anyway, just add it to whatever we have
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1241 // and continue.
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1242 if (!first)
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1243 tmpBatch.append(sep);
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1244 tmpBatch.append(tmp);
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1245 // send and receive
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1246 error |= internalBatch(tmpBatch, counts, offset, i + 1, e);
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1247 offset = i;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1248 tmpBatch.setLength(0); // clear the buffer
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1249 first = true;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1250 continue;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1251 }
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1252 if (tmpBatch.length() + sepLen + tmp.length() >= MapiSocket.BLOCK) {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1253 // send and receive
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1254 error |= internalBatch(tmpBatch, counts, offset, i + 1, e);
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1255 offset = i;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1256 tmpBatch.setLength(0); // clear the buffer
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1257 first = true;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1258 }
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1259 if (first)
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1260 first = false;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1261 else
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1262 tmpBatch.append(sep);
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1263 tmpBatch.append(tmp);
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1264 }
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1265 // send and receive
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1266 error |= internalBatch(tmpBatch, counts, offset, counts.length, e);
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1267
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1268 // throw BatchUpdateException if it contains something
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1269 if (error)
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1270 throw e;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1271
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1272 // otherwise just return the counts
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1273 return counts;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1274 } finally {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1275 batch.clear();
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1276 batchLock.unlock();
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1277 }
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1278 }
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1279
392
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1280 private boolean internalBatch(
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1281 final StringBuilder batch,
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1282 final long[] counts,
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1283 int offset,
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1284 final int max,
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1285 final BatchUpdateException e)
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1286 throws BatchUpdateException
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1287 {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1288 try {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1289 long count = -1;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1290 boolean hasResultSet = internalExecute(batch.toString());
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1291
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1292 if (!hasResultSet)
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1293 count = getLargeUpdateCount();
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1294
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1295 do {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1296 if (offset >= max)
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1297 throw new SQLException("Overflow: don't use multi statements when batching (" + max + ")", "M1M16");
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1298 if (hasResultSet) {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1299 e.setNextException(
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1300 new SQLException("Batch query produced a ResultSet! " +
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1301 "Ignoring and setting update count to value " + EXECUTE_FAILED, "M1M17"));
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1302 counts[offset] = EXECUTE_FAILED;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1303 } else if (count >= 0) {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1304 counts[offset] = count;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1305 }
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1306 offset++;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1307 } while ((hasResultSet = getMoreResults()) || (count = getLargeUpdateCount()) != -1);
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1308 } catch (SQLException ex) {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1309 e.setNextException(ex);
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1310 for (; offset < max; offset++) {
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1311 counts[offset] = EXECUTE_FAILED;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1312 }
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1313 return true;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1314 }
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1315 return false;
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1316 }
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1317
00c6bb1d84ed Improve executeLargeBatch(). Make sure it calls getLargeUpdateCount() instead of getUpdateCount() to populate the long[] elements.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 391
diff changeset
1318
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1319 /**
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1320 * Executes the given SQL statement, which may be an INSERT, UPDATE, or
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1321 * DELETE statement or an SQL statement that returns nothing, such as an
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1322 * SQL DDL statement.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1323 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1324 * This method should be used when the returned row count may exceed Integer.MAX_VALUE.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1325 * Note: This method cannot be called on a PreparedStatement or CallableStatement.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1326 * The default implementation will throw SQLFeatureNotSupportedException
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1327 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1328 * @param sql an SQL Data Manipulation Language (DML) statement, such as
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1329 * INSERT, UPDATE or DELETE; or an SQL statement that returns nothing,
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1330 * such as a DDL statement.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1331 * @return either (1) the row count for SQL Data Manipulation Language (DML) statements
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1332 * or (2) 0 for SQL statements that return nothing
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1333 * @throws SQLException if a database access error occurs, this method is
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1334 * called on a closed Statement, the given SQL statement produces a
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1335 * ResultSet object, the method is called on a PreparedStatement or CallableStatement
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1336 */
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1337 @Override
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1338 public long executeLargeUpdate(final String sql) throws SQLException {
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1339 if (execute(sql) != false)
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1340 throw new SQLException("Query produced a result set", "M1M17");
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1341
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1342 return getLargeUpdateCount();
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1343 }
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1344
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1345 /**
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1346 * Executes the given SQL statement and signals the driver with the
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1347 * given flag about whether the auto-generated keys produced by this
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1348 * Statement object should be made available for retrieval.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1349 * The driver will ignore the flag if the SQL statement is not an INSERT
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1350 * statement, or an SQL statement able to return auto-generated keys
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1351 * (the list of such statements is vendor-specific).
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1352 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1353 * This method should be used when the returned row count may exceed Integer.MAX_VALUE.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1354 * Note: This method cannot be called on a PreparedStatement or CallableStatement.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1355 * The default implementation will throw SQLFeatureNotSupportedException
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1356 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1357 * @param sql an SQL Data Manipulation Language (DML) statement, such as
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1358 * INSERT, UPDATE or DELETE; or an SQL statement that returns nothing,
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1359 * such as a DDL statement.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1360 * @param autoGeneratedKeys - a flag indicating whether
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1361 * auto-generated keys should be made available for
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1362 * retrieval; one of the following constants:
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1363 * Statement.RETURN_GENERATED_KEYS
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1364 * Statement.NO_GENERATED_KEYS
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1365 * @return either (1) the row count for SQL Data Manipulation Language (DML) statements
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1366 * or (2) 0 for SQL statements that return nothing
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1367 * @throws SQLException if a database access error occurs, this method is
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1368 * called on a closed Statement, the given SQL statement produces a
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1369 * ResultSet object, the given constant is not one of those allowed,
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1370 * the method is called on a PreparedStatement or CallableStatement
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1371 */
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1372 @Override
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1373 public long executeLargeUpdate(final String sql, final int autoGeneratedKeys)
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1374 throws SQLException
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1375 {
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1376 if (autoGeneratedKeys != Statement.RETURN_GENERATED_KEYS &&
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1377 autoGeneratedKeys != Statement.NO_GENERATED_KEYS)
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1378 throw new SQLException("Invalid argument, expected RETURN_GENERATED_KEYS or NO_GENERATED_KEYS", "M1M05");
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1379
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1380 /* MonetDB has no way to disable this, so just do the normal thing ;) */
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1381 if (execute(sql) != false)
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1382 throw new SQLException("Query produced a result set", "M1M17");
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1383
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1384 return getLargeUpdateCount();
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1385 }
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1386
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1387 /**
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1388 * Executes the given SQL statement and signals the driver that the
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1389 * auto-generated keys indicated in the given array should be made
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1390 * available for retrieval. The driver will ignore the array if the
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1391 * SQL statement is not an INSERT statement.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1392 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1393 * This method should be used when the returned row count may exceed Integer.MAX_VALUE.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1394 * Note: This method cannot be called on a PreparedStatement or CallableStatement.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1395 * The default implementation will throw SQLFeatureNotSupportedException
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1396 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1397 * MonetDB only supports returing the generated key for one column,
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1398 * which will be the first column that has a serial. Hence, this
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1399 * method cannot work as required and the driver will fall back to
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1400 * executing with request to the database to return the generated
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1401 * key, if any.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1402 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1403 * @param sql an SQL Data Manipulation Language (DML) statement, such as
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1404 * INSERT, UPDATE or DELETE; or an SQL statement that returns nothing,
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1405 * such as a DDL statement.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1406 * @param columnIndexes an array of column indexes indicating the
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1407 * columns that should be returned from the inserted row
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1408 * @return either (1) the row count for SQL Data Manipulation Language (DML) statements
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1409 * or (2) 0 for SQL statements that return nothing
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1410 * @throws SQLException if a database access error occurs, this method is
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1411 * called on a closed Statement, the given SQL statement produces a
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1412 * ResultSet object, the second argument supplied to this method is
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1413 * not an int array whose elements are valid column indexes,
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1414 * the method is called on a PreparedStatement or CallableStatement
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1415 */
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1416 @Override
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1417 public long executeLargeUpdate(final String sql, final int[] columnIndexes)
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1418 throws SQLException
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1419 {
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1420 addWarning("executeLargeUpdate: generated keys for fixed set of columns not supported", "01M18");
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1421 return executeLargeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1422 }
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1423
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1424 /**
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1425 * Executes the given SQL statement and signals the driver that the
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1426 * auto-generated keys indicated in the given array should be made
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1427 * available for retrieval. The driver will ignore the array if the
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1428 * SQL statement is not an INSERT statement.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1429 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1430 * This method should be used when the returned row count may exceed Integer.MAX_VALUE.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1431 * Note: This method cannot be called on a PreparedStatement or CallableStatement.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1432 * The default implementation will throw SQLFeatureNotSupportedException
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1433 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1434 * MonetDB only supports returing the generated key for one column,
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1435 * which will be the first column that has a serial. Hence, this
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1436 * method cannot work as required and the driver will fall back to
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1437 * executing with request to the database to return the generated
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1438 * key, if any.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1439 *
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1440 * @param sql an SQL Data Manipulation Language (DML) statement, such as
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1441 * INSERT, UPDATE or DELETE; or an SQL statement that returns nothing,
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1442 * such as a DDL statement.
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1443 * @param columnNames an array of the names of the columns that
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1444 * should be returned from the inserted row
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1445 * @return either (1) the row count for SQL Data Manipulation Language (DML) statements
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1446 * or (2) 0 for SQL statements that return nothing
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1447 * @throws SQLException if a database access error occurs, this method is
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1448 * called on a closed Statement, the given SQL statement produces a
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1449 * ResultSet object, the second argument supplied to this method is
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1450 * not a String array whose elements are valid column names,
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1451 * the method is called on a PreparedStatement or CallableStatement
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1452 */
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1453 @Override
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1454 public long executeLargeUpdate(final String sql, final String[] columnNames)
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1455 throws SQLException
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1456 {
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1457 addWarning("executeLargeUpdate: generated keys for fixed set of columns not supported", "01M18");
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1458 return executeLargeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1459 }
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1460
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1461 //== end methods of interface Statement
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1462
376
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1463
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1464 //== internal helper methods which do not belong to the JDBC interface
ffdc7b0e102d Updated JDBC driver to comply with JDBC 4.2 interface now we compile for Java 8. This includes:
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 361
diff changeset
1465
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1466 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1467 * Adds a warning to the pile of warnings this Statement object has. If
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1468 * there were no warnings (or clearWarnings was called) this warning will
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1469 * be the first, otherwise this warning will get appended to the current
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1470 * warning.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1471 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1472 * @param reason the warning message
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1473 */
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
1474 private void addWarning(final String reason, final String sqlstate) {
183
57f09396b22c Small improvements
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 181
diff changeset
1475 SQLWarning warng = new SQLWarning(reason, sqlstate);
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1476 if (warnings == null) {
183
57f09396b22c Small improvements
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 181
diff changeset
1477 warnings = warng;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1478 } else {
183
57f09396b22c Small improvements
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 181
diff changeset
1479 warnings.setNextWarning(warng);
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1480 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1481 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1482
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1483 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1484 * Closes this Statement if there are no more open ResultSets
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1485 * (Responses). Called by MonetResultSet.close().
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1486 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1487 void closeIfCompletion() {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1488 if (!closeOnCompletion || lastResponseList == null)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1489 return;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1490 if (!lastResponseList.hasUnclosedResponses())
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1491 close();
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1492 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1493 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1494
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1495 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1496 * This internal subclass is not intended for normal use. Therefore it is restricted to
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1497 * classes from the very same package only.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1498 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1499 * Known issues with this class: some methods of the ResultSetMetaData object (obtained via getMetaData())
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1500 * require that its statement argument (accessed via getStatement()) has a valid Statement object set.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1501 * Instances of this subclass do not have a valid Statement (see special constructor), so
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1502 * those metadata methods do not return the correct values.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1503 * Special checks are programmed to prevent NullPointerExceptions, see above.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1504 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1505 * As of Jun2016 this class is only used by MonetStatement.getGeneratedKeys()
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1506 * Note: to resolve a javac -Xlint warning, this class definition is moved to this file.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1507 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1508 * TODO: try to eliminate the need for this class completely.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1509 */
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
1510 final class MonetVirtualResultSet extends MonetResultSet {
414
1e278695fe54 Small improvements: adding some final keywords, removing unnecesary initialisations, improve comments.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 408
diff changeset
1511 private final String results[][];
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1512 private boolean closed;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1513
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1514 MonetVirtualResultSet(
295
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
1515 final Statement statement,
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
1516 final String[] columns,
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
1517 final String[] types,
003ae6d881db Add "final" keyword to method arguments and local variables where possible.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 292
diff changeset
1518 final String[][] results
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1519 ) throws IllegalArgumentException {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1520 super(statement, columns, types, results.length);
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1521 this.results = results;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1522 closed = false;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1523 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1524
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1525 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1526 * This method is overridden in order to let it use the results array
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1527 * instead of the cache in the Statement object that created it.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1528 *
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1529 * @param row the number of the row to which the cursor should move. A
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1530 * positive number indicates the row number counting from the
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1531 * beginning of the result set; a negative number indicates the row
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1532 * number counting from the end of the result set
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1533 * @return true if the cursor is on the result set; false otherwise
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1534 * @throws SQLException if a database error occurs
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1535 */
13
749e3cf8b2aa Expanded the classes needed for import.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 0
diff changeset
1536 @Override
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1537 public boolean absolute(int row) throws SQLException {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1538 if (closed)
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1539 throw new SQLException("ResultSet is closed!", "M1M20");
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1540
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1541 // first calculate what the JDBC row is
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1542 if (row < 0) {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1543 // calculate the negatives...
377
8a813f5cef1b Extend StartOfHeaderParser with method getNextAsLong() and change type of tuplecount to long.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 376
diff changeset
1544 row = (int) tupleCount + row + 1;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1545 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1546 // now place the row not farther than just before or after the result
250
3038e60bdca1 If methods never throw an SQLException, remove the "throws SQLException" part.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 249
diff changeset
1547 if (row < 0)
3038e60bdca1 If methods never throw an SQLException, remove the "throws SQLException" part.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 249
diff changeset
1548 row = 0; // before first
3038e60bdca1 If methods never throw an SQLException, remove the "throws SQLException" part.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 249
diff changeset
1549 else if (row > tupleCount + 1)
377
8a813f5cef1b Extend StartOfHeaderParser with method getNextAsLong() and change type of tuplecount to long.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 376
diff changeset
1550 row = (int) tupleCount + 1; // after last
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1551
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1552 // store it
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1553 curRow = row;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1554
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1555 // see if we have the row
250
3038e60bdca1 If methods never throw an SQLException, remove the "throws SQLException" part.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 249
diff changeset
1556 if (row < 1 || row > tupleCount)
3038e60bdca1 If methods never throw an SQLException, remove the "throws SQLException" part.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 249
diff changeset
1557 return false;
0
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1558
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1559 for (int i = 0; i < results[row - 1].length; i++) {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1560 tlp.values[i] = results[row - 1][i];
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1561 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1562
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1563 return true;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1564 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1565
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1566 /**
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1567 * Mainly here to prevent errors when the close method is called. There
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1568 * is no real need for this object to close it. We simply remove our
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1569 * resultset data.
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1570 */
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1571 @Override
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1572 public void close() {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1573 if (!closed) {
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1574 closed = true;
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1575 // types and columns are MonetResultSets private parts
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1576 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1577 }
a5a898f6886c Copy of MonetDB java directory changeset e6e32756ad31.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff changeset
1578 }