PDGGK opened a new issue, #18250:
URL: https://github.com/apache/iotdb/issues/18250

   ### Search before asking
   
   - [x] I searched in the [issues](https://github.com/apache/iotdb/issues) and 
found nothing similar.
   
   ### Version
   
   `master` (2.0.x). The affected code is also present in released 2.0.x 
versions.
   
   ### Describe the bug and provide the minimal reproduce step
   
   `IoTDBRpcDataSet.findColumn(String)` returns 
`columnOrdinalMap.get(columnName)` directly. When the column name is not 
present, `Map<String, Integer>.get` returns `null`, which auto-unboxes to `int` 
and throws a `NullPointerException`. The JDBC contract (`ResultSet.findColumn`) 
requires a `SQLException` when the column is not found, and the sibling 
`findColumnNameByIndex` already guards its input and throws — the guard was 
simply omitted for `findColumn`.
   
   This surfaces at the JDBC boundary (`IoTDBJDBCResultSet.findColumn`) and 
through `SessionDataSet.DataIterator.findColumn`, both of which delegate to the 
method above. The same missing guard also exists in 
`IoTDBJDBCDataSet.findColumn`.
   
   Minimal reproduce step:
   
   1. Execute any query over JDBC and obtain the `ResultSet`.
   2. Call `resultSet.findColumn("a_column_name_that_is_not_in_the_result")`.
   3. A raw `NullPointerException` is thrown instead of a `SQLException`.
   
   ### What did you expect to see?
   
   `findColumn` throws a `SQLException` (at the JDBC boundary) that names the 
missing column, per the `ResultSet.findColumn` contract.
   
   ### What did you see instead?
   
   A `NullPointerException`, from unboxing the `null` returned by the 
column-ordinal map lookup.
   
   ### Anything else?
   
   The fix mirrors the existing `findColumnNameByIndex` guard: throw a checked 
`StatementExecutionException` at the rpc layer (reusing the existing 
`UNKNOWN_COLUMN_NAME` message), converted to `SQLException` at the JDBC 
boundary. I'd like to work on this and will open a PR (which also fixes the 
identical, currently-unused-but-public `IoTDBJDBCDataSet.findColumn`).
   
   ### Are you willing to submit a PR?
   
   - [x] I'm willing to submit a PR!
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to