Skip to content

Merge branch 'main' into devin/1767897155-bump-duckdb-versions

830c06f
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Merged

chore: Bump DuckDB versions to 1.4.x and duckdb-engine to 0.17.x #934

Merge branch 'main' into devin/1767897155-bump-duckdb-versions
830c06f
Select commit
Loading
Failed to load commit list.
GitHub Actions / PyTest Results (Full) failed Jan 8, 2026 in 0s

6 fail, 17 skipped, 395 pass in 24m 43s

418 tests  ±0   395 ✅ ±0   24m 43s ⏱️ +9s
  1 suites ±0    17 💤 ±0 
  1 files   ±0     6 ❌ ±0 

Results for commit 830c06f. ± Comparison against earlier commit 1e57e70.

Annotations

Check warning on line 0 in tests.integration_tests.destinations.test_source_to_destination

See this annotation in the file changed.

@github-actions github-actions / PyTest Results (Full)

test_duckdb_destination_check (tests.integration_tests.destinations.test_source_to_destination) failed

build/test-results/test-results.xml [took 2s]
Raw output
airbyte.exceptions.AirbyteConnectorCheckFailedError: Connector check failed. (AirbyteConnectorCheckFailedError)
------------------------------------------------------------
AirbyteConnectorCheckFailedError: Connector check failed.
    Please review the log file for more information.
    More info: https://docs.airbyte.com/integrations/destinations/duckdb
    Connector Name: 'destination-duckdb'
    Failure Reason: "An exception occurred: PermissionError(13, 'Permission denied')"
    Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFHSBB1.log:
------------------------------------------------------------2026-01-08 18:57:51 - INFO - Using DuckDB file at /local/temp/db.duckdb

------------------------------------------------------------
new_duckdb_destination = <airbyte.destinations.base.Destination object at 0x7f9dd30de080>

    def test_duckdb_destination_check(new_duckdb_destination: Destination) -> None:
        """Test the JSONL destination."""
>       new_duckdb_destination.check()

tests/integration_tests/destinations/test_source_to_destination.py:75: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <airbyte.destinations.base.Destination object at 0x7f9dd30de080>

    def check(self) -> None:
        """Call check on the connector.
    
        This involves the following steps:
        * Write the config to a temporary file
        * execute the connector with check --config <config_file>
        * Listen to the messages and return the first AirbyteCatalog that comes along.
        * Make sure the subprocess is killed when the function returns.
        """
        with as_temp_files([self._hydrated_config]) as [config_file]:
            try:
                for msg in self._execute(["check", "--config", config_file]):
                    if msg.type == Type.CONNECTION_STATUS and msg.connectionStatus:
                        if msg.connectionStatus.status != Status.FAILED:
                            rich.print(
                                f"Connection check succeeded for `{self.name}`.",
                                file=sys.stderr,
                            )
                            log_connector_check_result(
                                name=self.name,
                                state=EventState.SUCCEEDED,
                            )
                            return
    
                        log_connector_check_result(
                            name=self.name,
                            state=EventState.FAILED,
                        )
                        # Give logs a chance to be flushed.
                        sleep(1)
>                       raise exc.AirbyteConnectorCheckFailedError(
                            connector_name=self.name,
                            help_url=self.docs_url,
                            context={
                                "failure_reason": msg.connectionStatus.message,
                            },
                        )
E                       airbyte.exceptions.AirbyteConnectorCheckFailedError: Connector check failed. (AirbyteConnectorCheckFailedError)
E                       ------------------------------------------------------------
E                       AirbyteConnectorCheckFailedError: Connector check failed.
E                           Please review the log file for more information.
E                           More info: https://docs.airbyte.com/integrations/destinations/duckdb
E                           Connector Name: 'destination-duckdb'
E                           Failure Reason: "An exception occurred: PermissionError(13, 'Permission denied')"
E                           Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFHSBB1.log:
E                       ------------------------------------------------------------2026-01-08 18:57:51 - INFO - Using DuckDB file at /local/temp/db.duckdb
E                       
E                       ------------------------------------------------------------

airbyte/_connector_base.py:357: AirbyteConnectorCheckFailedError

Check warning on line 0 in tests.integration_tests.destinations.test_source_to_destination

See this annotation in the file changed.

@github-actions github-actions / PyTest Results (Full)

test_duckdb_destination_write_components (tests.integration_tests.destinations.test_source_to_destination) failed

build/test-results/test-results.xml [took 11s]
Raw output
airbyte.exceptions.AirbyteConnectorWriteError: Error when writing to the connector. (AirbyteConnectorWriteError)
------------------------------------------------------------
AirbyteConnectorWriteError: Error when writing to the connector.
    Please review the log file for more information.
    Connector Name: 'destination-duckdb'
------------------------------------------------------------
Caused by: Connector failed. (AirbyteConnectorFailedError)
------------------------------------------------------------
AirbyteConnectorFailedError: Connector failed.
    Please review the log file for more information.
    Connector Name: 'destination-duckdb'
    Exit Code: 1
    Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFHVEF6.log:
------------------------------------------------------------2026-01-08 18:58:03 - INFO - Begin writing to the destination...
2026-01-08 18:58:03 - INFO - Starting write to DuckDB with 1 streams
2026-01-08 18:58:03 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
Traceback (most recent call last):
  File "/usr/local/bin/destination-duckdb", line 6, in <module>
    sys.exit(run())
             ^^^^^
  File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
    DestinationDuckdb().run(sys.argv[1:])
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
    for message in output_messages:
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
  File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
2026-01-08 18:58:03 - ERROR - Something went wrong in the connector. See the logs for more details.
2026-01-08 18:58:03 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898683493.813, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}


------------------------------------------------------------
    Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFHVEF6.log:
------------------------------------------------------------2026-01-08 18:58:03 - INFO - Begin writing to the destination...
2026-01-08 18:58:03 - INFO - Starting write to DuckDB with 1 streams
2026-01-08 18:58:03 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
Traceback (most recent call last):
  File "/usr/local/bin/destination-duckdb", line 6, in <module>
    sys.exit(run())
             ^^^^^
  File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
    DestinationDuckdb().run(sys.argv[1:])
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
    for message in output_messages:
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
  File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
2026-01-08 18:58:03 - ERROR - Something went wrong in the connector. See the logs for more details.
2026-01-08 18:58:03 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898683493.813, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}


------------------------------------------------------------
new_duckdb_destination = <airbyte.destinations.base.Destination object at 0x7f9dd29a7c40>
new_source_faker = <airbyte.sources.base.Source object at 0x7f9dd29a70d0>

    def test_duckdb_destination_write_components(
        new_duckdb_destination: Destination,
        new_source_faker: Source,
    ) -> None:
        """Test the JSONL destination."""
        read_result: ReadResult = new_source_faker.read()
        # Read from the source and write to the destination.
        airbyte_messages = (
            AirbyteMessage(
                type=Type.RECORD,
                record=AirbyteRecordMessage(
                    stream="products",
                    emitted_at=1704067200,  # Dummy value
                    data=record_dict,
                ),
            )
            for record_dict in read_result["products"]
        )
>       new_duckdb_destination._write_airbyte_message_stream(
            stdin=AirbyteMessageIterator(airbyte_messages),
            catalog_provider=CatalogProvider(
                configured_catalog=new_source_faker.configured_catalog
            ),
            write_strategy=WriteStrategy.AUTO,
            progress_tracker=ProgressTracker(
                source=None,
                cache=None,
                destination=new_duckdb_destination,
                expected_streams=["products"],
            ),
        )

tests/integration_tests/destinations/test_source_to_destination.py:96: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <airbyte.destinations.base.Destination object at 0x7f9dd29a7c40>
stdin = <airbyte._message_iterators.AirbyteMessageIterator object at 0x7f9dd29a79d0>

    def _write_airbyte_message_stream(
        self,
        stdin: IO[str] | AirbyteMessageIterator,
        *,
        catalog_provider: CatalogProvider,
        write_strategy: WriteStrategy,
        state_writer: StateWriterBase | None = None,
        progress_tracker: ProgressTracker,
    ) -> None:
        """Read from the connector and write to the cache."""
        # Run optional validation step
        if state_writer is None:
            state_writer = StdOutStateWriter()
    
        # Apply the write strategy to the catalog provider before sending to the destination
        catalog_provider = catalog_provider.with_write_strategy(write_strategy)
    
        with as_temp_files(
            files_contents=[
                self._hydrated_config,
                catalog_provider.configured_catalog.model_dump_json(exclude_none=True),
            ]
        ) as [
            config_file,
            catalog_file,
        ]:
            try:
                # We call the connector to write the data, tallying the inputs and outputs
                for destination_message in progress_tracker.tally_confirmed_writes(
                    messages=self._execute(
                        args=[
                            "write",
                            "--config",
                            config_file,
                            "--catalog",
                            catalog_file,
                        ],
                        stdin=AirbyteMessageIterator(
                            progress_tracker.tally_pending_writes(
                                stdin,
                            )
                        ),
                    )
                ):
                    if destination_message.state:
                        state_writer.write_state(state_message=destination_message.state)
    
            except exc.AirbyteConnectorFailedError as ex:
>               raise exc.AirbyteConnectorWriteError(
                    connector_name=self.name,
                    log_text=self._last_log_messages,
                    original_exception=ex,
                ) from None
E               airbyte.exceptions.AirbyteConnectorWriteError: Error when writing to the connector. (AirbyteConnectorWriteError)
E               ------------------------------------------------------------
E               AirbyteConnectorWriteError: Error when writing to the connector.
E                   Please review the log file for more information.
E                   Connector Name: 'destination-duckdb'
E               ------------------------------------------------------------
E               Caused by: Connector failed. (AirbyteConnectorFailedError)
E               ------------------------------------------------------------
E               AirbyteConnectorFailedError: Connector failed.
E                   Please review the log file for more information.
E                   Connector Name: 'destination-duckdb'
E                   Exit Code: 1
E                   Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFHVEF6.log:
E               ------------------------------------------------------------2026-01-08 18:58:03 - INFO - Begin writing to the destination...
E               2026-01-08 18:58:03 - INFO - Starting write to DuckDB with 1 streams
E               2026-01-08 18:58:03 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               Traceback (most recent call last):
E                 File "/usr/local/bin/destination-duckdb", line 6, in <module>
E                   sys.exit(run())
E                            ^^^^^
E                 File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
E                   DestinationDuckdb().run(sys.argv[1:])
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
E                   for message in output_messages:
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
E                   yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
E                   yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
E                 File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
E                   con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
E                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E               _duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               2026-01-08 18:58:03 - ERROR - Something went wrong in the connector. See the logs for more details.
E               2026-01-08 18:58:03 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898683493.813, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}
E               
E               
E               ------------------------------------------------------------
E                   Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFHVEF6.log:
E               ------------------------------------------------------------2026-01-08 18:58:03 - INFO - Begin writing to the destination...
E               2026-01-08 18:58:03 - INFO - Starting write to DuckDB with 1 streams
E               2026-01-08 18:58:03 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               Traceback (most recent call last):
E                 File "/usr/local/bin/destination-duckdb", line 6, in <module>
E                   sys.exit(run())
E                            ^^^^^
E                 File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
E                   DestinationDuckdb().run(sys.argv[1:])
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
E                   for message in output_messages:
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
E                   yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
E                   yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
E                 File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
E                   con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
E                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E               _duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               2026-01-08 18:58:03 - ERROR - Something went wrong in the connector. See the logs for more details.
E               2026-01-08 18:58:03 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898683493.813, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}
E               
E               
E               ------------------------------------------------------------

airbyte/destinations/base.py:297: AirbyteConnectorWriteError

Check warning on line 0 in tests.integration_tests.destinations.test_source_to_destination

See this annotation in the file changed.

@github-actions github-actions / PyTest Results (Full)

test_destination_write_from_source_with_cache (tests.integration_tests.destinations.test_source_to_destination) failed

build/test-results/test-results.xml [took 12s]
Raw output
airbyte.exceptions.AirbyteConnectorWriteError: Error when writing to the connector. (AirbyteConnectorWriteError)
------------------------------------------------------------
AirbyteConnectorWriteError: Error when writing to the connector.
    Please review the log file for more information.
    Connector Name: 'destination-duckdb'
------------------------------------------------------------
Caused by: Connector failed. (AirbyteConnectorFailedError)
------------------------------------------------------------
AirbyteConnectorFailedError: Connector failed.
    Please review the log file for more information.
    Connector Name: 'destination-duckdb'
    Exit Code: 1
    Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFJ67J6.log:
------------------------------------------------------------2026-01-08 18:58:15 - INFO - Begin writing to the destination...
2026-01-08 18:58:15 - INFO - Starting write to DuckDB with 3 streams
2026-01-08 18:58:15 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
Traceback (most recent call last):
  File "/usr/local/bin/destination-duckdb", line 6, in <module>
    sys.exit(run())
             ^^^^^
  File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
    DestinationDuckdb().run(sys.argv[1:])
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
    for message in output_messages:
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
  File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
2026-01-08 18:58:15 - ERROR - Something went wrong in the connector. See the logs for more details.
2026-01-08 18:58:15 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898695502.881, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}


------------------------------------------------------------
    Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFJ67J6.log:
------------------------------------------------------------2026-01-08 18:58:15 - INFO - Begin writing to the destination...
2026-01-08 18:58:15 - INFO - Starting write to DuckDB with 3 streams
2026-01-08 18:58:15 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
Traceback (most recent call last):
  File "/usr/local/bin/destination-duckdb", line 6, in <module>
    sys.exit(run())
             ^^^^^
  File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
    DestinationDuckdb().run(sys.argv[1:])
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
    for message in output_messages:
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
  File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
2026-01-08 18:58:15 - ERROR - Something went wrong in the connector. See the logs for more details.
2026-01-08 18:58:15 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898695502.881, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}


------------------------------------------------------------
new_duckdb_destination = <airbyte.destinations.base.Destination object at 0x7f9dd159a740>
new_source_faker = <airbyte.sources.base.Source object at 0x7f9dd159a650>

    def test_destination_write_from_source_with_cache(
        new_duckdb_destination: Destination,
        new_source_faker: Source,
    ) -> None:
        """Test the JSONL destination."""
>       write_result: WriteResult = new_duckdb_destination.write(
            source_data=new_source_faker,
            streams="*",
            cache=new_local_cache(),
            write_strategy=WriteStrategy.AUTO,
        )

tests/integration_tests/destinations/test_source_to_destination.py:116: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
airbyte/destinations/base.py:227: in write
    self._write_airbyte_message_stream(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <airbyte.destinations.base.Destination object at 0x7f9dd159a740>
stdin = <airbyte._message_iterators.AirbyteMessageIterator object at 0x7f9dd30011e0>

    def _write_airbyte_message_stream(
        self,
        stdin: IO[str] | AirbyteMessageIterator,
        *,
        catalog_provider: CatalogProvider,
        write_strategy: WriteStrategy,
        state_writer: StateWriterBase | None = None,
        progress_tracker: ProgressTracker,
    ) -> None:
        """Read from the connector and write to the cache."""
        # Run optional validation step
        if state_writer is None:
            state_writer = StdOutStateWriter()
    
        # Apply the write strategy to the catalog provider before sending to the destination
        catalog_provider = catalog_provider.with_write_strategy(write_strategy)
    
        with as_temp_files(
            files_contents=[
                self._hydrated_config,
                catalog_provider.configured_catalog.model_dump_json(exclude_none=True),
            ]
        ) as [
            config_file,
            catalog_file,
        ]:
            try:
                # We call the connector to write the data, tallying the inputs and outputs
                for destination_message in progress_tracker.tally_confirmed_writes(
                    messages=self._execute(
                        args=[
                            "write",
                            "--config",
                            config_file,
                            "--catalog",
                            catalog_file,
                        ],
                        stdin=AirbyteMessageIterator(
                            progress_tracker.tally_pending_writes(
                                stdin,
                            )
                        ),
                    )
                ):
                    if destination_message.state:
                        state_writer.write_state(state_message=destination_message.state)
    
            except exc.AirbyteConnectorFailedError as ex:
>               raise exc.AirbyteConnectorWriteError(
                    connector_name=self.name,
                    log_text=self._last_log_messages,
                    original_exception=ex,
                ) from None
E               airbyte.exceptions.AirbyteConnectorWriteError: Error when writing to the connector. (AirbyteConnectorWriteError)
E               ------------------------------------------------------------
E               AirbyteConnectorWriteError: Error when writing to the connector.
E                   Please review the log file for more information.
E                   Connector Name: 'destination-duckdb'
E               ------------------------------------------------------------
E               Caused by: Connector failed. (AirbyteConnectorFailedError)
E               ------------------------------------------------------------
E               AirbyteConnectorFailedError: Connector failed.
E                   Please review the log file for more information.
E                   Connector Name: 'destination-duckdb'
E                   Exit Code: 1
E                   Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFJ67J6.log:
E               ------------------------------------------------------------2026-01-08 18:58:15 - INFO - Begin writing to the destination...
E               2026-01-08 18:58:15 - INFO - Starting write to DuckDB with 3 streams
E               2026-01-08 18:58:15 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               Traceback (most recent call last):
E                 File "/usr/local/bin/destination-duckdb", line 6, in <module>
E                   sys.exit(run())
E                            ^^^^^
E                 File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
E                   DestinationDuckdb().run(sys.argv[1:])
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
E                   for message in output_messages:
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
E                   yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
E                   yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
E                 File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
E                   con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
E                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E               _duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               2026-01-08 18:58:15 - ERROR - Something went wrong in the connector. See the logs for more details.
E               2026-01-08 18:58:15 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898695502.881, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}
E               
E               
E               ------------------------------------------------------------
E                   Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFJ67J6.log:
E               ------------------------------------------------------------2026-01-08 18:58:15 - INFO - Begin writing to the destination...
E               2026-01-08 18:58:15 - INFO - Starting write to DuckDB with 3 streams
E               2026-01-08 18:58:15 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               Traceback (most recent call last):
E                 File "/usr/local/bin/destination-duckdb", line 6, in <module>
E                   sys.exit(run())
E                            ^^^^^
E                 File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
E                   DestinationDuckdb().run(sys.argv[1:])
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
E                   for message in output_messages:
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
E                   yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
E                   yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
E                 File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
E                   con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
E                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E               _duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               2026-01-08 18:58:15 - ERROR - Something went wrong in the connector. See the logs for more details.
E               2026-01-08 18:58:15 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898695502.881, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}
E               
E               
E               ------------------------------------------------------------

airbyte/destinations/base.py:297: AirbyteConnectorWriteError

Check warning on line 0 in tests.integration_tests.destinations.test_source_to_destination

See this annotation in the file changed.

@github-actions github-actions / PyTest Results (Full)

test_destination_write_from_source_without_cache (tests.integration_tests.destinations.test_source_to_destination) failed

build/test-results/test-results.xml [took 6s]
Raw output
airbyte.exceptions.AirbyteConnectorWriteError: Error when writing to the connector. (AirbyteConnectorWriteError)
------------------------------------------------------------
AirbyteConnectorWriteError: Error when writing to the connector.
    Please review the log file for more information.
    Connector Name: 'destination-duckdb'
------------------------------------------------------------
Caused by: Connector failed. (AirbyteConnectorFailedError)
------------------------------------------------------------
AirbyteConnectorFailedError: Connector failed.
    Please review the log file for more information.
    Connector Name: 'destination-duckdb'
    Exit Code: 1
    Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFJHZBJ.log:
------------------------------------------------------------2026-01-08 18:58:20 - INFO - Begin writing to the destination...
2026-01-08 18:58:20 - INFO - Starting write to DuckDB with 3 streams
2026-01-08 18:58:20 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
Traceback (most recent call last):
  File "/usr/local/bin/destination-duckdb", line 6, in <module>
    sys.exit(run())
             ^^^^^
  File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
    DestinationDuckdb().run(sys.argv[1:])
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
    for message in output_messages:
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
  File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
2026-01-08 18:58:20 - ERROR - Something went wrong in the connector. See the logs for more details.
2026-01-08 18:58:20 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898700046.221, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}


------------------------------------------------------------
    Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFJHZBJ.log:
------------------------------------------------------------2026-01-08 18:58:20 - INFO - Begin writing to the destination...
2026-01-08 18:58:20 - INFO - Starting write to DuckDB with 3 streams
2026-01-08 18:58:20 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
Traceback (most recent call last):
  File "/usr/local/bin/destination-duckdb", line 6, in <module>
    sys.exit(run())
             ^^^^^
  File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
    DestinationDuckdb().run(sys.argv[1:])
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
    for message in output_messages:
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
  File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
2026-01-08 18:58:20 - ERROR - Something went wrong in the connector. See the logs for more details.
2026-01-08 18:58:20 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898700046.221, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}


------------------------------------------------------------
new_duckdb_destination = <airbyte.destinations.base.Destination object at 0x7f9dd31fc550>
new_source_faker = <airbyte.sources.base.Source object at 0x7f9dd31fcbe0>

    def test_destination_write_from_source_without_cache(
        new_duckdb_destination: Destination,
        new_source_faker: Source,
    ) -> None:
        """Test the JSONL destination."""
>       write_result: WriteResult = new_duckdb_destination.write(
            source_data=new_source_faker,
            streams="*",
            cache=False,
            write_strategy=WriteStrategy.AUTO,
        )

tests/integration_tests/destinations/test_source_to_destination.py:130: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
airbyte/destinations/base.py:227: in write
    self._write_airbyte_message_stream(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <airbyte.destinations.base.Destination object at 0x7f9dd31fc550>
stdin = <airbyte._message_iterators.AirbyteMessageIterator object at 0x7f9dd30edf30>

    def _write_airbyte_message_stream(
        self,
        stdin: IO[str] | AirbyteMessageIterator,
        *,
        catalog_provider: CatalogProvider,
        write_strategy: WriteStrategy,
        state_writer: StateWriterBase | None = None,
        progress_tracker: ProgressTracker,
    ) -> None:
        """Read from the connector and write to the cache."""
        # Run optional validation step
        if state_writer is None:
            state_writer = StdOutStateWriter()
    
        # Apply the write strategy to the catalog provider before sending to the destination
        catalog_provider = catalog_provider.with_write_strategy(write_strategy)
    
        with as_temp_files(
            files_contents=[
                self._hydrated_config,
                catalog_provider.configured_catalog.model_dump_json(exclude_none=True),
            ]
        ) as [
            config_file,
            catalog_file,
        ]:
            try:
                # We call the connector to write the data, tallying the inputs and outputs
                for destination_message in progress_tracker.tally_confirmed_writes(
                    messages=self._execute(
                        args=[
                            "write",
                            "--config",
                            config_file,
                            "--catalog",
                            catalog_file,
                        ],
                        stdin=AirbyteMessageIterator(
                            progress_tracker.tally_pending_writes(
                                stdin,
                            )
                        ),
                    )
                ):
                    if destination_message.state:
                        state_writer.write_state(state_message=destination_message.state)
    
            except exc.AirbyteConnectorFailedError as ex:
>               raise exc.AirbyteConnectorWriteError(
                    connector_name=self.name,
                    log_text=self._last_log_messages,
                    original_exception=ex,
                ) from None
E               airbyte.exceptions.AirbyteConnectorWriteError: Error when writing to the connector. (AirbyteConnectorWriteError)
E               ------------------------------------------------------------
E               AirbyteConnectorWriteError: Error when writing to the connector.
E                   Please review the log file for more information.
E                   Connector Name: 'destination-duckdb'
E               ------------------------------------------------------------
E               Caused by: Connector failed. (AirbyteConnectorFailedError)
E               ------------------------------------------------------------
E               AirbyteConnectorFailedError: Connector failed.
E                   Please review the log file for more information.
E                   Connector Name: 'destination-duckdb'
E                   Exit Code: 1
E                   Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFJHZBJ.log:
E               ------------------------------------------------------------2026-01-08 18:58:20 - INFO - Begin writing to the destination...
E               2026-01-08 18:58:20 - INFO - Starting write to DuckDB with 3 streams
E               2026-01-08 18:58:20 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               Traceback (most recent call last):
E                 File "/usr/local/bin/destination-duckdb", line 6, in <module>
E                   sys.exit(run())
E                            ^^^^^
E                 File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
E                   DestinationDuckdb().run(sys.argv[1:])
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
E                   for message in output_messages:
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
E                   yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
E                   yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
E                 File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
E                   con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
E                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E               _duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               2026-01-08 18:58:20 - ERROR - Something went wrong in the connector. See the logs for more details.
E               2026-01-08 18:58:20 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898700046.221, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}
E               
E               
E               ------------------------------------------------------------
E                   Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFJHZBJ.log:
E               ------------------------------------------------------------2026-01-08 18:58:20 - INFO - Begin writing to the destination...
E               2026-01-08 18:58:20 - INFO - Starting write to DuckDB with 3 streams
E               2026-01-08 18:58:20 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               Traceback (most recent call last):
E                 File "/usr/local/bin/destination-duckdb", line 6, in <module>
E                   sys.exit(run())
E                            ^^^^^
E                 File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
E                   DestinationDuckdb().run(sys.argv[1:])
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
E                   for message in output_messages:
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
E                   yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
E                   yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
E                 File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
E                   con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
E                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E               _duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               2026-01-08 18:58:20 - ERROR - Something went wrong in the connector. See the logs for more details.
E               2026-01-08 18:58:20 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898700046.221, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}
E               
E               
E               ------------------------------------------------------------

airbyte/destinations/base.py:297: AirbyteConnectorWriteError

Check warning on line 0 in tests.integration_tests.destinations.test_source_to_destination

See this annotation in the file changed.

@github-actions github-actions / PyTest Results (Full)

test_destination_write_from_read_result (tests.integration_tests.destinations.test_source_to_destination) failed

build/test-results/test-results.xml [took 11s]
Raw output
airbyte.exceptions.AirbyteConnectorWriteError: Error when writing to the connector. (AirbyteConnectorWriteError)
------------------------------------------------------------
AirbyteConnectorWriteError: Error when writing to the connector.
    Please review the log file for more information.
    Connector Name: 'destination-duckdb'
------------------------------------------------------------
Caused by: Connector failed. (AirbyteConnectorFailedError)
------------------------------------------------------------
AirbyteConnectorFailedError: Connector failed.
    Please review the log file for more information.
    Connector Name: 'destination-duckdb'
    Exit Code: 1
    Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFJR332.log:
------------------------------------------------------------2026-01-08 18:58:32 - INFO - Begin writing to the destination...
2026-01-08 18:58:32 - INFO - Starting write to DuckDB with 1 streams
2026-01-08 18:58:32 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
Traceback (most recent call last):
  File "/usr/local/bin/destination-duckdb", line 6, in <module>
    sys.exit(run())
             ^^^^^
  File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
    DestinationDuckdb().run(sys.argv[1:])
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
    for message in output_messages:
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
  File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
2026-01-08 18:58:32 - ERROR - Something went wrong in the connector. See the logs for more details.
2026-01-08 18:58:32 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898712860.204, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}


------------------------------------------------------------
    Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFJR332.log:
------------------------------------------------------------2026-01-08 18:58:32 - INFO - Begin writing to the destination...
2026-01-08 18:58:32 - INFO - Starting write to DuckDB with 1 streams
2026-01-08 18:58:32 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
Traceback (most recent call last):
  File "/usr/local/bin/destination-duckdb", line 6, in <module>
    sys.exit(run())
             ^^^^^
  File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
    DestinationDuckdb().run(sys.argv[1:])
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
    for message in output_messages:
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
  File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
  File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
2026-01-08 18:58:32 - ERROR - Something went wrong in the connector. See the logs for more details.
2026-01-08 18:58:32 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898712860.204, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}


------------------------------------------------------------
new_duckdb_destination = <airbyte.destinations.base.Destination object at 0x7f9dd159b4f0>
new_source_faker = <airbyte.sources.base.Source object at 0x7f9dd31ff220>

    def test_destination_write_from_read_result(
        new_duckdb_destination: Destination,
        new_source_faker: Source,
    ) -> None:
        """Test the JSONL destination."""
        cache = new_local_cache()
        read_result = new_source_faker.read(cache=cache)
>       write_result: WriteResult = new_duckdb_destination.write(
            source_data=read_result,
            streams="*",
            write_strategy=WriteStrategy.AUTO,
            force_full_refresh=False,
        )

tests/integration_tests/destinations/test_source_to_destination.py:146: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
airbyte/destinations/base.py:227: in write
    self._write_airbyte_message_stream(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <airbyte.destinations.base.Destination object at 0x7f9dd159b4f0>
stdin = <airbyte._message_iterators.AirbyteMessageIterator object at 0x7f9dd2f3df00>

    def _write_airbyte_message_stream(
        self,
        stdin: IO[str] | AirbyteMessageIterator,
        *,
        catalog_provider: CatalogProvider,
        write_strategy: WriteStrategy,
        state_writer: StateWriterBase | None = None,
        progress_tracker: ProgressTracker,
    ) -> None:
        """Read from the connector and write to the cache."""
        # Run optional validation step
        if state_writer is None:
            state_writer = StdOutStateWriter()
    
        # Apply the write strategy to the catalog provider before sending to the destination
        catalog_provider = catalog_provider.with_write_strategy(write_strategy)
    
        with as_temp_files(
            files_contents=[
                self._hydrated_config,
                catalog_provider.configured_catalog.model_dump_json(exclude_none=True),
            ]
        ) as [
            config_file,
            catalog_file,
        ]:
            try:
                # We call the connector to write the data, tallying the inputs and outputs
                for destination_message in progress_tracker.tally_confirmed_writes(
                    messages=self._execute(
                        args=[
                            "write",
                            "--config",
                            config_file,
                            "--catalog",
                            catalog_file,
                        ],
                        stdin=AirbyteMessageIterator(
                            progress_tracker.tally_pending_writes(
                                stdin,
                            )
                        ),
                    )
                ):
                    if destination_message.state:
                        state_writer.write_state(state_message=destination_message.state)
    
            except exc.AirbyteConnectorFailedError as ex:
>               raise exc.AirbyteConnectorWriteError(
                    connector_name=self.name,
                    log_text=self._last_log_messages,
                    original_exception=ex,
                ) from None
E               airbyte.exceptions.AirbyteConnectorWriteError: Error when writing to the connector. (AirbyteConnectorWriteError)
E               ------------------------------------------------------------
E               AirbyteConnectorWriteError: Error when writing to the connector.
E                   Please review the log file for more information.
E                   Connector Name: 'destination-duckdb'
E               ------------------------------------------------------------
E               Caused by: Connector failed. (AirbyteConnectorFailedError)
E               ------------------------------------------------------------
E               AirbyteConnectorFailedError: Connector failed.
E                   Please review the log file for more information.
E                   Connector Name: 'destination-duckdb'
E                   Exit Code: 1
E                   Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFJR332.log:
E               ------------------------------------------------------------2026-01-08 18:58:32 - INFO - Begin writing to the destination...
E               2026-01-08 18:58:32 - INFO - Starting write to DuckDB with 1 streams
E               2026-01-08 18:58:32 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               Traceback (most recent call last):
E                 File "/usr/local/bin/destination-duckdb", line 6, in <module>
E                   sys.exit(run())
E                            ^^^^^
E                 File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
E                   DestinationDuckdb().run(sys.argv[1:])
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
E                   for message in output_messages:
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
E                   yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
E                   yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
E                 File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
E                   con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
E                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E               _duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               2026-01-08 18:58:32 - ERROR - Something went wrong in the connector. See the logs for more details.
E               2026-01-08 18:58:32 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898712860.204, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}
E               
E               
E               ------------------------------------------------------------
E                   Full log file text from /tmp/airbyte/logs/destination-duckdb/destination-duckdb-log-KEFFJR332.log:
E               ------------------------------------------------------------2026-01-08 18:58:32 - INFO - Begin writing to the destination...
E               2026-01-08 18:58:32 - INFO - Starting write to DuckDB with 1 streams
E               2026-01-08 18:58:32 - INFO - IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               Traceback (most recent call last):
E                 File "/usr/local/bin/destination-duckdb", line 6, in <module>
E                   sys.exit(run())
E                            ^^^^^
E                 File "/airbyte/integration_code/destination_duckdb/run.py", line 9, in run
E                   DestinationDuckdb().run(sys.argv[1:])
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 119, in run
E                   for message in output_messages:
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 113, in run_cmd
E                   yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)
E                 File "/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py", line 49, in _run_write
E                   yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)
E                 File "/airbyte/integration_code/destination_duckdb/destination.py", line 90, in write
E                   con = duckdb.connect(database=path, read_only=False, config=duckdb_config)
E                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E               _duckdb.IOException: IO Error: Cannot open file "/local/temp/db.duckdb": No such file or directory
E               2026-01-08 18:58:32 - ERROR - Something went wrong in the connector. See the logs for more details.
E               2026-01-08 18:58:32 - INFO - {"type": "TRACE", "trace": {"type": "ERROR", "emitted_at": 1767898712860.204, "error": {"message": "Something went wrong in the connector. See the logs for more details.", "internal_message": "IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory", "stack_trace": "Traceback (most recent call last):\n  File \"/usr/local/bin/destination-duckdb\", line 6, in <module>\n    sys.exit(run())\n             ^^^^^\n  File \"/airbyte/integration_code/destination_duckdb/run.py\", line 9, in run\n    DestinationDuckdb().run(sys.argv[1:])\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 119, in run\n    for message in output_messages:\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 113, in run_cmd\n    yield from self._run_write(config=config, configured_catalog_path=parsed_args.catalog, input_stream=wrapped_stdin)\n  File \"/usr/local/lib/python3.11/site-packages/airbyte_cdk/destinations/destination.py\", line 49, in _run_write\n    yield from self.write(config=config, configured_catalog=catalog, input_messages=input_messages)\n  File \"/airbyte/integration_code/destination_duckdb/destination.py\", line 90, in write\n    con = duckdb.connect(database=path, read_only=False, config=duckdb_config)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n_duckdb.IOException: IO Error: Cannot open file \"/local/temp/db.duckdb\": No such file or directory\n", "failure_type": "system_error"}}}
E               
E               
E               ------------------------------------------------------------

airbyte/destinations/base.py:297: AirbyteConnectorWriteError

Check warning on line 0 in tests.integration_tests.test_source_faker_integration

See this annotation in the file changed.

@github-actions github-actions / PyTest Results (Full)

test_merge_insert_not_supported_for_duckdb (tests.integration_tests.test_source_faker_integration) failed

build/test-results/test-results.xml [took 14s]
Raw output
AssertionError: Cache supports merge-insert, but it's set to False.
source_faker_seed_a = <airbyte.sources.base.Source object at 0x7f9da2e83f70>
duckdb_cache = DuckDBCache(schema_name='main', table_prefix='', cache_dir=PosixPath('/home/runner/work/PyAirbyte/PyAirbyte/.cache/01K...ixPath('/home/runner/work/PyAirbyte/PyAirbyte/.cache/01KEFFPR8X3H6W0AJ62VZ5J12X/db_01KEFFPR8X3H6W0AJ62VZ5J12X.duckdb'))
mocker = <pytest_mock.plugin.MockerFixture object at 0x7f9da2e83190>

    def test_merge_insert_not_supported_for_duckdb(
        source_faker_seed_a: ab.Source,
        duckdb_cache: DuckDBCache,
        mocker: pytest_mock.MockFixture,
    ) -> None:
        """Confirm that duckdb does not support merge insert natively"""
        if DuckDBSqlProcessor.supports_merge_insert:
            return  # Skip this test if the cache supports merge-insert.
    
        # Otherwise, toggle the value and we should expect an exception.
        mocker.patch.object(DuckDBSqlProcessor, "supports_merge_insert", new=True)
        try:
            result = source_faker_seed_a.read(
                duckdb_cache, write_strategy=WriteStrategy.MERGE
            )
            result = source_faker_seed_a.read(
                duckdb_cache, write_strategy=WriteStrategy.MERGE
            )
            if result:
                raise AssertionError("Cache supports merge-insert, but it's set to False.")
        except Exception as e:
            print(f"An exception occurred: {e}")
            if isinstance(e, AssertionError):
>               raise e

tests/integration_tests/test_source_faker_integration.py:278: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

source_faker_seed_a = <airbyte.sources.base.Source object at 0x7f9da2e83f70>
duckdb_cache = DuckDBCache(schema_name='main', table_prefix='', cache_dir=PosixPath('/home/runner/work/PyAirbyte/PyAirbyte/.cache/01K...ixPath('/home/runner/work/PyAirbyte/PyAirbyte/.cache/01KEFFPR8X3H6W0AJ62VZ5J12X/db_01KEFFPR8X3H6W0AJ62VZ5J12X.duckdb'))
mocker = <pytest_mock.plugin.MockerFixture object at 0x7f9da2e83190>

    def test_merge_insert_not_supported_for_duckdb(
        source_faker_seed_a: ab.Source,
        duckdb_cache: DuckDBCache,
        mocker: pytest_mock.MockFixture,
    ) -> None:
        """Confirm that duckdb does not support merge insert natively"""
        if DuckDBSqlProcessor.supports_merge_insert:
            return  # Skip this test if the cache supports merge-insert.
    
        # Otherwise, toggle the value and we should expect an exception.
        mocker.patch.object(DuckDBSqlProcessor, "supports_merge_insert", new=True)
        try:
            result = source_faker_seed_a.read(
                duckdb_cache, write_strategy=WriteStrategy.MERGE
            )
            result = source_faker_seed_a.read(
                duckdb_cache, write_strategy=WriteStrategy.MERGE
            )
            if result:
>               raise AssertionError("Cache supports merge-insert, but it's set to False.")
E               AssertionError: Cache supports merge-insert, but it's set to False.

tests/integration_tests/test_source_faker_integration.py:274: AssertionError