Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
d2e601f
Add CallableStatement support with IN parameters
gopalldb Apr 7, 2026
8a783bc
Address review feedback for CallableStatement
gopalldb Apr 7, 2026
a9e95fd
Enable escape processing by default for callable statements
gopalldb Apr 7, 2026
c0ad2bf
Fix shouldReturnResultSet, setEscapeProcessing, and execution paths
gopalldb Apr 7, 2026
e639e0f
Decouple {call} conversion from escape processing
gopalldb Apr 7, 2026
53b1f97
Document limitations and add native CALL syntax test
gopalldb Apr 7, 2026
e85a93b
Add debug logging to all DatabricksCallableStatement methods
gopalldb Apr 7, 2026
8f0f7c3
Fix cache warmer: Linux-only, OS-agnostic cache key
gopalldb Apr 8, 2026
2344880
Merge branch 'databricks:main' into main
gopalldb Apr 8, 2026
309cd68
Merge branch 'databricks:main' into main
gopalldb Apr 8, 2026
1534d1c
Merge branch 'databricks:main' into main
gopalldb Apr 8, 2026
ada4b8c
Merge branch 'main' into feature/callable-statement-in-params
gopalldb Apr 8, 2026
60b2c0f
Fix cache warmer: resolve plugins and profile-specific dependencies
gopalldb Apr 8, 2026
b28bbc6
Merge branch 'databricks:main' into main
gopalldb Apr 8, 2026
522ca76
Merge branch 'databricks:main' into main
gopalldb Apr 8, 2026
3b9a5c2
Merge branch 'databricks:main' into main
gopalldb Apr 8, 2026
5b7b6c2
Resolve merge conflict: keep multi-step cache warmer with real test
gopalldb Apr 8, 2026
e9111dc
Fix fork Maven config: use file:// mirror to local repo
gopalldb Apr 8, 2026
bfa0a8f
Fix fork mirror: use jfrog-central ID to match cached artifact metadata
gopalldb Apr 8, 2026
cb4048a
Fix fork Maven: remove _remote.repositories to prevent remote checks
gopalldb Apr 8, 2026
9a3c340
Fix fork Maven: combine _remote.repositories removal with file:// mirror
gopalldb Apr 8, 2026
cfe50d1
Fix fork Maven: use offline mode instead of file:// mirror
gopalldb Apr 8, 2026
d3dfc66
Remove _remote.repositories from cache at save time in warmer
gopalldb Apr 8, 2026
ae77f1c
Fix: non-fork path must not save cache (restore-only)
gopalldb Apr 8, 2026
621eea0
Merge branch 'databricks:main' into main
gopalldb Apr 8, 2026
de5ba9b
Fix: normalize _remote.repositories repo ID for offline mode
gopalldb Apr 8, 2026
122a967
Merge branch 'databricks:main' into main
gopalldb Apr 8, 2026
2377e63
Merge branch 'databricks:main' into main
gopalldb Apr 8, 2026
eee35b1
Merge branch 'main' into feature/callable-statement-in-params
gopalldb Apr 8, 2026
7d69651
Improve test coverage to meet 85% threshold
gopalldb Apr 9, 2026
d3559f1
Merge branch 'databricks:main' into main
gopalldb Apr 9, 2026
3b32595
.
gopalldb Apr 9, 2026
c0bf217
Resolve merge conflict in warmMavenCache.yml
gopalldb Apr 9, 2026
b84d320
Merge branch 'databricks:main' into main
gopalldb Apr 9, 2026
5f2833e
Address PR #1371 review feedback
gopalldb Apr 10, 2026
72636bf
Merge branch 'databricks:main' into main
gopalldb Apr 10, 2026
fcb4fbb
Merge remote-tracking branch 'origin/main' into feature/callable-stat…
gopalldb Apr 10, 2026
76c3ae9
Add coverage buffer: test ConnectionContext default getters
gopalldb Apr 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions NEXT_CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## [Unreleased]

### Added
- Added `CallableStatement` support with IN parameters. `Connection.prepareCall()` now returns a working `DatabricksCallableStatement` that supports positional parameter binding and execution via `{call proc(?)}` JDBC escape syntax. OUT/INOUT parameters and named parameters throw `SQLFeatureNotSupportedException`.

### Updated

Expand Down
76 changes: 24 additions & 52 deletions docs/JDBC_METHOD_INVENTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,62 +184,34 @@

## 3. java.sql.CallableStatement

**Implementation:** NOT IMPLEMENTED
**Implementation:** `DatabricksCallableStatement.java` — partial support (IN parameters only)

| Method Signature | Implemented | Exception Type | Deprecated? | Usage Category | Notes |
|-----------------|-------------|----------------|-------------|----------------|-------|
| `registerOutParameter(int, int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `registerOutParameter(int, int, int)` | NO | - | No | OCCASIONAL | Stored procedures not implemented |
| `wasNull()` | NO | - | No | COMMON | Stored procedures not implemented |
| `getString(int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `getBoolean(int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `getByte(int)` | NO | - | No | OCCASIONAL | Stored procedures not implemented |
| `getShort(int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `getInt(int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `getLong(int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `getFloat(int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `getDouble(int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `getBigDecimal(int, int)` | NO | - | Yes | DEPRECATED | Stored procedures not implemented |
| `getBytes(int)` | NO | - | No | OCCASIONAL | Stored procedures not implemented |
| `getDate(int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `getTime(int)` | NO | - | No | OCCASIONAL | Stored procedures not implemented |
| `getTimestamp(int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `getObject(int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `getBigDecimal(int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `getObject(int, Map)` | NO | - | No | RARE | Stored procedures not implemented |
| `getRef(int)` | NO | - | No | RARE | Stored procedures not implemented |
| `getBlob(int)` | NO | - | No | RARE | Stored procedures not implemented |
| `getClob(int)` | NO | - | No | RARE | Stored procedures not implemented |
| `getArray(int)` | NO | - | No | OCCASIONAL | Stored procedures not implemented |
| `getDate(int, Calendar)` | NO | - | No | OCCASIONAL | Stored procedures not implemented |
| `getTime(int, Calendar)` | NO | - | No | OCCASIONAL | Stored procedures not implemented |
| `getTimestamp(int, Calendar)` | NO | - | No | OCCASIONAL | Stored procedures not implemented |
| `registerOutParameter(int, int, String)` | NO | - | No | RARE | Stored procedures not implemented |
| `registerOutParameter(String, int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `registerOutParameter(String, int, int)` | NO | - | No | OCCASIONAL | Stored procedures not implemented |
| `registerOutParameter(String, int, String)` | NO | - | No | RARE | Stored procedures not implemented |
| `getURL(int)` | NO | - | No | RARE | Stored procedures not implemented |
| `setURL(String, URL)` | NO | - | No | RARE | Stored procedures not implemented |
| `setNull(String, int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `setBoolean(String, boolean)` | NO | - | No | COMMON | Stored procedures not implemented |
| `setByte(String, byte)` | NO | - | No | OCCASIONAL | Stored procedures not implemented |
| `setShort(String, short)` | NO | - | No | COMMON | Stored procedures not implemented |
| `setInt(String, int)` | NO | - | No | COMMON | Stored procedures not implemented |
| `setLong(String, long)` | NO | - | No | COMMON | Stored procedures not implemented |
| `setFloat(String, float)` | NO | - | No | COMMON | Stored procedures not implemented |
| `setDouble(String, double)` | NO | - | No | COMMON | Stored procedures not implemented |
| `setBigDecimal(String, BigDecimal)` | NO | - | No | COMMON | Stored procedures not implemented |
| `setString(String, String)` | NO | - | No | COMMON | Stored procedures not implemented |
| `setBytes(String, byte[])` | NO | - | No | OCCASIONAL | Stored procedures not implemented |
| `setDate(String, Date)` | NO | - | No | COMMON | Stored procedures not implemented |
| `setTime(String, Time)` | NO | - | No | OCCASIONAL | Stored procedures not implemented |
| `setTimestamp(String, Timestamp)` | NO | - | No | COMMON | Stored procedures not implemented |
| ... (50+ more methods) | NO | - | No | VARIOUS | All CallableStatement methods not implemented |
`DatabricksCallableStatement` extends `DatabricksPreparedStatement` and implements `CallableStatement`.
All IN parameter binding (`setXXX(int, value)`) and execution methods are inherited from `PreparedStatement`.
OUT/INOUT parameters, named parameters, and return-value syntax (`{? = call ...}`) throw `SQLFeatureNotSupportedException`.

| Method Signature | Implemented | Exception Type | Notes |
|-----------------|-------------|----------------|-------|
| *All `setXXX(int, value)` methods* | YES (inherited) | - | Inherited from DatabricksPreparedStatement |
| *`executeQuery()`, `executeUpdate()`, `execute()`* | YES (inherited) | - | Inherited from DatabricksPreparedStatement |
| *`addBatch()`, `executeBatch()`* | YES (inherited) | - | Inherited from DatabricksPreparedStatement |
| *`clearParameters()`, `getParameterMetaData()`* | YES (inherited) | - | Inherited from DatabricksPreparedStatement |
| `registerOutParameter(int, int)` | THROWS | `SQLFeatureNotSupportedException` | OUT params not supported |
| `registerOutParameter(int, int, int)` | THROWS | `SQLFeatureNotSupportedException` | OUT params not supported |
| `registerOutParameter(int, int, String)` | THROWS | `SQLFeatureNotSupportedException` | OUT params not supported |
| `registerOutParameter(String, int)` | THROWS | `SQLFeatureNotSupportedException` | OUT params not supported |
| `registerOutParameter(String, int, int)` | THROWS | `SQLFeatureNotSupportedException` | OUT params not supported |
| `registerOutParameter(String, int, String)` | THROWS | `SQLFeatureNotSupportedException` | OUT params not supported |
| `wasNull()` | THROWS | `SQLFeatureNotSupportedException` | OUT params not supported |
| *All `getXXX(int)` methods (~30)* | THROWS | `SQLFeatureNotSupportedException` | OUT param retrieval not supported |
| *All `getXXX(String)` methods (~30)* | THROWS | `SQLFeatureNotSupportedException` | OUT param retrieval not supported |
| *All `setXXX(String, value)` methods (~35)* | THROWS | `SQLFeatureNotSupportedException` | Named parameters not supported |

**Summary for CallableStatement:**
- **Total Methods:** 100+ (approx)
- **Fully Implemented:** 0
- **Note:** Driver throws `DatabricksSQLFeatureNotImplementedException` in `Connection.prepareCall()` - "Callable statements are not implemented in OSS JDBC"
- **Fully Implemented (inherited):** ~45 (all setXXX by index, execute, batch, lifecycle)
- **Throws SQLFeatureNotSupportedException:** ~100 (registerOutParameter, getXXX, named setXXX)
- **Note:** `Connection.prepareCall()` creates `DatabricksCallableStatement`. `{call proc(?)}` escape syntax is converted to `CALL proc(?)`. `{? = call ...}` return-value syntax is rejected at construction time.

---

Expand Down
Loading
Loading