Check firebird.log [no messages found for interval when this test was running]
Jump to: output_first_mismatch    outcomes_full_history    elapsed_time_chart
Show cross-report outcomes.

Annotation type Annotation details
2 @message
firebird.driver.types.DatabaseError: SQL error code = -104
-Datatypes are not comparable in expression

LOG DETAILS:

2025-02-25 19:13:17.021
2025-02-25 19:13:17.027 act = <firebird.qa.plugin.Action object at [hex]>
2025-02-25 19:13:17.033 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2025-02-25 19:13:17.041
2025-02-25 19:13:17.049 @pytest.mark.version('>=2.5')
2025-02-25 19:13:17.058 def test_1(act: Action, capsys):
2025-02-25 19:13:17.066 with act.db.connect() as con:
2025-02-25 19:13:17.075 con.execute_immediate(proc_ddl)
2025-02-25 19:13:17.084 con.commit()
2025-02-25 19:13:17.093 c = con.cursor()
2025-02-25 19:13:17.100 >           for row in c.execute("select o_dts from test_proc('2019-'|| COALESCE( ?, 1) ||'-01' )", [3]):
2025-02-25 19:13:17.108
2025-02-25 19:13:17.116 tests/bugs/core_6108_test.py:37:
2025-02-25 19:13:17.132 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-02-25 19:13:17.141
2025-02-25 19:13:17.149 self = <firebird.driver.core.Cursor object at [hex]>
2025-02-25 19:13:17.156 operation = "select o_dts from test_proc('2019-'|| COALESCE( ?, 1) ||'-01' )"
2025-02-25 19:13:17.162 parameters = [3]
2025-02-25 19:13:17.169
2025-02-25 19:13:17.176 def execute(self, operation: Union[str, Statement], parameters: Sequence[Any]=None) -> Cursor:
2025-02-25 19:13:17.183 """Executes SQL command or prepared `Statement`.
2025-02-25 19:13:17.194
2025-02-25 19:13:17.206 Starts new transaction if transaction manager associated with cursor is not active.
2025-02-25 19:13:17.214
2025-02-25 19:13:17.221 Arguments:
2025-02-25 19:13:17.228 operation: SQL command or prepared `Statement`.
2025-02-25 19:13:17.235 parameters: Sequence of parameters. Must contain one entry for each argument
2025-02-25 19:13:17.242 that the operation expects.
2025-02-25 19:13:17.249
2025-02-25 19:13:17.259 Returns:
2025-02-25 19:13:17.265 `self` so call to execute could be used as iterator over returned rows.
2025-02-25 19:13:17.271
2025-02-25 19:13:17.280 Note:
2025-02-25 19:13:17.290 If `operation` is a string with SQL command that is exactly the same as the
2025-02-25 19:13:17.304 last executed command, the internally prepared `Statement` from last execution
2025-02-25 19:13:17.317 is reused.
2025-02-25 19:13:17.327
2025-02-25 19:13:17.341 If cursor is open, it's closed before new statement is executed.
2025-02-25 19:13:17.355 """
2025-02-25 19:13:17.366 >       self._execute(operation, parameters)
2025-02-25 19:13:17.377
2025-02-25 19:13:17.387 ../lib/python3.11/site-packages/firebird/driver/core.py:3755:
2025-02-25 19:13:17.398 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-02-25 19:13:17.414
2025-02-25 19:13:17.425 self = <firebird.driver.core.Cursor object at [hex]>
2025-02-25 19:13:17.441 operation = "select o_dts from test_proc('2019-'|| COALESCE( ?, 1) ||'-01' )"
2025-02-25 19:13:17.453 parameters = [3], flags = <CursorFlag.NONE: 0>
2025-02-25 19:13:17.462
2025-02-25 19:13:17.470 def _execute(self, operation: Union[str, Statement],
2025-02-25 19:13:17.479 parameters: Sequence=None, flags: CursorFlag=CursorFlag.NONE) -> None:
2025-02-25 19:13:17.486 if not self._transaction.is_active():
2025-02-25 19:13:17.497 self._transaction.begin()
2025-02-25 19:13:17.508 if isinstance(operation, Statement):
2025-02-25 19:13:17.518 if operation._connection() is not self._connection:
2025-02-25 19:13:17.527 raise InterfaceError('Cannot execute Statement that was created by different Connection.')
2025-02-25 19:13:17.536 self.close()
2025-02-25 19:13:17.545 self._stmt = operation
2025-02-25 19:13:17.559 self.__internal = False
2025-02-25 19:13:17.571 elif self._stmt is not None and self._stmt.sql == operation:
2025-02-25 19:13:17.580 # We should execute the same SQL string again
2025-02-25 19:13:17.589 self._clear()
2025-02-25 19:13:17.603 else:
2025-02-25 19:13:17.612 self.close()
2025-02-25 19:13:17.619 >           self._stmt = self._connection._prepare(operation, self._transaction)
2025-02-25 19:13:17.625
2025-02-25 19:13:17.630 ../lib/python3.11/site-packages/firebird/driver/core.py:3625:
2025-02-25 19:13:17.635 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-02-25 19:13:17.648
2025-02-25 19:13:17.655 self = Connection[4309]
2025-02-25 19:13:17.666 sql = "select o_dts from test_proc('2019-'|| COALESCE( ?, 1) ||'-01' )"
2025-02-25 19:13:17.677 tra = <firebird.driver.core.TransactionManager object at [hex]>
2025-02-25 19:13:17.684
2025-02-25 19:13:17.690 def _prepare(self, sql: str, tra: TransactionManager) -> Statement:
2025-02-25 19:13:17.696 if _commit := not tra.is_active():
2025-02-25 19:13:17.702 tra.begin()
2025-02-25 19:13:17.708 >       stmt = self._att.prepare(tra._tra, sql, self.__sql_dialect)
2025-02-25 19:13:17.714
2025-02-25 19:13:17.721 ../lib/python3.11/site-packages/firebird/driver/core.py:1713:
2025-02-25 19:13:17.726 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-02-25 19:13:17.734
2025-02-25 19:13:17.741 self = <firebird.driver.interfaces.iAttachment_v3 object at [hex]>
2025-02-25 19:13:17.748 transaction = <firebird.driver.interfaces.iTransaction_v3 object at [hex]>
2025-02-25 19:13:17.762 stmt = "select o_dts from test_proc('2019-'|| COALESCE( ?, 1) ||'-01' )"
2025-02-25 19:13:17.775 dialect = 3, flags = <PreparePrefetchFlag.METADATA: 71>
2025-02-25 19:13:17.784
2025-02-25 19:13:17.791 def prepare(self, transaction: iTransaction, stmt: str, dialect: int,
2025-02-25 19:13:17.798 flags: PreparePrefetchFlag = PreparePrefetchFlag.METADATA) -> iStatement:
2025-02-25 19:13:17.804 """Replaces `isc_dsql_prepare()`. Additional parameter flags makes it
2025-02-25 19:13:17.811 possible to control what information will be preloaded from engine at once
2025-02-25 19:13:17.817 (i.e. in single network packet for remote operation)."""
2025-02-25 19:13:17.828 b_stmt: bytes = stmt.encode(self.encoding)
2025-02-25 19:13:17.843 result = self.vtable.prepare(self, self.status, transaction, len(b_stmt), b_stmt,
2025-02-25 19:13:17.855 dialect, flags)
2025-02-25 19:13:17.864 >           self._check()
2025-02-25 19:13:17.872
2025-02-25 19:13:17.879 ../lib/python3.11/site-packages/firebird/driver/interfaces.py:1134:
2025-02-25 19:13:17.890 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-02-25 19:13:17.903
2025-02-25 19:13:17.913 self = <firebird.driver.interfaces.iAttachment_v3 object at [hex]>
2025-02-25 19:13:17.920
2025-02-25 19:13:17.927 def _check(self) -> None:
2025-02-25 19:13:17.935 state = self.status.get_state()
2025-02-25 19:13:17.940 if StateFlag.ERRORS in state:
2025-02-25 19:13:17.946 >           raise self.__report(DatabaseError, self.status.get_errors())
2025-02-25 19:13:17.951 E           firebird.driver.types.DatabaseError: SQL error code = -104
2025-02-25 19:13:17.956 E           -Datatypes are not comparable in expression
2025-02-25 19:13:17.961
2025-02-25 19:13:17.967 ../lib/python3.11/site-packages/firebird/driver/interfaces.py:113: DatabaseError
2025-02-25 19:13:17.973 ---------------------------- Captured stdout setup -----------------------------
2025-02-25 19:13:17.979 Creating db: localhost:/var/tmp/qa_2024/test_11209/test.fdb [page_size=None, sql_dialect=None, charset='NONE', user=SYSDBA, password=masterkey]
3 #text
act = <firebird.qa.plugin.Action pytest object at [hex]>
capsys = <_pytest.capture.CaptureFixture pytest object at [hex]>

    @pytest.mark.version('>=2.5')
    def test_1(act: Action, capsys):
        with act.db.connect() as con:
            con.execute_immediate(proc_ddl)
            con.commit()
            c = con.cursor()
>           for row in c.execute("select o_dts from test_proc('2019-'|| COALESCE( ?, 1) ||'-01' )", [3]):

tests/bugs/core_6108_test.py:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <firebird.driver.core.Cursor pytest object at [hex]>
operation = "select o_dts from test_proc('2019-'|| COALESCE( ?, 1) ||'-01' )"
parameters = [3]

    def execute(self, operation: Union[str, Statement], parameters: Sequence[Any]=None) -> Cursor:
        """Executes SQL command or prepared `Statement`.
    
        Starts new transaction if transaction manager associated with cursor is not active.
    
        Arguments:
            operation: SQL command or prepared `Statement`.
            parameters: Sequence of parameters. Must contain one entry for each argument
                        that the operation expects.
    
        Returns:
            `self` so call to execute could be used as iterator over returned rows.
    
        Note:
            If `operation` is a string with SQL command that is exactly the same as the
            last executed command, the internally prepared `Statement` from last execution
            is reused.
    
            If cursor is open, it's closed before new statement is executed.
        """
>       self._execute(operation, parameters)

../lib/python3.11/site-packages/firebird/driver/core.py:3755: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <firebird.driver.core.Cursor pytest object at [hex]>
operation = "select o_dts from test_proc('2019-'|| COALESCE( ?, 1) ||'-01' )"
parameters = [3], flags = <CursorFlag.NONE: 0>

    def _execute(self, operation: Union[str, Statement],
                 parameters: Sequence=None, flags: CursorFlag=CursorFlag.NONE) -> None:
        if not self._transaction.is_active():
            self._transaction.begin()
        if isinstance(operation, Statement):
            if operation._connection() is not self._connection:
                raise InterfaceError('Cannot execute Statement that was created by different Connection.')
            self.close()
            self._stmt = operation
            self.__internal = False
        elif self._stmt is not None and self._stmt.sql == operation:
            # We should execute the same SQL string again
            self._clear()
        else:
            self.close()
>           self._stmt = self._connection._prepare(operation, self._transaction)

../lib/python3.11/site-packages/firebird/driver/core.py:3625: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection[4309]
sql = "select o_dts from test_proc('2019-'|| COALESCE( ?, 1) ||'-01' )"
tra = <firebird.driver.core.TransactionManager pytest object at [hex]>

    def _prepare(self, sql: str, tra: TransactionManager) -> Statement:
        if _commit := not tra.is_active():
            tra.begin()
>       stmt = self._att.prepare(tra._tra, sql, self.__sql_dialect)

../lib/python3.11/site-packages/firebird/driver/core.py:1713: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <firebird.driver.interfaces.iAttachment_v3 pytest object at [hex]>
transaction = <firebird.driver.interfaces.iTransaction_v3 pytest object at [hex]>
stmt = "select o_dts from test_proc('2019-'|| COALESCE( ?, 1) ||'-01' )"
dialect = 3, flags = <PreparePrefetchFlag.METADATA: 71>

        def prepare(self, transaction: iTransaction, stmt: str, dialect: int,
                    flags: PreparePrefetchFlag = PreparePrefetchFlag.METADATA) -> iStatement:
            """Replaces `isc_dsql_prepare()`. Additional parameter flags makes it
    possible to control what information will be preloaded from engine at once
    (i.e. in single network packet for remote operation)."""
            b_stmt: bytes = stmt.encode(self.encoding)
            result = self.vtable.prepare(self, self.status, transaction, len(b_stmt), b_stmt,
                                         dialect, flags)
>           self._check()

../lib/python3.11/site-packages/firebird/driver/interfaces.py:1134: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <firebird.driver.interfaces.iAttachment_v3 pytest object at [hex]>

    def _check(self) -> None:
        state = self.status.get_state()
        if StateFlag.ERRORS in state:
>           raise self.__report(DatabaseError, self.status.get_errors())
E           firebird.driver.types.DatabaseError: SQL error code = -104
E           -Datatypes are not comparable in expression

../lib/python3.11/site-packages/firebird/driver/interfaces.py:113: DatabaseError
Full history of outcomes and elapsed time, ms:
NN SNAP_INFO CS_outcome SS_outcome CS_run_time SS_run_time CS_run_beg CS_run_end SS_run_beg SS_run_end
1 3.0.13.33809 2025.05.06 28ad0 F F 1243 1045 2025.06.26 16:40:58.733 2025.06.26 16:40:59.976 2025.06.26 15:45:35.265 2025.06.26 15:45:36.310
2 3.0.13.33808 2025.04.25 28426 F F 1627 1041 2025.05.06 14:05:48.106 2025.05.06 14:05:49.733 2025.05.06 12:59:39.722 2025.05.06 12:59:40.763
3 3.0.13.33803 2025.02.25 08ebd F F 1553 1174 2025.04.25 17:20:35.346 2025.04.25 17:20:36.899 2025.04.25 16:15:07.153 2025.04.25 16:15:08.327
4 3.0.13.33796 2025.01.29 0ab85 F F 1747 957 2025.02.25 15:53:12.282 2025.02.25 15:53:14.029 2025.02.25 14:47:34.051 2025.02.25 14:47:35.008
5 3.0.13.33796 2025.01.14 99b3b F F 1823 980 2025.01.28 18:08:13.796 2025.01.28 18:08:15.619 2025.01.28 17:00:33.403 2025.01.28 17:00:34.383
6 3.0.13.33795 2024.11.24 b8847 F F 1818 998 2025.01.13 15:45:11.269 2025.01.13 15:45:13.087 2025.01.13 14:38:50.043 2025.01.13 14:38:51.041
7 3.0.13.33794 2024.10.15 abe09 F F 1319 668 2024.11.23 06:47:15.146 2024.11.23 06:47:16.465 2024.11.23 05:57:21.608 2024.11.23 05:57:22.276
8 3.0.13.33793 2024.10.04 82ccc F F 1556 778 2024.10.14 04:44:55.549 2024.10.14 04:44:57.105 2024.10.14 03:49:23.927 2024.10.14 03:49:24.705
9 3.0.13.33792 2024.08.31 d8791 F F 1623 819 2024.10.03 09:52:30.747 2024.10.03 09:52:32.370 2024.10.03 08:53:07.537 2024.10.03 08:53:08.356
10 3.0.13.33787 2024.08.17 2e0d6 F F 3680 1865 2024.08.25 15:58:23.662 2024.08.25 15:58:27.342 2024.08.25 13:48:11.466 2024.08.25 13:48:13.331
11 3.0.13.33787 2024.08.09 df740 F F 1943 1007 2024.08.16 13:09:41.261 2024.08.16 13:09:43.204 2024.08.16 12:02:47.171 2024.08.16 12:02:48.178
12 3.0.12.33746 2024.07.15 11dd4 F F 2391 1141 2024.08.09 13:05:39.157 2024.08.09 13:05:41.548 2024.08.09 11:57:29.148 2024.08.09 11:57:30.289
13 3.0.12.33746 2024.06.11 8a5eb F F 2003 996 2024.07.15 10:55:38.684 2024.07.15 10:55:40.687 2024.07.15 09:58:22.118 2024.07.15 09:58:23.114
14 3.0.12.33744 2024.05.09 9cf37 F F 1642 931 2024.05.12 16:01:09.585 2024.05.12 16:01:11.227 2024.05.12 15:09:30.098 2024.05.12 15:09:31.029
15 3.0.12.33744 2024.04.20 af6b2 F F 1690 938 2024.05.08 17:16:30.090 2024.05.08 17:16:31.780 2024.05.08 16:26:55.705 2024.05.08 16:26:56.643

Elapsed time, ms. Chart for last 15 runs:

Last commits information (all timestamps in UTC):