DRILL-7048: Implement JDBC Statement.setMaxRows() with System Option
This introduces support for JDBC's Statement.setMaxRows(int) API, which can help Drill execute a query much faster if it knows that not ALL the records in the resultset will be consumed upfront.
This Commit introduces the core changes to support the feature within Drill's execution engine
Protobuf Changes
1. RunQuery: Added "autolimit_rowcount"
2. QueryProfile: Added "autoLimit"
3. Regenerated Java and C++ client files
REST API support
1. Support for REST server to interpret a submitted query and also for rendering this information for an executed query
2. Updates to the Freemarker templates (for WebUI)
3. Safety check within Javascript (for WebUI)
JDBC API support
1. Introduces backend execution of 'ALTER SESSION' to apply the auto-limiting of resultset size
2. Added Unit Tests for PreparedStatement and Statement objects
3. Added getter setter methods to be skipped in testing for org.apache.drill.jdbc.test.Drill2489CallsAfterCloseThrowExceptionsTest.testclosedPreparedStmtOfOpenConnMethodsThrowRight()
Updates based on review comments
Additional Updates
Test Cleanup
1. Revert Drill2489 hack
2. Formatting in *StatementTest
3. Removal f redundant `statement.close()`
4. Manage new Exception thrown when setting invalid maxRow values
Final updates
1. Test changes
2. Trim trailing spaces in auto-limit value (Javascript)
3. Before & After annotations to synchronize changes to system values for MaxRows(auto-limit)
Reorganized tests due to synchronized locking
Removed conflicting JsonCreator in QueryWrapper
Additional test cleanup
closes #1714