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
ValueError: Incorrect ARRAY field value.

LOG DETAILS:

2025-07-03 16:07:58.191
2025-07-03 16:07:58.191 act = <firebird.qa.plugin.Action object at [hex]>
2025-07-03 16:07:58.191 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2025-07-03 16:07:58.191
2025-07-03 16:07:58.191     @pytest.mark.version('>=3.0.12')
2025-07-03 16:07:58.191     def test_1(act: Action, capsys):
2025-07-03 16:07:58.191         with act.db.connect() as con:
2025-07-03 16:07:58.191             cur = con.cursor()
2025-07-03 16:07:58.191
2025-07-03 16:07:58.191             arrayIn = [
2025-07-03 16:07:58.191                 [1, 2, 3, 4],
2025-07-03 16:07:58.191                 [5, 6, 7, 8],
2025-07-03 16:07:58.191                 [9,10,11,12]
2025-07-03 16:07:58.191               ]
2025-07-03 16:07:58.191
2025-07-03 16:07:58.191 >           cur.execute("insert into array_table values (?)", (arrayIn,))
2025-07-03 16:07:58.191
2025-07-03 16:07:58.191 tests\bugs\gh_7647_test.py:44:
2025-07-03 16:07:58.191 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-07-03 16:07:58.191
2025-07-03 16:07:58.192 self = <firebird.driver.core.Cursor object at [hex]>
2025-07-03 16:07:58.192 operation = 'insert into array_table values (?)'
2025-07-03 16:07:58.192 parameters = ([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]],)
2025-07-03 16:07:58.192
2025-07-03 16:07:58.192     def execute(self, operation: Union[str, Statement], parameters: Sequence[Any]=None) -> Cursor:
2025-07-03 16:07:58.192         """Executes SQL command or prepared `Statement`.
2025-07-03 16:07:58.192
2025-07-03 16:07:58.192         Starts new transaction if transaction manager associated with cursor is not active.
2025-07-03 16:07:58.192
2025-07-03 16:07:58.192         Arguments:
2025-07-03 16:07:58.192             operation: SQL command or prepared `Statement`.
2025-07-03 16:07:58.192             parameters: Sequence of parameters. Must contain one entry for each argument
2025-07-03 16:07:58.192                         that the operation expects.
2025-07-03 16:07:58.192
2025-07-03 16:07:58.192         Returns:
2025-07-03 16:07:58.192             `self` so call to execute could be used as iterator over returned rows.
2025-07-03 16:07:58.192
2025-07-03 16:07:58.192         Note:
2025-07-03 16:07:58.192             If `operation` is a string with SQL command that is exactly the same as the
2025-07-03 16:07:58.193             last executed command, the internally prepared `Statement` from last execution
2025-07-03 16:07:58.193             is reused.
2025-07-03 16:07:58.193
2025-07-03 16:07:58.193             If cursor is open, it's closed before new statement is executed.
2025-07-03 16:07:58.193         """
2025-07-03 16:07:58.193 >       self._execute(operation, parameters)
2025-07-03 16:07:58.193
2025-07-03 16:07:58.193 C:\Python3x\Lib\site-packages\firebird\driver\core.py:3862:
2025-07-03 16:07:58.193 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-07-03 16:07:58.193
2025-07-03 16:07:58.193 self = <firebird.driver.core.Cursor object at [hex]>
2025-07-03 16:07:58.193 operation = 'insert into array_table values (?)'
2025-07-03 16:07:58.193 parameters = ([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]],)
2025-07-03 16:07:58.193 flags = <CursorFlag.NONE: 0>
2025-07-03 16:07:58.193
2025-07-03 16:07:58.193     def _execute(self, operation: Union[str, Statement],
2025-07-03 16:07:58.193                  parameters: Sequence=None, flags: CursorFlag=CursorFlag.NONE) -> None:
2025-07-03 16:07:58.193         if not self._transaction.is_active():
2025-07-03 16:07:58.194             self._transaction.begin()
2025-07-03 16:07:58.194         if isinstance(operation, Statement):
2025-07-03 16:07:58.194             if operation._connection() is not self._connection:
2025-07-03 16:07:58.194                 raise InterfaceError('Cannot execute Statement that was created by different Connection.')
2025-07-03 16:07:58.194             self.close()
2025-07-03 16:07:58.194             self._stmt = operation
2025-07-03 16:07:58.194             self.__internal = False
2025-07-03 16:07:58.194         elif self._stmt is not None and self._stmt.sql == operation:
2025-07-03 16:07:58.194             # We should execute the same SQL string again
2025-07-03 16:07:58.194             self._clear()
2025-07-03 16:07:58.194         else:
2025-07-03 16:07:58.194             self.close()
2025-07-03 16:07:58.194             self._stmt = self._connection._prepare(operation, self._transaction)
2025-07-03 16:07:58.194             self.__internal = True
2025-07-03 16:07:58.194         self._cursor_flags = flags
2025-07-03 16:07:58.194         in_meta = None
2025-07-03 16:07:58.194         # Execute the statement
2025-07-03 16:07:58.194         try:
2025-07-03 16:07:58.194             if self._stmt._in_cnt > 0:
2025-07-03 16:07:58.194 >               in_meta, self._stmt._in_buffer = self._pack_input(self._stmt._in_meta,
2025-07-03 16:07:58.195                                                                   self._stmt._in_buffer,
2025-07-03 16:07:58.195                                                                   parameters)
2025-07-03 16:07:58.195
2025-07-03 16:07:58.195 C:\Python3x\Lib\site-packages\firebird\driver\core.py:3739:
2025-07-03 16:07:58.195 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-07-03 16:07:58.195
2025-07-03 16:07:58.195 self = <firebird.driver.core.Cursor object at [hex]>
2025-07-03 16:07:58.195 meta = <firebird.driver.interfaces.iMessageMetadata object at [hex]>
2025-07-03 16:07:58.195 buffer = <ctypes.c_char_Array_10 object at [hex]>
2025-07-03 16:07:58.195 parameters = ([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]],)
2025-07-03 16:07:58.195
2025-07-03 16:07:58.195     def _pack_input(self, meta: iMessageMetadata, buffer: bytes,
2025-07-03 16:07:58.195                     parameters: Sequence) -> Tuple[iMessageMetadata, bytes]:
2025-07-03 16:07:58.195         # pylint: disable=R1702
2025-07-03 16:07:58.195         in_cnt = meta.get_count()
2025-07-03 16:07:58.195         if len(parameters) != in_cnt:
2025-07-03 16:07:58.195             raise InterfaceError(f"Statement parameter sequence contains"
2025-07-03 16:07:58.195                                  f" {len(parameters)} items,"
2025-07-03 16:07:58.195                                  f" but exactly {in_cnt} are required")
2025-07-03 16:07:58.196         #
2025-07-03 16:07:58.196         buf_size = len(buffer)
2025-07-03 16:07:58.196         memset(buffer, 0, buf_size)
2025-07-03 16:07:58.196         # Adjust metadata where needed
2025-07-03 16:07:58.196         with meta.get_builder() as builder:
2025-07-03 16:07:58.196             for i in range(in_cnt):
2025-07-03 16:07:58.196                 value = parameters[i]
2025-07-03 16:07:58.196                 if _is_str_param(value, meta.get_type(i)):
2025-07-03 16:07:58.196                     builder.set_type(i, SQLDataType.TEXT)
2025-07-03 16:07:58.196                     if not isinstance(value, (str, bytes, bytearray)):
2025-07-03 16:07:58.196                         value = str(value)
2025-07-03 16:07:58.196                     builder.set_length(i, len(value.encode(self._encoding)) if isinstance(value, str) else len(value))
2025-07-03 16:07:58.196             in_meta = builder.get_metadata()
2025-07-03 16:07:58.196             new_size = in_meta.get_message_length()
2025-07-03 16:07:58.196             in_buffer = create_string_buffer(new_size) if buf_size < new_size else buffer
2025-07-03 16:07:58.196         buf_addr = addressof(in_buffer)
2025-07-03 16:07:58.196         with in_meta:
2025-07-03 16:07:58.196             for i in range(in_cnt):
2025-07-03 16:07:58.196                 value = parameters[i]
2025-07-03 16:07:58.197                 datatype = in_meta.get_type(i)
2025-07-03 16:07:58.197                 length = in_meta.get_length(i)
2025-07-03 16:07:58.197                 offset = in_meta.get_offset(i)
2025-07-03 16:07:58.197                 # handle NULL value
2025-07-03 16:07:58.197                 in_buffer[in_meta.get_null_offset(i)] = 1 if value is None else 0
2025-07-03 16:07:58.197                 if value is None:
2025-07-03 16:07:58.197                     continue
2025-07-03 16:07:58.197                 # store parameter value
2025-07-03 16:07:58.197                 if _is_str_param(value, datatype):
2025-07-03 16:07:58.197                     # Implicit conversion to string
2025-07-03 16:07:58.197                     if not isinstance(value, (str, bytes, bytearray)):
2025-07-03 16:07:58.197                         value = str(value)
2025-07-03 16:07:58.197                     if isinstance(value, str) and self._encoding:
2025-07-03 16:07:58.197                         value = value.encode(self._encoding)
2025-07-03 16:07:58.197                     if (datatype in (SQLDataType.TEXT, SQLDataType.VARYING)
2025-07-03 16:07:58.197                         and len(value) > length):
2025-07-03 16:07:58.197                         raise ValueError(f"Value of parameter ({i}) is too long,"
2025-07-03 16:07:58.197                                          f" expected {length}, found {len(value)}")
2025-07-03 16:07:58.197                     memmove(buf_addr + offset, value, len(value))
2025-07-03 16:07:58.197                 elif datatype in (SQLDataType.SHORT, SQLDataType.LONG, SQLDataType.INT64):
2025-07-03 16:07:58.201                     # It's scalled integer?
2025-07-03 16:07:58.201                     scale = in_meta.get_scale(i)
2025-07-03 16:07:58.202                     if in_meta.get_subtype(i) or scale:
2025-07-03 16:07:58.202                         if isinstance(value, decimal.Decimal):
2025-07-03 16:07:58.202                             value = int((value * _tenTo[abs(scale)]).to_integral())
2025-07-03 16:07:58.202                         elif isinstance(value, (int, float)):
2025-07-03 16:07:58.202                             value = int(value * _tenTo[abs(scale)])
2025-07-03 16:07:58.202                         else:
2025-07-03 16:07:58.202                             raise TypeError(f'Objects of type {type(value)} are not '
2025-07-03 16:07:58.202                                             f' acceptable input for'
2025-07-03 16:07:58.202                                             f' a fixed-point column.')
2025-07-03 16:07:58.202                     _check_integer_range(value, self._dialect, datatype,
2025-07-03 16:07:58.202                                          in_meta.get_subtype(i), scale)
2025-07-03 16:07:58.202                     memmove(buf_addr + offset, value.to_bytes(length, 'little', signed=True), length)
2025-07-03 16:07:58.202                 elif datatype == SQLDataType.DATE:
2025-07-03 16:07:58.202                     memmove(buf_addr + offset, _util.encode_date(value).to_bytes(length, 'little', signed=True), length)
2025-07-03 16:07:58.202                 elif datatype == SQLDataType.TIME:
2025-07-03 16:07:58.202                     memmove(buf_addr + offset, _util.encode_time(value).to_bytes(length, 'little'), length)
2025-07-03 16:07:58.202                 elif datatype == SQLDataType.TIME_TZ:
2025-07-03 16:07:58.202                     memmove(buf_addr + offset, _util.encode_time_tz(value), length)
2025-07-03 16:07:58.203                 elif datatype == SQLDataType.TIMESTAMP:
2025-07-03 16:07:58.203                     memmove(buf_addr + offset, _encode_timestamp(value), length)
2025-07-03 16:07:58.203                 elif datatype == SQLDataType.TIMESTAMP_TZ:
2025-07-03 16:07:58.203                     memmove(buf_addr + offset, _util.encode_timestamp_tz(value), length)
2025-07-03 16:07:58.203                 elif datatype == SQLDataType.DEC16:
2025-07-03 16:07:58.203                     memmove(buf_addr + offset, byref(_util.get_decfloat16().from_str(str(value))), length)
2025-07-03 16:07:58.203                 elif datatype == SQLDataType.DEC34:
2025-07-03 16:07:58.203                     memmove(buf_addr + offset, _util.get_decfloat34().from_str(str(value)), length)
2025-07-03 16:07:58.203                 elif datatype == SQLDataType.INT128:
2025-07-03 16:07:58.203                     memmove(buf_addr + offset, _util.get_int128().from_str(str(value), in_meta.get_scale(i)), length)
2025-07-03 16:07:58.203                 elif datatype == SQLDataType.FLOAT:
2025-07-03 16:07:58.203                     memmove(buf_addr + offset, struct.pack('f', value), length)
2025-07-03 16:07:58.203                 elif datatype == SQLDataType.DOUBLE:
2025-07-03 16:07:58.203                     memmove(buf_addr + offset, struct.pack('d', value), length)
2025-07-03 16:07:58.203                 elif datatype == SQLDataType.BOOLEAN:
2025-07-03 16:07:58.203                     memmove(buf_addr + offset, (1 if value else 0).to_bytes(length, 'little'), length)
2025-07-03 16:07:58.203                 elif datatype == SQLDataType.BLOB:
2025-07-03 16:07:58.203                     blobid = a.ISC_QUAD(0, 0)
2025-07-03 16:07:58.203                     if hasattr(value, 'read'):
2025-07-03 16:07:58.203                         # It seems we've got file-like object, use stream BLOB
2025-07-03 16:07:58.204                         blob_buf = _create_blob_buffer()
2025-07-03 16:07:58.204                         blob: iBlob = self._connection._att.create_blob(self._transaction._tra,
2025-07-03 16:07:58.204                                                                         blobid, _bpb_stream)
2025-07-03 16:07:58.204                         try:
2025-07-03 16:07:58.204                             memmove(buf_addr + offset, addressof(blobid), length)
2025-07-03 16:07:58.204                             while value_chunk := value.read(MAX_BLOB_SEGMENT_SIZE):
2025-07-03 16:07:58.204                                 blob_buf.raw = value_chunk.encode(self._encoding) if isinstance(value_chunk, str) else value_chunk
2025-07-03 16:07:58.204                                 blob.put_segment(len(value_chunk), blob_buf)
2025-07-03 16:07:58.204                                 memset(blob_buf, 0, MAX_BLOB_SEGMENT_SIZE)
2025-07-03 16:07:58.204                         finally:
2025-07-03 16:07:58.204                             blob.close()
2025-07-03 16:07:58.204                             del blob_buf
2025-07-03 16:07:58.204                     else:
2025-07-03 16:07:58.204                         # Non-stream BLOB
2025-07-03 16:07:58.204                         if isinstance(value, str):
2025-07-03 16:07:58.204                             if in_meta.get_subtype(i) == 1:
2025-07-03 16:07:58.204                                 value = value.encode(self._encoding)
2025-07-03 16:07:58.204                             else:
2025-07-03 16:07:58.205                                 raise TypeError('String value is not'
2025-07-03 16:07:58.205                                                 ' acceptable type for'
2025-07-03 16:07:58.205                                                 ' a non-textual BLOB column.')
2025-07-03 16:07:58.205                         blob_buf = create_string_buffer(value)
2025-07-03 16:07:58.205                         blob: iBlob = self._connection._att.create_blob(self._transaction._tra,
2025-07-03 16:07:58.205                                                                         blobid)
2025-07-03 16:07:58.205                         try:
2025-07-03 16:07:58.205                             memmove(buf_addr + offset, addressof(blobid), length)
2025-07-03 16:07:58.205                             total_size = len(value)
2025-07-03 16:07:58.205                             bytes_written_so_far = 0
2025-07-03 16:07:58.205                             bytes_to_write_this_time = MAX_BLOB_SEGMENT_SIZE
2025-07-03 16:07:58.205                             while bytes_written_so_far < total_size:
2025-07-03 16:07:58.205                                 if (total_size - bytes_written_so_far) < MAX_BLOB_SEGMENT_SIZE:
2025-07-03 16:07:58.205                                     bytes_to_write_this_time = (total_size - bytes_written_so_far)
2025-07-03 16:07:58.205                                 blob.put_segment(bytes_to_write_this_time,
2025-07-03 16:07:58.205                                                  addressof(blob_buf) + bytes_written_so_far)
2025-07-03 16:07:58.205                                 bytes_written_so_far += bytes_to_write_this_time
2025-07-03 16:07:58.205                         finally:
2025-07-03 16:07:58.206                             blob.close()
2025-07-03 16:07:58.206                             del blob_buf
2025-07-03 16:07:58.206                 elif datatype == SQLDataType.ARRAY:
2025-07-03 16:07:58.206                     arrayid = a.ISC_QUAD(0, 0)
2025-07-03 16:07:58.206                     arrayid_ptr = pointer(arrayid)
2025-07-03 16:07:58.206                     arraydesc = a.ISC_ARRAY_DESC(0)
2025-07-03 16:07:58.206                     isc_status = a.ISC_STATUS_ARRAY()
2025-07-03 16:07:58.206                     db_handle = self._connection._get_handle()
2025-07-03 16:07:58.206                     tr_handle = self._transaction._get_handle()
2025-07-03 16:07:58.206                     relname = in_meta.get_relation(i).encode(self._encoding)
2025-07-03 16:07:58.206                     sqlname = in_meta.get_field(i).encode(self._encoding)
2025-07-03 16:07:58.206                     api = a.get_api()
2025-07-03 16:07:58.206                     sqlsubtype = self._connection._get_array_sqlsubtype(relname, sqlname)
2025-07-03 16:07:58.206                     api.isc_array_lookup_bounds(isc_status, db_handle, tr_handle,
2025-07-03 16:07:58.206                                                 relname, sqlname, arraydesc)
2025-07-03 16:07:58.206                     if a.db_api_error(isc_status):  # pragma: no cover
2025-07-03 16:07:58.206                         raise a.exception_from_status(DatabaseError,
2025-07-03 16:07:58.206                                                       isc_status,
2025-07-03 16:07:58.207                                                       "Error in Cursor._pack_input:isc_array_lookup_bounds()")
2025-07-03 16:07:58.207                     value_type = arraydesc.array_desc_dtype
2025-07-03 16:07:58.207                     value_scale = arraydesc.array_desc_scale
2025-07-03 16:07:58.207                     value_size = arraydesc.array_desc_length
2025-07-03 16:07:58.207                     if value_type in (a.blr_varying, a.blr_varying2):
2025-07-03 16:07:58.207                         value_size += 2
2025-07-03 16:07:58.207                     dimensions = []
2025-07-03 16:07:58.207                     total_num_elements = 1
2025-07-03 16:07:58.207                     for dimension in range(arraydesc.array_desc_dimensions):
2025-07-03 16:07:58.207                         bounds = arraydesc.array_desc_bounds[dimension]
2025-07-03 16:07:58.207                         dimensions.append((bounds.array_bound_upper + 1) - bounds.array_bound_lower)
2025-07-03 16:07:58.207                         total_num_elements *= dimensions[dimension]
2025-07-03 16:07:58.207                     total_size = total_num_elements * value_size
2025-07-03 16:07:58.207                     # Validate value to make sure it matches the array structure
2025-07-03 16:07:58.207                     if not self._validate_array_value(0, dimensions, value_type,
2025-07-03 16:07:58.207                                                       sqlsubtype, value_scale, value):
2025-07-03 16:07:58.207 >                       raise ValueError("Incorrect ARRAY field value.")
2025-07-03 16:07:58.207 E                       ValueError: Incorrect ARRAY field value.
2025-07-03 16:07:58.207
2025-07-03 16:07:58.207 C:\Python3x\Lib\site-packages\firebird\driver\core.py:3541: ValueError
2025-07-03 16:07:58.208 ---------------------------- Captured stdout setup ----------------------------
2025-07-03 16:07:58.208 Creating db: localhost:H:\QA\temp\qa2024.tmp\fbqa\test_11618\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('>=3.0.12')
    def test_1(act: Action, capsys):
        with act.db.connect() as con:
            cur = con.cursor()
    
            arrayIn = [
                [1, 2, 3, 4],
                [5, 6, 7, 8],
                [9,10,11,12]
              ]
    
>           cur.execute("insert into array_table values (?)", (arrayIn,))

tests\bugs\gh_7647_test.py:44: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <firebird.driver.core.Cursor pytest object at [hex]>
operation = 'insert into array_table values (?)'
parameters = ([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]],)

    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)

C:\Python3x\Lib\site-packages\firebird\driver\core.py:3862: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <firebird.driver.core.Cursor pytest object at [hex]>
operation = 'insert into array_table values (?)'
parameters = ([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]],)
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)
            self.__internal = True
        self._cursor_flags = flags
        in_meta = None
        # Execute the statement
        try:
            if self._stmt._in_cnt > 0:
>               in_meta, self._stmt._in_buffer = self._pack_input(self._stmt._in_meta,
                                                                  self._stmt._in_buffer,
                                                                  parameters)

C:\Python3x\Lib\site-packages\firebird\driver\core.py:3739: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <firebird.driver.core.Cursor pytest object at [hex]>
meta = <firebird.driver.interfaces.iMessageMetadata pytest object at [hex]>
buffer = <ctypes.c_char_Array_10 pytest object at [hex]>
parameters = ([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]],)

    def _pack_input(self, meta: iMessageMetadata, buffer: bytes,
                    parameters: Sequence) -> Tuple[iMessageMetadata, bytes]:
        # pylint: disable=R1702
        in_cnt = meta.get_count()
        if len(parameters) != in_cnt:
            raise InterfaceError(f"Statement parameter sequence contains"
                                 f" {len(parameters)} items,"
                                 f" but exactly {in_cnt} are required")
        #
        buf_size = len(buffer)
        memset(buffer, 0, buf_size)
        # Adjust metadata where needed
        with meta.get_builder() as builder:
            for i in range(in_cnt):
                value = parameters[i]
                if _is_str_param(value, meta.get_type(i)):
                    builder.set_type(i, SQLDataType.TEXT)
                    if not isinstance(value, (str, bytes, bytearray)):
                        value = str(value)
                    builder.set_length(i, len(value.encode(self._encoding)) if isinstance(value, str) else len(value))
            in_meta = builder.get_metadata()
            new_size = in_meta.get_message_length()
            in_buffer = create_string_buffer(new_size) if buf_size < new_size else buffer
        buf_addr = addressof(in_buffer)
        with in_meta:
            for i in range(in_cnt):
                value = parameters[i]
                datatype = in_meta.get_type(i)
                length = in_meta.get_length(i)
                offset = in_meta.get_offset(i)
                # handle NULL value
                in_buffer[in_meta.get_null_offset(i)] = 1 if value is None else 0
                if value is None:
                    continue
                # store parameter value
                if _is_str_param(value, datatype):
                    # Implicit conversion to string
                    if not isinstance(value, (str, bytes, bytearray)):
                        value = str(value)
                    if isinstance(value, str) and self._encoding:
                        value = value.encode(self._encoding)
                    if (datatype in (SQLDataType.TEXT, SQLDataType.VARYING)
                        and len(value) > length):
                        raise ValueError(f"Value of parameter ({i}) is too long,"
                                         f" expected {length}, found {len(value)}")
                    memmove(buf_addr + offset, value, len(value))
                elif datatype in (SQLDataType.SHORT, SQLDataType.LONG, SQLDataType.INT64):
                    # It's scalled integer?
                    scale = in_meta.get_scale(i)
                    if in_meta.get_subtype(i) or scale:
                        if isinstance(value, decimal.Decimal):
                            value = int((value * _tenTo[abs(scale)]).to_integral())
                        elif isinstance(value, (int, float)):
                            value = int(value * _tenTo[abs(scale)])
                        else:
                            raise TypeError(f'Objects of type {type(value)} are not '
                                            f' acceptable input for'
                                            f' a fixed-point column.')
                    _check_integer_range(value, self._dialect, datatype,
                                         in_meta.get_subtype(i), scale)
                    memmove(buf_addr + offset, value.to_bytes(length, 'little', signed=True), length)
                elif datatype == SQLDataType.DATE:
                    memmove(buf_addr + offset, _util.encode_date(value).to_bytes(length, 'little', signed=True), length)
                elif datatype == SQLDataType.TIME:
                    memmove(buf_addr + offset, _util.encode_time(value).to_bytes(length, 'little'), length)
                elif datatype == SQLDataType.TIME_TZ:
                    memmove(buf_addr + offset, _util.encode_time_tz(value), length)
                elif datatype == SQLDataType.TIMESTAMP:
                    memmove(buf_addr + offset, _encode_timestamp(value), length)
                elif datatype == SQLDataType.TIMESTAMP_TZ:
                    memmove(buf_addr + offset, _util.encode_timestamp_tz(value), length)
                elif datatype == SQLDataType.DEC16:
                    memmove(buf_addr + offset, byref(_util.get_decfloat16().from_str(str(value))), length)
                elif datatype == SQLDataType.DEC34:
                    memmove(buf_addr + offset, _util.get_decfloat34().from_str(str(value)), length)
                elif datatype == SQLDataType.INT128:
                    memmove(buf_addr + offset, _util.get_int128().from_str(str(value), in_meta.get_scale(i)), length)
                elif datatype == SQLDataType.FLOAT:
                    memmove(buf_addr + offset, struct.pack('f', value), length)
                elif datatype == SQLDataType.DOUBLE:
                    memmove(buf_addr + offset, struct.pack('d', value), length)
                elif datatype == SQLDataType.BOOLEAN:
                    memmove(buf_addr + offset, (1 if value else 0).to_bytes(length, 'little'), length)
                elif datatype == SQLDataType.BLOB:
                    blobid = a.ISC_QUAD(0, 0)
                    if hasattr(value, 'read'):
                        # It seems we've got file-like object, use stream BLOB
                        blob_buf = _create_blob_buffer()
                        blob: iBlob = self._connection._att.create_blob(self._transaction._tra,
                                                                        blobid, _bpb_stream)
                        try:
                            memmove(buf_addr + offset, addressof(blobid), length)
                            while value_chunk := value.read(MAX_BLOB_SEGMENT_SIZE):
                                blob_buf.raw = value_chunk.encode(self._encoding) if isinstance(value_chunk, str) else value_chunk
                                blob.put_segment(len(value_chunk), blob_buf)
                                memset(blob_buf, 0, MAX_BLOB_SEGMENT_SIZE)
                        finally:
                            blob.close()
                            del blob_buf
                    else:
                        # Non-stream BLOB
                        if isinstance(value, str):
                            if in_meta.get_subtype(i) == 1:
                                value = value.encode(self._encoding)
                            else:
                                raise TypeError('String value is not'
                                                ' acceptable type for'
                                                ' a non-textual BLOB column.')
                        blob_buf = create_string_buffer(value)
                        blob: iBlob = self._connection._att.create_blob(self._transaction._tra,
                                                                        blobid)
                        try:
                            memmove(buf_addr + offset, addressof(blobid), length)
                            total_size = len(value)
                            bytes_written_so_far = 0
                            bytes_to_write_this_time = MAX_BLOB_SEGMENT_SIZE
                            while bytes_written_so_far < total_size:
                                if (total_size - bytes_written_so_far) < MAX_BLOB_SEGMENT_SIZE:
                                    bytes_to_write_this_time = (total_size - bytes_written_so_far)
                                blob.put_segment(bytes_to_write_this_time,
                                                 addressof(blob_buf) + bytes_written_so_far)
                                bytes_written_so_far += bytes_to_write_this_time
                        finally:
                            blob.close()
                            del blob_buf
                elif datatype == SQLDataType.ARRAY:
                    arrayid = a.ISC_QUAD(0, 0)
                    arrayid_ptr = pointer(arrayid)
                    arraydesc = a.ISC_ARRAY_DESC(0)
                    isc_status = a.ISC_STATUS_ARRAY()
                    db_handle = self._connection._get_handle()
                    tr_handle = self._transaction._get_handle()
                    relname = in_meta.get_relation(i).encode(self._encoding)
                    sqlname = in_meta.get_field(i).encode(self._encoding)
                    api = a.get_api()
                    sqlsubtype = self._connection._get_array_sqlsubtype(relname, sqlname)
                    api.isc_array_lookup_bounds(isc_status, db_handle, tr_handle,
                                                relname, sqlname, arraydesc)
                    if a.db_api_error(isc_status):  # pragma: no cover
                        raise a.exception_from_status(DatabaseError,
                                                      isc_status,
                                                      "Error in Cursor._pack_input:isc_array_lookup_bounds()")
                    value_type = arraydesc.array_desc_dtype
                    value_scale = arraydesc.array_desc_scale
                    value_size = arraydesc.array_desc_length
                    if value_type in (a.blr_varying, a.blr_varying2):
                        value_size += 2
                    dimensions = []
                    total_num_elements = 1
                    for dimension in range(arraydesc.array_desc_dimensions):
                        bounds = arraydesc.array_desc_bounds[dimension]
                        dimensions.append((bounds.array_bound_upper + 1) - bounds.array_bound_lower)
                        total_num_elements *= dimensions[dimension]
                    total_size = total_num_elements * value_size
                    # Validate value to make sure it matches the array structure
                    if not self._validate_array_value(0, dimensions, value_type,
                                                      sqlsubtype, value_scale, value):
>                       raise ValueError("Incorrect ARRAY field value.")
E                       ValueError: Incorrect ARRAY field value.

C:\Python3x\Lib\site-packages\firebird\driver\core.py:3541: ValueError
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 6.0.0.892 2025.07.03 af84a F F 1032 759 2025.07.03 12:41:08.575 2025.07.03 12:41:09.607 2025.07.03 11:00:01.341 2025.07.03 11:00:02.100
2 6.0.0.892 2025.07.02 10f7d F F 1014 762 2025.07.03 03:11:55.383 2025.07.03 03:11:56.397 2025.07.03 01:27:43.252 2025.07.03 01:27:44.014
3 6.0.0.889 2025.07.02 4b4e6 F F 1009 762 2025.07.02 11:09:28.335 2025.07.02 11:09:29.344 2025.07.02 09:28:18.483 2025.07.02 09:28:19.245
4 6.0.0.889 2025.07.01 969ac F F 1013 760 2025.07.02 03:15:02.130 2025.07.02 03:15:03.143 2025.07.02 01:30:35.566 2025.07.02 01:30:36.326
5 6.0.0.881 2025.06.27 7035d F F 1013 776 2025.07.01 03:08:53.042 2025.07.01 03:08:54.055 2025.07.01 01:27:27.551 2025.07.01 01:27:28.327
6 6.0.0.877 2025.06.26 8e38f F F 1019 803 2025.06.27 03:10:14.138 2025.06.27 03:10:15.157 2025.06.27 01:28:13.899 2025.06.27 01:28:14.702
7 6.0.0.876 2025.06.25 b1bec F F 1011 777 2025.06.26 03:15:31.872 2025.06.26 03:15:32.883 2025.06.26 01:33:50.014 2025.06.26 01:33:50.791
8 6.0.0.863 2025.06.24 c3c20 F F 892 602 2025.06.25 07:59:41.796 2025.06.25 07:59:42.688 2025.06.25 01:27:53.509 2025.06.25 01:27:54.111
9 6.0.0.858 2025.06.24 cbbbf F F 880 610 2025.06.24 17:42:14.053 2025.06.24 17:42:14.933 2025.06.24 15:59:50.173 2025.06.24 15:59:50.783
10 6.0.0.858 2025.06.23 d377c F F 869 761 2025.06.24 08:54:13.601 2025.06.24 08:54:14.470 2025.06.24 07:12:12.650 2025.06.24 07:12:13.411
11 6.0.0.854 2025.06.23 10b58 F F 854 612 2025.06.23 15:35:08.365 2025.06.23 15:35:09.219 2025.06.23 13:51:45.760 2025.06.23 13:51:46.372
12 6.0.0.849 2025.06.20 7b79c F F 875 611 2025.06.21 03:13:28.497 2025.06.21 03:13:29.372 2025.06.21 01:28:26.029 2025.06.21 01:28:26.640
13 6.0.0.848 2025.06.19 c483c F F 912 625 2025.06.20 03:13:05.421 2025.06.20 03:13:06.333 2025.06.20 01:28:10.614 2025.06.20 01:28:11.239
14 6.0.0.845 2025.06.18 20191 F F 853 617 2025.06.19 03:12:41.003 2025.06.19 03:12:41.856 2025.06.19 01:27:56.328 2025.06.19 01:27:56.945
15 6.0.0.843 2025.06.16 995f4 F F 901 652 2025.06.18 03:12:31.740 2025.06.18 03:12:32.641 2025.06.18 01:27:42.207 2025.06.18 01:27:42.859
16 6.0.0.840 2025.06.14 29bca F F 927 688 2025.06.15 03:20:56.511 2025.06.15 03:20:57.438 2025.06.15 01:30:42.863 2025.06.15 01:30:43.551
17 6.0.0.838 2025.06.13 0e28a F F 891 630 2025.06.14 03:18:42.127 2025.06.14 03:18:43.018 2025.06.14 01:29:03.099 2025.06.14 01:29:03.729
18 6.0.0.834 2025.06.11 e889f F F 843 611 2025.06.12 03:16:15.133 2025.06.12 03:16:15.976 2025.06.12 01:29:35.222 2025.06.12 01:29:35.833
19 6.0.0.800 2025.06.10 1f226 P P 635 413 2025.06.11 02:00:52.994 2025.06.11 02:00:53.629 2025.06.11 00:52:53.313 2025.06.11 00:52:53.726
20 6.0.0.799 2025.06.07 be644 P P 657 410 2025.06.10 02:00:28.342 2025.06.10 02:00:28.999 2025.06.10 00:52:29.848 2025.06.10 00:52:30.258
21 6.0.0.797 2025.06.06 303e8 P P 655 415 2025.06.07 01:59:21.949 2025.06.07 01:59:22.604 2025.06.07 00:52:18.291 2025.06.07 00:52:18.706
22 6.0.0.795 2025.05.29 7a71a P P 632 413 2025.06.06 01:59:13.419 2025.06.06 01:59:14.051 2025.06.06 00:52:16.579 2025.06.06 00:52:16.992
23 6.0.0.792 2025.05.28 ee5a8 P P 654 434 2025.05.29 01:58:18.702 2025.05.29 01:58:19.356 2025.05.29 00:52:22.917 2025.05.29 00:52:23.351
24 6.0.0.791 2025.05.27 02db8 P P 630 410 2025.05.28 01:58:47.222 2025.05.28 01:58:47.852 2025.05.28 00:52:06.063 2025.05.28 00:52:06.473
25 6.0.0.789 2025.05.21 64051 P P 625 499 2025.05.25 01:58:31.383 2025.05.25 01:58:32.008 2025.05.25 00:52:27.060 2025.05.25 00:52:27.559
26 6.0.0.787 2025.05.20 230ad P P 624 416 2025.05.21 01:57:26.615 2025.05.21 01:57:27.239 2025.05.21 00:51:39.104 2025.05.21 00:51:39.520
27 6.0.0.783 2025.05.12 37320 P P 621 411 2025.05.19 01:57:14.881 2025.05.19 01:57:15.502 2025.05.19 00:51:48.867 2025.05.19 00:51:49.278
28 6.0.0.779 2025.05.11 136fa P P 632 407 2025.05.12 01:59:28.529 2025.05.12 01:59:29.161 2025.05.12 00:52:32.653 2025.05.12 00:52:33.060
29 6.0.0.778 2025.05.07 d735e P P 641 411 2025.05.11 01:58:53.135 2025.05.11 01:58:53.776 2025.05.11 00:52:46.823 2025.05.11 00:52:47.234
30 6.0.0.776 2025.05.06 007cd P P 665 409 2025.05.07 01:58:08.853 2025.05.07 01:58:09.518 2025.05.07 00:52:22.673 2025.05.07 00:52:23.082
31 6.0.0.770 2025.05.05 82c4a P P 666 406 2025.05.06 01:58:27.446 2025.05.06 01:58:28.112 2025.05.06 00:52:29.265 2025.05.06 00:52:29.671
32 6.0.0.767 2025.05.01 cdd29 P P 657 422 2025.05.02 01:59:03.385 2025.05.02 01:59:04.042 2025.05.02 00:53:21.117 2025.05.02 00:53:21.539
33 6.0.0.762 2025.04.30 5cb15 P P 645 414 2025.05.01 01:57:30.813 2025.05.01 01:57:31.458 2025.05.01 00:52:43.144 2025.05.01 00:52:43.558
34 6.0.0.755 2025.04.29 739c6 P P 617 409 2025.04.30 01:57:44.330 2025.04.30 01:57:44.947 2025.04.30 00:52:26.150 2025.04.30 00:52:26.559
35 6.0.0.753 2025.04.27 29ab3 P P 621 410 2025.04.29 01:57:54.579 2025.04.29 01:57:55.200 2025.04.29 00:52:28.757 2025.04.29 00:52:29.167
36 6.0.0.745 2025.04.21 78ad8 P P 664 457 2025.04.26 01:59:16.011 2025.04.26 01:59:16.675 2025.04.26 00:52:46.393 2025.04.26 00:52:46.850
37 6.0.0.744 2025.04.19 e883a P P 670 439 2025.04.20 01:58:42.976 2025.04.20 01:58:43.646 2025.04.20 00:52:39.542 2025.04.20 00:52:39.981
38 6.0.0.742 2025.04.17 abc3b P P 631 452 2025.04.19 01:58:11.118 2025.04.19 01:58:11.749 2025.04.19 00:52:15.554 2025.04.19 00:52:16.006
39 6.0.0.737 2025.04.16 fe52b P P 620 412 2025.04.17 01:58:38.566 2025.04.17 01:58:39.186 2025.04.17 00:52:29.153 2025.04.17 00:52:29.565
40 6.0.0.736 2025.04.14 3e6be P P 630 428 2025.04.15 01:59:31.494 2025.04.15 01:59:32.124 2025.04.15 00:52:46.725 2025.04.15 00:52:47.153
41 6.0.0.735 2025.04.13 6635c P P 631 426 2025.04.14 01:58:44.762 2025.04.14 01:58:45.393 2025.04.14 00:53:02.221 2025.04.14 00:53:02.647
42 6.0.0.734 2025.04.12 e2fd1 P P 625 406 2025.04.13 01:56:37.352 2025.04.13 01:56:37.977 2025.04.13 00:52:01.677 2025.04.13 00:52:02.083
43 6.0.0.730 2025.04.11 240b8 P P 633 426 2025.04.12 02:03:07.792 2025.04.12 02:03:08.425 2025.04.12 00:53:28.334 2025.04.12 00:53:28.760
44 6.0.0.726 2025.04.10 d79c6 P P 632 425 2025.04.11 02:03:28.992 2025.04.11 02:03:29.624 2025.04.11 00:53:17.565 2025.04.11 00:53:17.990
45 6.0.0.725 2025.04.09 a2b05 P P 635 413 2025.04.10 02:02:41.419 2025.04.10 02:02:42.054 2025.04.10 00:53:09.917 2025.04.10 00:53:10.330
46 6.0.0.722 2025.04.08 a8b86 P P 651 420 2025.04.09 01:59:17.402 2025.04.09 01:59:18.053 2025.04.09 00:52:49.248 2025.04.09 00:52:49.668
47 6.0.0.719 2025.04.06 90fd9 P P 644 420 2025.04.08 01:59:15.801 2025.04.08 01:59:16.445 2025.04.08 00:52:42.184 2025.04.08 00:52:42.604
48 6.0.0.717 2025.04.04 53d70 P P 643 426 2025.04.05 01:59:20.705 2025.04.05 01:59:21.348 2025.04.05 00:52:52.696 2025.04.05 00:52:53.122
49 6.0.0.716 2025.04.03 fc636 P P 639 422 2025.04.04 01:59:19.070 2025.04.04 01:59:19.709 2025.04.04 00:52:57.439 2025.04.04 00:52:57.861
50 6.0.0.715 2025.04.02 907ed P P 665 428 2025.04.03 01:59:17.444 2025.04.03 01:59:18.109 2025.04.03 00:52:45.947 2025.04.03 00:52:46.375
51 6.0.0.710 2025.04.01 40651 P P 669 421 2025.04.02 01:59:32.754 2025.04.02 01:59:33.423 2025.04.02 00:53:31.074 2025.04.02 00:53:31.495
52 6.0.0.708 2025.03.31 cb069 P P 640 426 2025.04.01 01:58:50.807 2025.04.01 01:58:51.447 2025.04.01 00:52:47.234 2025.04.01 00:52:47.660
53 6.0.0.707 2025.03.28 4bd4f P P 636 411 2025.03.31 01:59:16.699 2025.03.31 01:59:17.335 2025.03.31 00:52:44.745 2025.03.31 00:52:45.156
54 6.0.0.702 2025.03.27 86f4d P P 664 454 2025.03.28 02:16:25.636 2025.03.28 02:16:26.300 2025.03.28 00:53:51.050 2025.03.28 00:53:51.504
55 6.0.0.698 2025.03.26 d72a7 P P 669 427 2025.03.27 15:42:31.007 2025.03.27 15:42:31.676 2025.03.27 14:34:09.921 2025.03.27 14:34:10.348
56 6.0.0.693 2025.03.25 8aac2 P P 721 458 2025.03.26 02:03:10.254 2025.03.26 02:03:10.975 2025.03.26 00:54:32.378 2025.03.26 00:54:32.836
57 6.0.0.693 2025.03.24 0b559 P P 634 445 2025.03.25 02:03:43.890 2025.03.25 02:03:44.524 2025.03.25 00:54:32.545 2025.03.25 00:54:32.990
58 6.0.0.687 2025.03.22 730aa P P 646 466 2025.03.24 02:03:32.149 2025.03.24 02:03:32.795 2025.03.24 00:54:55.428 2025.03.24 00:54:55.894
59 6.0.0.686 2025.03.20 71bf6 P P 639 429 2025.03.21 02:00:02.934 2025.03.21 02:00:03.573 2025.03.21 00:53:24.475 2025.03.21 00:53:24.904
60 6.0.0.685 2025.03.19 a8577 P P 659 431 2025.03.20 02:00:17.800 2025.03.20 02:00:18.459 2025.03.20 00:53:56.338 2025.03.20 00:53:56.769
61 6.0.0.680 2025.03.18 90d29 P P 633 416 2025.03.19 02:00:36.514 2025.03.19 02:00:37.147 2025.03.19 00:54:02.764 2025.03.19 00:54:03.180
62 6.0.0.677 2025.03.16 c0a60 P P 628 619 2025.03.18 01:58:48.036 2025.03.18 01:58:48.664 2025.03.18 00:53:51.468 2025.03.18 00:53:52.087
63 6.0.0.676 2025.03.15 11cfb P P 657 408 2025.03.16 01:58:11.267 2025.03.16 01:58:11.924 2025.03.16 00:53:02.081 2025.03.16 00:53:02.489
64 6.0.0.674 2025.03.14 7d82c P P 807 426 2025.03.15 01:56:40.443 2025.03.15 01:56:41.250 2025.03.15 00:53:31.772 2025.03.15 00:53:32.198
65 6.0.0.673 2025.03.13 40f5b P P 625 438 2025.03.14 14:27:53.308 2025.03.14 14:27:53.933 2025.03.14 13:23:20.762 2025.03.14 13:23:21.200
66 6.0.0.671 2025.03.12 a4fff P P 648 448 2025.03.13 02:02:10.160 2025.03.13 02:02:10.808 2025.03.13 00:55:03.569 2025.03.13 00:55:04.017
67 6.0.0.663 2025.03.11 65970 P P 633 428 2025.03.12 02:01:38.722 2025.03.12 02:01:39.355 2025.03.12 00:54:44.163 2025.03.12 00:54:44.591
68 6.0.0.661 2025.03.07 b9869 P P 656 445 2025.03.11 02:01:55.293 2025.03.11 02:01:55.949 2025.03.11 00:54:53.806 2025.03.11 00:54:54.251
69 6.0.0.660 2025.03.04 a6700 P P 662 416 2025.03.06 02:02:05.980 2025.03.06 02:02:06.642 2025.03.06 00:54:43.531 2025.03.06 00:54:43.947
70 6.0.0.658 2025.03.03 f15f8 P P 644 444 2025.03.04 01:58:53.964 2025.03.04 01:58:54.608 2025.03.04 00:53:56.379 2025.03.04 00:53:56.823
71 6.0.0.656 2025.02.27 25fb4 P P 651 451 2025.03.03 01:59:07.683 2025.03.03 01:59:08.334 2025.03.03 00:53:59.988 2025.03.03 00:54:00.439
72 6.0.0.655 2025.02.25 6e3e0 P P 702 454 2025.02.27 02:00:38.140 2025.02.27 02:00:38.842 2025.02.27 00:54:37.377 2025.02.27 00:54:37.831
73 6.0.0.654 2025.02.24 b7141 P P 664 426 2025.02.25 01:57:33.060 2025.02.25 01:57:33.724 2025.02.25 00:53:26.814 2025.02.25 00:53:27.240
74 6.0.0.652 2025.02.22 22662 P P 692 455 2025.02.24 01:56:52.407 2025.02.24 01:56:53.099 2025.02.24 00:53:02.220 2025.02.24 00:53:02.675
75 6.0.0.647 2025.02.21 9fccb P P 641 421 2025.02.22 01:55:56.253 2025.02.22 01:55:56.894 2025.02.22 00:52:40.997 2025.02.22 00:52:41.418
76 6.0.0.640 2025.02.19 9b8ac P P 690 427 2025.02.20 01:57:25.566 2025.02.20 01:57:26.256 2025.02.20 00:53:11.219 2025.02.20 00:53:11.646
77 6.0.0.639 2025.02.18 201a4 P P 644 422 2025.02.19 01:58:13.157 2025.02.19 01:58:13.801 2025.02.19 00:53:51.919 2025.02.19 00:53:52.341
78 6.0.0.637 2025.02.12 6d0f5 P P 634 600 2025.02.14 01:58:52.757 2025.02.14 01:58:53.391 2025.02.14 00:54:09.626 2025.02.14 00:54:10.226
79 6.0.0.636 2025.02.11 0424f P P 631 416 2025.02.12 01:58:21.601 2025.02.12 01:58:22.232 2025.02.12 00:53:38.438 2025.02.12 00:53:38.854
80 6.0.0.635 2025.02.10 f640f P P 667 436 2025.02.11 01:57:49.994 2025.02.11 01:57:50.661 2025.02.11 00:53:27.771 2025.02.11 00:53:28.207
81 6.0.0.629 2025.02.07 194f9 P P 638 429 2025.02.08 01:57:45.135 2025.02.08 01:57:45.773 2025.02.08 00:53:25.346 2025.02.08 00:53:25.775
82 6.0.0.628 2025.02.06 859d5 P P 645 418 2025.02.07 11:01:24.683 2025.02.07 11:01:25.328 2025.02.07 09:50:43.086 2025.02.07 09:50:43.504
83 6.0.0.621 2025.02.05 34fe7 P P 668 440 2025.02.07 02:11:26.605 2025.02.07 02:11:27.273 2025.02.07 01:00:25.636 2025.02.07 01:00:26.076
84 6.0.0.609 2025.02.04 76d57 P P 632 427 2025.02.05 02:11:16.117 2025.02.05 02:11:16.749 2025.02.05 01:00:31.619 2025.02.05 01:00:32.046
85 6.0.0.607 2025.02.03 1985b P P 632 422 2025.02.04 02:11:07.058 2025.02.04 02:11:07.690 2025.02.04 01:00:09.874 2025.02.04 01:00:10.296
86 6.0.0.601 2025.02.01 6af07 P P 682 442 2025.02.02 01:57:34.337 2025.02.02 01:57:35.019 2025.02.02 00:53:36.023 2025.02.02 00:53:36.465
87 6.0.0.600 2025.01.27 188de P P 644 419 2025.01.28 01:57:35.822 2025.01.28 01:57:36.466 2025.01.28 00:53:12.108 2025.01.28 00:53:12.527
88 6.0.0.599 2025.01.25 ba588 P P 652 428 2025.01.26 01:57:22.965 2025.01.26 01:57:23.617 2025.01.26 00:53:12.692 2025.01.26 00:53:13.120
89 6.0.0.598 2025.01.23 ddbc3 P P 641 424 2025.01.25 11:45:53.366 2025.01.25 11:45:54.007 2025.01.25 10:41:14.249 2025.01.25 10:41:14.673
90 6.0.0.595 2025.01.22 e62f3 P P 638 429 2025.01.23 01:57:49.354 2025.01.23 01:57:49.992 2025.01.23 00:53:13.707 2025.01.23 00:53:14.136
91 6.0.0.594 2025.01.21 47fb6 P P 632 451 2025.01.22 01:57:16.001 2025.01.22 01:57:16.633 2025.01.22 00:53:14.030 2025.01.22 00:53:14.481
92 6.0.0.590 2025.01.20 3d7c0 P P 645 677 2025.01.21 01:57:37.345 2025.01.21 01:57:37.990 2025.01.21 00:53:13.430 2025.01.21 00:53:14.107
93 6.0.0.588 2025.01.19 b1c4e P P 699 410 2025.01.20 01:56:58.089 2025.01.20 01:56:58.788 2025.01.20 00:53:08.150 2025.01.20 00:53:08.560
94 6.0.0.587 2025.01.18 63e6e P P 668 426 2025.01.19 01:56:40.886 2025.01.19 01:56:41.554 2025.01.19 00:53:03.028 2025.01.19 00:53:03.454
95 6.0.0.585 2025.01.16 2d6bb P P 640 422 2025.01.18 01:55:36.149 2025.01.18 01:55:36.789 2025.01.18 00:53:36.847 2025.01.18 00:53:37.269
96 6.0.0.584 2025.01.15 a0aa2 P P 676 450 2025.01.16 01:59:08.314 2025.01.16 01:59:08.990 2025.01.16 00:54:17.763 2025.01.16 00:54:18.213
97 6.0.0.581 2025.01.15 69690 P P 647 423 2025.01.15 18:08:55.510 2025.01.15 18:08:56.157 2025.01.15 17:03:00.810 2025.01.15 17:03:01.233
98 6.0.0.581 2025.01.14 21e9e P P 641 418 2025.01.15 01:58:21.061 2025.01.15 01:58:21.702 2025.01.15 00:53:54.281 2025.01.15 00:53:54.699
99 6.0.0.577 2025.01.14 91dce P P 668 426 2025.01.14 17:19:24.748 2025.01.14 17:19:25.416 2025.01.14 16:14:59.488 2025.01.14 16:14:59.914
100 6.0.0.577 2025.01.13 7e293 P P 691 427 2025.01.14 11:42:10.284 2025.01.14 11:42:10.975 2025.01.14 10:38:14.128 2025.01.14 10:38:14.555
101 6.0.0.576 2025.01.12 05898 P P 638 424 2025.01.13 01:59:34.838 2025.01.13 01:59:35.476 2025.01.13 00:54:20.108 2025.01.13 00:54:20.532
102 6.0.0.573 2025.01.10 c20f3 P P 668 409 2025.01.11 01:59:34.585 2025.01.11 01:59:35.253 2025.01.11 00:54:25.524 2025.01.11 00:54:25.933
103 6.0.0.571 2024.12.31 81bba P P 681 425 2025.01.01 01:58:31.417 2025.01.01 01:58:32.098 2025.01.01 00:53:52.395 2025.01.01 00:53:52.820
104 6.0.0.570 2024.12.30 c3c8d P P 645 430 2024.12.31 01:58:13.269 2024.12.31 01:58:13.914 2024.12.31 00:54:10.822 2024.12.31 00:54:11.252
105 6.0.0.565 2024.12.28 5fc59 P P 645 427 2024.12.29 17:53:40.379 2024.12.29 17:53:41.024 2024.12.29 16:49:18.836 2024.12.29 16:49:19.263
106 6.0.0.564 2024.12.26 12514 P P 638 426 2024.12.27 01:57:51.680 2024.12.27 01:57:52.318 2024.12.27 00:53:41.954 2024.12.27 00:53:42.380
107 6.0.0.560 2024.12.25 fa83e P P 664 424 2024.12.26 01:58:17.054 2024.12.26 01:58:17.718 2024.12.26 00:53:48.271 2024.12.26 00:53:48.695
108 6.0.0.559 2024.12.23 cc800 P P 641 446 2024.12.25 01:57:52.312 2024.12.25 01:57:52.953 2024.12.25 00:53:43.851 2024.12.25 00:53:44.297
109 6.0.0.556 2024.12.22 a0404 P P 681 435 2024.12.23 01:57:47.568 2024.12.23 01:57:48.249 2024.12.23 00:53:29.141 2024.12.23 00:53:29.576
110 6.0.0.555 2024.12.19 6990a P P 656 428 2024.12.21 12:52:36.348 2024.12.21 12:52:37.004 2024.12.21 11:47:45.292 2024.12.21 11:47:45.720
111 6.0.0.553 2024.12.17 d1f8a P P 635 409 2024.12.18 01:57:02.777 2024.12.18 01:57:03.412 2024.12.18 00:53:22.268 2024.12.18 00:53:22.677
112 6.0.0.552 2024.12.11 85e25 P P 635 427 2024.12.16 01:56:29.479 2024.12.16 01:56:30.114 2024.12.16 00:53:12.017 2024.12.16 00:53:12.444
113 6.0.0.550 2024.12.10 b37ac P P 642 409 2024.12.11 01:59:57.447 2024.12.11 01:59:58.089 2024.12.11 00:53:44.902 2024.12.11 00:53:45.311
114 6.0.0.548 2024.12.08 2cc77 P P 652 413 2024.12.09 02:02:43.675 2024.12.09 02:02:44.327 2024.12.09 00:57:09.464 2024.12.09 00:57:09.877
115 6.0.0.544 2024.12.05 96943 P P 662 427 2024.12.06 01:57:19.304 2024.12.06 01:57:19.966 2024.12.06 00:54:00.560 2024.12.06 00:54:00.987
116 6.0.0.543 2024.12.03 30b77 P P 675 427 2024.12.04 01:57:19.422 2024.12.04 01:57:20.097 2024.12.04 00:54:39.068 2024.12.04 00:54:39.495
117 6.0.0.540 2024.12.02 4a1f4 P P 647 443 2024.12.03 01:56:40.590 2024.12.03 01:56:41.237 2024.12.03 00:53:56.183 2024.12.03 00:53:56.626
118 6.0.0.539 2024.11.28 1f283 P P 686 424 2024.11.30 01:56:01.470 2024.11.30 01:56:02.156 2024.11.30 00:53:45.236 2024.11.30 00:53:45.660
119 6.0.0.535 2024.11.27 6551a P P 646 426 2024.11.28 01:54:43.902 2024.11.28 01:54:44.548 2024.11.28 00:53:05.055 2024.11.28 00:53:05.481
120 6.0.0.535 2024.11.26 77b95 P P 642 449 2024.11.27 01:55:03.183 2024.11.27 01:55:03.825 2024.11.27 00:53:22.664 2024.11.27 00:53:23.113
121 6.0.0.534 2024.11.25 e9584 P P 641 411 2024.11.26 01:55:18.025 2024.11.26 01:55:18.666 2024.11.26 00:53:08.493 2024.11.26 00:53:08.904
122 6.0.0.533 2024.11.17 933ac P P 637 425 2024.11.22 01:55:56.928 2024.11.22 01:55:57.565 2024.11.22 00:53:37.513 2024.11.22 00:53:37.938
123 6.0.0.532 2024.11.17 1a471 P P 650 423 2024.11.17 14:29:44.073 2024.11.17 14:29:44.723 2024.11.17 13:28:04.256 2024.11.17 13:28:04.679
124 6.0.0.532 2024.11.16 9e263 P P 635 426 2024.11.17 01:54:31.785 2024.11.17 01:54:32.420 2024.11.17 00:52:53.686 2024.11.17 00:52:54.112
125 6.0.0.530 2024.11.15 49804 P P 609 407 2024.11.16 01:52:43.356 2024.11.16 01:52:43.965 2024.11.16 00:52:39.442 2024.11.16 00:52:39.849
126 6.0.0.528 2024.11.14 9625b P P 708 451 2024.11.15 01:57:11.434 2024.11.15 01:57:12.142 2024.11.15 00:54:24.666 2024.11.15 00:54:25.117
127 6.0.0.526 2024.11.12 65b80 P P 694 532 2024.11.14 01:56:19.603 2024.11.14 01:56:20.297 2024.11.14 00:53:46.900 2024.11.14 00:53:47.432
128 6.0.0.523 2024.11.08 8ca23 P P 635 422 2024.11.11 01:54:34.041 2024.11.11 01:54:34.676 2024.11.11 00:53:01.570 2024.11.11 00:53:01.992
129 6.0.0.520 2024.11.08 52657 P P 640 407 2024.11.08 18:28:30.529 2024.11.08 18:28:31.169 2024.11.08 17:27:58.011 2024.11.08 17:27:58.418
130 6.0.0.520 2024.11.07 4eefa P P 637 425 2024.11.08 01:53:42.976 2024.11.08 01:53:43.613 2024.11.08 00:53:08.641 2024.11.08 00:53:09.066
131 6.0.0.516 2024.11.04 b0c36 P P 630 427 2024.11.05 01:54:50.048 2024.11.05 01:54:50.678 2024.11.05 00:52:58.320 2024.11.05 00:52:58.747
132 6.0.0.515 2024.10.30 d53f3 P P 634 418 2024.11.04 01:54:24.556 2024.11.04 01:54:25.190 2024.11.04 00:53:02.970 2024.11.04 00:53:03.388
133 6.0.0.512 2024.10.29 833ef P P 647 428 2024.10.30 01:56:49.831 2024.10.30 01:56:50.478 2024.10.30 00:54:02.331 2024.10.30 00:54:02.759
134 6.0.0.511 2024.10.26 c4bc9 P P 679 443 2024.10.29 01:56:33.926 2024.10.29 01:56:34.605 2024.10.29 00:53:44.720 2024.10.29 00:53:45.163
135 6.0.0.508 2024.10.24 a8f5b P P 634 422 2024.10.26 10:03:35.264 2024.10.26 10:03:35.898 2024.10.26 09:00:13.196 2024.10.26 09:00:13.618
136 6.0.0.502 2024.10.22 6bfd7 P P 635 423 2024.10.23 01:56:21.637 2024.10.23 01:56:22.272 2024.10.23 00:53:32.296 2024.10.23 00:53:32.719
137 6.0.0.500 2024.10.21 be565 P P 782 423 2024.10.22 01:56:41.445 2024.10.22 01:56:42.227 2024.10.22 00:53:47.239 2024.10.22 00:53:47.662
138 6.0.0.499 2024.10.19 6214b P P 668 426 2024.10.20 01:55:42.147 2024.10.20 01:55:42.815 2024.10.20 00:53:33.313 2024.10.20 00:53:33.739
139 6.0.0.498 2024.10.18 591a7 P P 635 423 2024.10.19 01:55:05.149 2024.10.19 01:55:05.784 2024.10.19 00:53:00.082 2024.10.19 00:53:00.505
140 6.0.0.494 2024.10.17 042ce P P 658 441 2024.10.18 01:55:43.881 2024.10.18 01:55:44.539 2024.10.18 00:53:10.527 2024.10.18 00:53:10.968
141 6.0.0.491 2024.10.14 dc5fb P P 638 424 2024.10.15 01:55:22.937 2024.10.15 01:55:23.575 2024.10.15 00:52:59.459 2024.10.15 00:52:59.883
142 6.0.0.489 2024.10.11 2ba59 P P 652 425 2024.10.12 01:54:50.844 2024.10.12 01:54:51.496 2024.10.12 00:52:46.548 2024.10.12 00:52:46.973
143 6.0.0.488 2024.10.09 1c93e P P 666 412 2024.10.10 01:54:40.755 2024.10.10 01:54:41.421 2024.10.10 00:53:08.801 2024.10.10 00:53:09.213
144 6.0.0.487 2024.10.06 065a3 P P 677 413 2024.10.07 01:56:04.467 2024.10.07 01:56:05.144 2024.10.07 00:53:44.718 2024.10.07 00:53:45.131
145 6.0.0.485 2024.10.05 9f5f7 P P 630 421 2024.10.06 01:55:41.210 2024.10.06 01:55:41.840 2024.10.06 00:53:25.351 2024.10.06 00:53:25.772
146 6.0.0.485 2024.10.04 e95c1 P P 696 406 2024.10.05 01:55:21.232 2024.10.05 01:55:21.928 2024.10.05 00:53:05.919 2024.10.05 00:53:06.325
147 6.0.0.483 2024.10.02 5e5ae P P 647 416 2024.10.03 01:56:47.273 2024.10.03 01:56:47.920 2024.10.03 00:53:49.088 2024.10.03 00:53:49.504
148 6.0.0.478 2024.09.30 b5010 P P 635 430 2024.10.01 01:55:45.720 2024.10.01 01:55:46.355 2024.10.01 00:53:18.404 2024.10.01 00:53:18.834
149 6.0.0.474 2024.09.26 e4efb P P 639 427 2024.09.30 01:55:23.168 2024.09.30 01:55:23.807 2024.09.30 00:53:13.950 2024.09.30 00:53:14.377
150 6.0.0.471 2024.09.25 dab71 P P 646 426 2024.09.26 01:55:26.716 2024.09.26 01:55:27.362 2024.09.26 00:53:28.387 2024.09.26 00:53:28.813
151 6.0.0.471 2024.09.24 01b51 P P 650 426 2024.09.25 01:56:17.368 2024.09.25 01:56:18.018 2024.09.25 00:53:52.481 2024.09.25 00:53:52.907
152 6.0.0.470 2024.09.23 77cc0 P P 643 429 2024.09.24 01:55:27.324 2024.09.24 01:55:27.967 2024.09.24 00:53:37.086 2024.09.24 00:53:37.515
153 6.0.0.467 2024.09.21 ea0b8 P P 642 440 2024.09.23 01:56:39.663 2024.09.23 01:56:40.305 2024.09.23 00:54:23.622 2024.09.23 00:54:24.062
154 6.0.0.466 2024.09.20 32dc6 P P 638 430 2024.09.21 01:54:57.089 2024.09.21 01:54:57.727 2024.09.21 00:53:14.171 2024.09.21 00:53:14.601
155 6.0.0.461 2024.09.17 2c895 P P 637 431 2024.09.18 01:54:17.815 2024.09.18 01:54:18.452 2024.09.18 00:52:24.901 2024.09.18 00:52:25.332
156 6.0.0.460 2024.09.11 3c253 P P 639 427 2024.09.17 01:54:18.841 2024.09.17 01:54:19.480 2024.09.17 00:52:51.497 2024.09.17 00:52:51.924
157 6.0.0.457 2024.09.09 fdc6f P P 653 435 2024.09.10 01:55:07.816 2024.09.10 01:55:08.469 2024.09.10 00:53:02.054 2024.09.10 00:53:02.489
158 6.0.0.455 2024.09.07 500d8 P P 675 426 2024.09.08 01:55:29.945 2024.09.08 01:55:30.620 2024.09.08 00:53:35.849 2024.09.08 00:53:36.275
159 6.0.0.454 2024.09.05 4d70f P P 648 422 2024.09.06 01:55:39.981 2024.09.06 01:55:40.629 2024.09.06 00:53:13.409 2024.09.06 00:53:13.831
160 6.0.0.452 2024.09.04 9ff9c P P 696 423 2024.09.05 01:55:12.689 2024.09.05 01:55:13.385 2024.09.05 00:53:18.249 2024.09.05 00:53:18.672
161 6.0.0.450 2024.09.02 27124 P P 672 430 2024.09.04 01:55:40.774 2024.09.04 01:55:41.446 2024.09.04 00:53:18.330 2024.09.04 00:53:18.760
162 6.0.0.447 2024.09.01 901b4 P P 638 429 2024.09.02 01:45:50.036 2024.09.02 01:45:50.674 2024.09.02 00:43:20.741 2024.09.02 00:43:21.170
163 6.0.0.446 2024.08.30 fe1b2 P P 680 431 2024.09.01 01:44:25.931 2024.09.01 01:44:26.611 2024.09.01 00:43:16.361 2024.09.01 00:43:16.792
164 6.0.0.444 2024.08.28 785d4 P P 648 421 2024.08.30 01:44:47.012 2024.08.30 01:44:47.660 2024.08.30 00:43:37.607 2024.08.30 00:43:38.028
165 6.0.0.442 2024.08.21 4a68f P P 694 415 2024.08.28 01:44:30.038 2024.08.28 01:44:30.732 2024.08.28 00:43:19.793 2024.08.28 00:43:20.208
166 6.0.0.441 2024.08.20 75042 P P 760 446 2024.08.21 01:43:18.203 2024.08.21 01:43:18.963 2024.08.21 00:42:42.119 2024.08.21 00:42:42.565
167 6.0.0.438 2024.08.16 088b5 P P 704 458 2024.08.19 01:45:54.237 2024.08.19 01:45:54.941 2024.08.19 00:43:30.555 2024.08.19 00:43:31.013
168 6.0.0.437 2024.08.14 3c88b P P 745 457 2024.08.16 01:49:00.025 2024.08.16 01:49:00.770 2024.08.16 00:44:25.652 2024.08.16 00:44:26.109
169 6.0.0.436 2024.08.13 b8e75 P P 724 460 2024.08.14 01:47:57.289 2024.08.14 01:47:58.013 2024.08.14 00:44:01.022 2024.08.14 00:44:01.482
170 6.0.0.432 2024.08.11 e82ac P P 763 454 2024.08.13 01:46:31.932 2024.08.13 01:46:32.695 2024.08.13 00:43:35.442 2024.08.13 00:43:35.896
171 6.0.0.431 2024.08.11 16bb1 P P 1509 475 2024.08.11 17:51:57.402 2024.08.11 17:51:58.911 2024.08.11 16:48:43.112 2024.08.11 16:48:43.587
172 6.0.0.431 2024.08.09 de5a7 P P 769 458 2024.08.10 17:25:24.563 2024.08.10 17:25:25.332 2024.08.10 16:22:54.372 2024.08.10 16:22:54.830
173 6.0.0.428 2024.08.08 9191b P P 764 456 2024.08.10 01:45:55.960 2024.08.10 01:45:56.724 2024.08.10 00:43:35.119 2024.08.10 00:43:35.575
174 6.0.0.423 2024.08.07 33b41 P P 755 481 2024.08.08 08:45:14.435 2024.08.08 08:45:15.190 2024.08.08 07:42:52.747 2024.08.08 07:42:53.228
175 6.0.0.421 2024.08.06 ed60d P P 625 356 2024.08.07 01:41:44.778 2024.08.07 01:41:45.403 2024.08.07 00:42:11.593 2024.08.07 00:42:11.949
176 6.0.0.419 2024.08.05 3505a P P 641 359 2024.08.06 01:40:00.166 2024.08.06 01:40:00.807 2024.08.06 00:41:53.334 2024.08.06 00:41:53.693
177 6.0.0.409 2024.08.02 ec18f P P 556 353 2024.08.05 01:39:07.946 2024.08.05 01:39:08.502 2024.08.05 00:41:19.432 2024.08.05 00:41:19.785
178 6.0.0.406 2024.08.01 b20be P P 549 348 2024.08.02 01:37:36.274 2024.08.02 01:37:36.823 2024.08.02 00:40:38.466 2024.08.02 00:40:38.814
179 6.0.0.405 2024.07.31 a62ac P P 572 471 2024.08.01 01:45:46.400 2024.08.01 01:45:46.972 2024.08.01 00:45:38.197 2024.08.01 00:45:38.668
180 6.0.0.403 2024.07.29 30f03 P P 615 347 2024.07.30 01:41:00.901 2024.07.30 01:41:01.516 2024.07.30 00:42:10.433 2024.07.30 00:42:10.780
181 6.0.0.401 2024.07.26 24e41 P P 546 371 2024.07.27 01:40:17.369 2024.07.27 01:40:17.915 2024.07.27 00:41:44.611 2024.07.27 00:41:44.982
182 6.0.0.400 2024.07.24 5bb78 P P 588 351 2024.07.25 01:41:04.138 2024.07.25 01:41:04.726 2024.07.25 00:41:53.461 2024.07.25 00:41:53.812
183 6.0.0.398 2024.07.23 85b18 P E 585 2381 2024.07.24 02:04:20.211 2024.07.24 02:04:20.796 2024.07.24 00:42:35.138 2024.07.24 00:42:37.519
184 6.0.0.397 2024.07.22 c734c P P 559 363 2024.07.23 01:40:50.695 2024.07.23 01:40:51.254 2024.07.23 00:41:59.627 2024.07.23 00:41:59.990
185 6.0.0.396 2024.07.13 cf952 P P 567 361 2024.07.22 01:41:03.581 2024.07.22 01:41:04.148 2024.07.22 00:42:06.140 2024.07.22 00:42:06.501

Elapsed time, ms. Chart for last 150 runs:

Last commits information (all timestamps in UTC):