Hi Nikolov,
Thanks for your reply, it was very helpful in understanding core issue we had.
We also decided to use only Java dbfit as we dont have any dependency on .net and wanted to use against both linux/windows.
When we run the same dbfit scripts against java , we get below errors which was not an issue while using .net r. We tried couple of solution(adding |set option|bind symbols|false|) but it didnt work for us.
Thanks in advance for your help.
Please note: Below are sample queries & may not work as I mocked table and column names for security reasons as you may know.
Issue 1) When query returns no results or expected result is none (same query works fine in toad/sqldeveloper)Eg: test to validate no duplicates or no error logs in a table
Sample Query:
select example.* from (
select sum(CNTR) over (partition by 1) as TOTAL_ISSUES_CNT, rn.*, ROWNUM as ROW_NUMBER from (
select count(distinct PRIMARY_KEY||FOREIGN_KEY) over (partition by 1) as CNTR, cntr_rcdset.* from (
select
table1.column1 AS PRIMARY_KEY,
table1.column2 AS FOREIGN_KEY
from dbname.table1 table1
group by table1.column1 , table1.column2
having count(*) > 1
) cntr_rcdset
) rn where rn.CNTR > 0 order by 1, 2
) example where example.ROW_NUMBER <= 10;
Results log: java.lang.Exception: Unknown column record_id
at dbfit.fixture.RowSetFixture.findColumn(RowSetFixture.java:63)
at dbfit.fixture.RowSetFixture.bind(RowSetFixture.java:74)
at fit.ColumnFixture.doRows(ColumnFixture.java:18)
at dbfit.fixture.RowSetFixture.doRows(RowSetFixture.java:93)
at fit.Fixture.doTable(Fixture.java:156)
at fitlibrary.traverse.AlienTraverseHandler.doTable(AlienTraverseHandler.java:21)
at fitlibrary.traverse.workflow.DoTraverseInterpreter.interpretWholeTable(DoTraverseInterpreter.java:104)
at fitlibrary.traverse.workflow.DoTraverseInterpreter.interpretWholeTable(DoTraverseInterpreter.java:89)
at fitlibrary.DoFixture.interpretWholeTable(DoFixture.java:73)
at fitlibrary.suite.InFlowPageRunner.run(InFlowPageRunner.java:27)
at fitlibrary.DoFixture.interpretTables(DoFixture.java:42)
at dbfit.DatabaseTest.interpretTables(DatabaseTest.java:26)
at fit.Fixture.doTables(Fixture.java:81)
at fit.FitServer.process(FitServer.java:81)
at fit.FitServer.run(FitServer.java:56)
at fit.FitServer.main(FitServer.java:41)
Issue 2) This query has symbols etc which works fine when its run in toad/sqldeveloper but same query returns oracle error when running using dbfit/java but works fine with .net
Sample Query :
select example.* from (
select sum(CNTR) over (partition by 1) as TOTAL_ISSUES_CNT, rn.*, ROWNUM as ROW_NUMBER from (
select Column1 as CNTR, cntr_rcdset.* from (
select t1.RECORD_ID
,regexp_substr(t1.column2, '\w+', 1, t2.column_value) as MISSING_FK_ID
,regexp_count( t1.column2, ':' )+1 as NUM_OF_MISSING_RCDS
from dbname.Table1 t1,
table( cast(multiset(select level from dual connect by level <= length(t1.column2) - length(replace(t1.column2, ':', '')) + 1 ) as sys.odcinumberlist )) t2
where (t1.RECORD_ID is not null )
and to_char(t1.RECORD_ID ||':'||regexp_substr(t1.column2, '\w+', 1, t2.column_value)) not in (
select to_char(brdg.column1||':'||brdg.column2) from dbname.Table1 brdg )
) cntr_rcdset
) rn where rn.CNTR > 0 order by 1, 2
) example where example.ROW_NUMBER <= 10;
Results log:
java.sql.SQLSyntaxErrorException: ORA-00920: invalid relational operator
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:884)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3628)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1493)
at dbfit.fixture.Inspect.inspectQuery(Inspect.java:82)
at dbfit.fixture.Inspect.doTable(Inspect.java:47)
at fitlibrary.traverse.AlienTraverseHandler.doTable(AlienTraverseHandler.java:21)
at fitlibrary.traverse.workflow.DoTraverseInterpreter.interpretWholeTable(DoTraverseInterpreter.java:104)
at fitlibrary.traverse.workflow.DoTraverseInterpreter.interpretWholeTable(DoTraverseInterpreter.java:89)
at fitlibrary.DoFixture.interpretWholeTable(DoFixture.java:73)
at fitlibrary.suite.InFlowPageRunner.run(InFlowPageRunner.java:27)
at fitlibrary.DoFixture.interpretTables(DoFixture.java:42)
at dbfit.DatabaseTest.interpretTables(DatabaseTest.java:26)
at fit.Fixture.doTables(Fixture.java:81)
at fit.FitServer.process(FitServer.java:81)
at fit.FitServer.run(FitServer.java:56)
at fit.FitServer.main(FitServer.java:41)