Add comprehensive test coverage for EXEC prepare method#2834
Merged
divang merged 2 commits intodev/divang/sybase-migration-dynamic-preparefrom Nov 17, 2025
Merged
Conversation
28553e7 to
a50e4a0
Compare
divang
approved these changes
Nov 17, 2025
47009b3
into
dev/divang/sybase-migration-dynamic-prepare
4 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
The
PrepareMethodExecTest.javatest suite provides comprehensive validation for the EXEC prepare method implementation in the Microsoft SQL Server JDBC Driver. This implementation specifically addresses Sybase ASE compatibility requirements, enabling seamless migration from Sybase environments to SQL Server by maintaining session-scoped temporary table persistence across PreparedStatement boundaries.Test Strategy
The testing strategy follows a multi-layered approach covering:
Test Scenarios by Category
Category 1: Core Sybase ASE Compatibility
Scenario 1.1: Temporary Table Persistence
testTempTablePersistenceWithExecMethod()prepareandprepexecmethods would fail this scenarioScenario 1.2: Complex Multi-Table Operations
testMultipleTempTablesScenario()Category 2: Security Validation
Scenario 2.1: Basic SQL Injection Prevention
testSQLInjectionPrevention()'; DROP TABLE users; --' OR '1'='1admin'/*1'; EXEC xp_cmdshell('dir'); --Scenario 2.2: Advanced Attack Pattern Prevention
testAdvancedSQLInjectionPrevention()'; WAITFOR DELAY '00:00:05'; --' UNION SELECT TOP 1 name FROM sys.tables --'; EXEC sp_configure 'show advanced options', 1; --' AND (SELECT COUNT(*) FROM sys.tables) > 0 --Category 3: Comprehensive Data Type Validation
Scenario 3.1: Multi-Data Type Parameter Substitution
testAllDataTypesParameterSubstitution()Scenario 3.2: Numeric Precision and Scale Handling
testNumericPrecisionScale()123.456(precision: 6, scale: 3)999999.999999(precision: 12, scale: 6)0.000001(precision: 7, scale: 6)123456789012345.123456789(precision: 24, scale: 9)Scenario 3.3: Unicode and International Character Support
testUnicodeEdgeCases()Scenario 3.4: Binary Data Edge Cases
testBinaryEdgeCases()Category 4: Date/Time and Large Value Handling
Scenario 4.1: DateTime Precision Validation
testDateTimePrecision()2023-12-25 15:30:45.1234561753-01-01 00:00:00.0009999-12-31 23:59:59.997Scenario 4.2: Large Number Handling
testLargeNumbers()1.23E+15Scenario 4.3: Long String Parameter Handling
testLongStringParameters()Category 5: Performance and Scalability
Scenario 5.1: Comparative Performance Analysis
testBasicPerformanceComparison()Scenario 5.2: Repeated Execution Performance
testRepeatedExecutionPerformance()Category 6: Advanced Operational Scenarios
Scenario 6.1: Batch Execution Support
testBatchExecution()executeBatch()Scenario 6.2: NULL Value Handling
testNullHandlingAllTypes()wasNull()validation after retrieval