-
Notifications
You must be signed in to change notification settings - Fork 1
Add execute functions #28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Signed-off-by: Edmund Miller <[email protected]>
…ements Signed-off-by: Edmund Miller <[email protected]>
…SQL execution logic - Removed the executeUpdate parameter from QueryHandler and ChannelSqlExtension. - Simplified SQL execution by directly executing queries without checking for DDL or UPDATE statements. Signed-off-by: Edmund Miller <[email protected]>
- Introduced `execute` and `executeUpdate` methods for executing SQL statements without returning a result set. - Added parameter validation and error handling for database connections. - Implemented SQL statement normalization to ensure proper execution. Signed-off-by: Edmund Miller <[email protected]>
Signed-off-by: Edmund Miller <[email protected]>
- Added tests for DDL and DML operations, including table creation, updates, and deletions. - Implemented error handling tests for invalid SQL statements and database configurations. - Ensured proper handling of statement normalization. Signed-off-by: Edmund Miller <[email protected]>
- Changed `execute` and `executeUpdate` methods from static to instance methods, allowing for better integration with session management. - Updated test cases to reflect the new method calls and ensure proper session initialization. Signed-off-by: Edmund Miller <[email protected]>
- Changed the database configuration from in-memory to file-based for persistence. - Updated SQL statements to use uppercase for table and column names for consistency. - Enhanced logging to include results of table creation and updates. Signed-off-by: Edmund Miller <[email protected]>
…ions - Added try-catch blocks around `setAutoCommit` and `commit` methods to handle exceptions for databases that do not support these operations. - Improved logging to provide feedback when default behaviors are used due to unsupported operations. Signed-off-by: Edmund Miller <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well done. Made a few comments
- Added a new `.envrc` file to manage environment variables for database connections. Signed-off-by: Edmund Miller <[email protected]>
- Renamed the `execute` function to `sqlExecute` for clarity and consistency. - Updated all references in the README, example scripts, and tests to reflect the new function name. - Enhanced documentation to provide clearer usage examples for SQL execution functions. Signed-off-by: Edmund Miller <[email protected]> Co-authored-by: Edmund Miller <[email protected]> Co-authored-by: Paolo Di Tommaso <[email protected]>
- Enhanced logging in examples to provide feedback on the number of affected rows and results of DDL operations. Signed-off-by: Edmund Miller <[email protected]> Co-authored-by: Paolo Di Tommaso <[email protected]>
- Modified the `sqlExecute` method to return a map containing success status, affected rows, and error messages for both DDL and DML operations. - Updated documentation to reflect the new return structure. - Adjusted unit tests to validate the new response format and ensure proper handling of success and error cases. Signed-off-by: Edmund Miller <[email protected]>
Signed-off-by: Edmund Miller <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems good, however, could you please provide a short summary of PR in the description to simplify the review? Also you may want to mark as "Read for review"
I wanted to sleep on it 😆 |
Co-authored-by: Paolo Di Tommaso <[email protected]> Signed-off-by: Edmund Miller <[email protected]>
Signed-off-by: Edmund Miller <[email protected]>
Signed-off-by: Edmund Miller <[email protected]>
This is a follow-up to #27
The problem is in the QueryHandler class. When executing a DDL statement like CREATE TABLE, the code is using executeQuery(), which expects a ResultSet to be returned. However, DDL statements don't return ResultSets; they should use executeUpdate() instead.
A couple of updates
sqlExecute
function to execute SQL statements that do not return result sets, such as DDL (e.g.,CREATE
,DROP
) and DML (e.g.,INSERT
,UPDATE
,DELETE
) operations. It returns the number of affected rows for DML statements andnull
for DDL statements.setAutoCommit
,setObject
,commit
,executeBatch
) to provide debug logs instead of failing outright. This is particularly useful for databases like Databricks that may not support certain JDBC features.version
variable in theMakefile
to dynamically fetch the plugin version from theMANIFEST.MF
file and install locally.