Windsoft / Querydog / Oracle → MariaDB PL/SQL Verification
Oracle → MariaDB PL/SQL Conversion: Verification Results and Remaining Scope
40 PL/SQL, TYPE, and job objects collected from one Oracle test schema were converted to a separate MariaDB verification DB and compiled. 40/40 DDL compilation success does not mean a 100% overall migration success rate. Actual routine call results and table data migration must be checked separately.
Test Subject and Method
- 40 collected objects from Oracle 23ai 23.7 test schema: 19 business objects, 10 previous test objects, 10 new test routines, and 1 supported TYPE. The new routines cover hierarchical queries, regular expressions, temporary CLOBs, exception mapping, records, FORALL, DBMS_SQL, JSON_TABLE, XMLTABLE, and PIPELINED functions.
- Target tables in MariaDB 12.3.2 isolated verification DB Only 119 structures After replication, we compiled the automatic conversion results from Querydog without AI. The verification DB was deleted after testing.
- For the 10 new routines, Oracle reference test inputs and target call results were compared. For the 4 existing business date functions, 43 types of date inputs and 4 format combinations were tested, etc. 259 casesThe results were compared with Oracle.
- In actual operations, these 40 objects were not installed in bulk on MariaDB, nor was table data transferred for this test. The release installation file of Querydog 1.0.45 was also not built or executed in this test.
Application history of the previous 10 tests
The first five routine tests for business operations had 0/5 compilation in the initial automatic conversion. After manual conversion for each case, they compiled 5/5 in a separate verification DB. The next five tested triggers, MERGE, JSON, LISTAGG, and dynamic SQL, converting five Oracle logical objects to six MariaDB physical objects and executing them.
These 10 test objects were later reapplied to the actual test target DB, confirming 11/11 DDL success. Differences in Oracle and MariaDB results for one aggregation routine were found to be due to inconsistencies in the target’s basic business data; after synchronization, the results matched for the specified inputs. This history includes manual conversion and target data correctionso it is not calculated as Querydog automatic conversion performance or total business migration rate.
The 10 recently added test routines were compiled and called in an isolated verification DB, not applied in bulk to the actual test target DB.
DDL compilation results by version
| Timing | Isolated DDL of the same 40 objects | Interpretation |
|---|---|---|
| 1.0.41 initial measurement | 32/40 (80%) | Of the new 10 routines, 3/10 compiled, and only 1/10 matched actual test input results. |
| 1.0.42 limited conversion added | 37/40 (92.5%) | The new routine matched the compilation result for 8/10 cases and the specified input result for 7/10 cases. PIPELINED was compared after changing the invocation method. |
| 1.0.43~1.0.45 re-verification | 40/40 (100% DDL) | We verified that the new routine produced correct results for all 10/10 specified inputs and confirmed the TYPE replacement procedure. In version 1.0.45, the date function results matched for all 259/259 inputs. |
The denominator consists of the same 40 collected objects during the test period. The figures DDL compilation rateand do not represent the equivalence of results for the 40 business functions or the support rate for all Oracle PL/SQL syntax.
Execution verification and conversion conditions
| Items | Contents verified during the test | Remaining conditions |
|---|---|---|
| 10 new PL/SQL types | For the specified inputs, the execution results for all 10/10 targets matched the Oracle reference values. | Conversion is narrowed by supported forms. Dynamic DBMS_SQL, complex XMLTABLE/XPath, etc., are not included in these results. |
| 4 existing date functions | Compared with 43 types of inputs including empty strings, spaces, leap years, months/days with 0, multiple delimiters, and various date formats, with results matching for all 259/259 cases. | Additional verification is needed for other date formats, regional settings, and inputs. |
| 4 Oracle TYPEs | Converted 2 object types and 2 collection types into JSON creation functions and query procedures, confirming round-trip for 48 fields and 27 fields. | The original TYPE differs in the call contract. External call sites must be modified, and not all actual data has been verified. |
| FORALL | We changed a single INSERT with consecutive indexes into a row-by-row loop and observed a result of 3 rows. In the isolated DB, approximately 0.013 seconds for 1,000 rows and approximately 0.058 seconds for 5,000 rows were observed. | This is not a performance comparison under the same conditions as the original Oracle, and bulk DML performance is not preserved. |
Remaining verification before actual business migration.
- TYPE·PIPELINED functions and JSON functions.
CALLYou need to find and modify the external SQL/program call points in places that were changed to procedures and execute them. - You must check the results of all existing business objects, encrypted text compatibility, autonomous transaction logs, and business rules of expired procedures that are INVALID in the source.
- Table data migration is a separate task. You need to verify the number of rows, values, LOBs, foreign key references, errors, and retry results on the actual target.
- Large-scale FORALL performance and PL/SQL statements outside the supported range require tests at production scale.
Therefore, this record does not assert a 90% or 100% overall business migration conversion rate. The test results’ summary data for public release (JSON)can be downloaded.
Grounds for DB-to-DB migration function. · Oracle migration user manual. · Introduction to Querydog products