Skip to content

feat(ibis): bump ibis to 10.0.0 #1060

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Feb 14, 2025

Conversation

goldmedal
Copy link
Contributor

@goldmedal goldmedal commented Feb 12, 2025

Changed

MySQL

MSSQL

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features

    • Enhanced MySQL connectivity with SSL enabled by default.
    • Upgraded core dependencies to broaden compatibility and support an optional MySQL client.
    • Added documentation for MySQL Server requirements, including installation instructions for client libraries.
  • Bug Fixes

    • Standardized query responses: Date fields now return full timestamps (with a midnight time component) for improved clarity.
    • Improved error messages for MySQL SSL connection issues, aiding in clearer troubleshooting.

@github-actions github-actions bot added bigquery ibis dependencies Pull requests that update a dependency file python Pull requests that update Python code labels Feb 12, 2025
Copy link

coderabbitai bot commented Feb 12, 2025

Warning

Rate limit exceeded

@goldmedal has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 6 minutes and 14 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 03d5f44 and 7dac18e.

📒 Files selected for processing (1)
  • ibis-server/docs/development.md (1 hunks)

Walkthrough

This pull request makes several updates across the project. In the core files, the Dockerfile now installs the MySQL client library, the default SSL mode for MySQL connections is changed from None to "ENABLED", and dependency versions (plus an optional dependency for mysqlclient) have been updated in the project configuration. Numerous test files have been modified to update expected date outputs from simple date strings to full timestamp formats (e.g., "1996-01-02" to "1996-01-02 00:00:00.000000"), along with adjustments in import statements and error message expectations for MySQL and PostgreSQL tests.

Changes

Files Change Summary
ibis-server/Dockerfile, ibis-server/app/model/__init__.py, ibis-server/pyproject.toml Added MySQL client installation in Dockerfile; updated default ssl_mode in MySqlConnectionInfo; upgraded dependency versions and added optional mysqlclient.
ibis-server/.../test_bigquery.py, ibis-server/.../test_canner.py, ibis-server/.../test_clickhouse.py, ibis-server/.../test_mssql.py, ibis-server/.../test_snowflake.py, ibis-server/.../test_trino.py, ibis-server/.../bigquery/test_functions.py, ibis-server/.../bigquery/test_query.py, ibis-server/.../postgres/test_query.py Updated expected date outputs to a full timestamp format (adding "00:00:00.000000") and adjusted indexing in ClickHouse metadata tests.
ibis-server/.../test_mysql.py Modified MySQL connection handling: switched error import from pymysql to MySQLdb, updated SSL authentication adjustments, refined the error message, and revised the expected timestamp.
ibis-server/.../test_postgres.py Changed PostgreSQL library import from psycopg2 to psycopg and adjusted error handling in the dry run test.

Possibly related PRs

  • feat(ibis): Enabled Passwordless Connection for Data Sources BE #1043: The changes in the main PR, which involve adding a MySQL client library installation in the Dockerfile, are related to the modifications in the retrieved PR that update the MySqlConnectionInfo class to allow for passwordless connections, as both pertain to MySQL connectivity enhancements.
  • chore(ibis): Support additional PyMySQL configuration via kwargs #1018: The changes in the main PR, which involve adding the MySQL client library installation in the Dockerfile, are related to the modifications in the retrieved PR that enhance the MySqlConnectionInfo class to support additional configurations for MySQL connections, including SSL settings. Both PRs focus on improving MySQL connectivity features.

Suggested labels

core

Suggested reviewers

  • onlyjackfrost

Poem

In a burrow soft and snug, I hop with glee,
Changes new and tweaks so free,
Docker builds and tests all shine,
Timestamps hop in perfect time,
MySQL and Postgres sing in tune,
A coder's delight under the moon.
🐰💻 Hop along and code!


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
ibis-server/tests/routers/v2/connector/test_trino.py (1)

115-115: LGTM! Date format standardization is complete.

The update to use full timestamp format completes the standardization across all database connectors. This change in ibis 10.0.0 ensures consistent date handling regardless of the underlying database.

Consider documenting this breaking change in the upgrade guide to help users update their date format expectations.

ibis-server/Dockerfile (1)

52-54: Optimize image size by combining package installations.

While the MySQL client library installation is correctly placed, it should be combined with the PostgreSQL client installation to ensure proper cleanup of apt lists and minimize the image size.

Apply this diff to optimize the Dockerfile:

-# Install libmysqlclient-dev for mysql
-RUN apt-get install -y default-libmysqlclient-dev
-
# libpq-dev is required for psycopg2
-RUN apt-get -y install libpq-dev \
+# Install database client libraries
+RUN apt-get -y install \
+    default-libmysqlclient-dev \
+    libpq-dev \
    && rm -rf /var/lib/apt/lists/*
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3c928e0 and 71209ca.

⛔ Files ignored due to path filters (1)
  • ibis-server/poetry.lock is excluded by !**/*.lock
📒 Files selected for processing (14)
  • ibis-server/Dockerfile (1 hunks)
  • ibis-server/app/model/__init__.py (1 hunks)
  • ibis-server/pyproject.toml (2 hunks)
  • ibis-server/tests/routers/v2/connector/test_bigquery.py (1 hunks)
  • ibis-server/tests/routers/v2/connector/test_canner.py (1 hunks)
  • ibis-server/tests/routers/v2/connector/test_clickhouse.py (2 hunks)
  • ibis-server/tests/routers/v2/connector/test_mssql.py (1 hunks)
  • ibis-server/tests/routers/v2/connector/test_mysql.py (4 hunks)
  • ibis-server/tests/routers/v2/connector/test_postgres.py (3 hunks)
  • ibis-server/tests/routers/v2/connector/test_snowflake.py (1 hunks)
  • ibis-server/tests/routers/v2/connector/test_trino.py (1 hunks)
  • ibis-server/tests/routers/v3/connector/bigquery/test_functions.py (1 hunks)
  • ibis-server/tests/routers/v3/connector/bigquery/test_query.py (1 hunks)
  • ibis-server/tests/routers/v3/connector/postgres/test_query.py (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: ci
🔇 Additional comments (18)
ibis-server/tests/routers/v3/connector/bigquery/test_functions.py (1)

97-97: LGTM: Date format standardization.

The updated date format aligns with ibis 10.0.0's standardized timestamp format for date values.

ibis-server/tests/routers/v3/connector/bigquery/test_query.py (1)

87-87: LGTM: Consistent date format update.

The date format change aligns with ibis 10.0.0's standardized timestamp format.

ibis-server/tests/routers/v2/connector/test_snowflake.py (1)

93-93: LGTM: Standardized date format.

The updated date format is consistent with ibis 10.0.0's standardized timestamp format across all connectors.

ibis-server/tests/routers/v3/connector/postgres/test_query.py (1)

121-121: LGTM! Note the breaking change in date format.

The update to use full timestamp format "1996-01-02 00:00:00.000000" aligns with ibis 10.0.0's standardized date handling. This is a breaking change that may affect consumers expecting the previous date-only format.

✅ Verification successful

🌐 Web query:

What are the date handling changes in ibis 10.0.0?

💡 Result:

Ibis 10.0 introduced several significant changes to date and timestamp handling through API standardization and new features:

Date/Timestamp Construction Changes

  • Component-based creation now requires explicit positional arguments without timezone support:
    # Valid component usage
    ibis.date(2023, 1, 2)
    ibis.timestamp(2023, 1, 2, 3, 4, 5)
    
    # Timezone specification prohibited with components
    ibis.timestamp(2023, 1, 2, tz="UTC")  # Raises NotImplementedError[1][4]
  • String parsing remains supported:
    ibis.date("2023-01-02")
    ibis.timestamp("2023-01-02T03:04:05")

API Standardization

  • Temporal methods became positional-only:
    • as_timestamp(unit) argument position enforced[4]
    • StringValue.as_time() added for string-to-time conversion[4]
  • Scalar return types changed from numpy to native Python objects:
    # Before: numpy.datetime64
    # Now: datetime.date
    expr = ibis.date(2023, 1, 2)
    expr.execute()  # returns datetime.date(2023, 1, 2)[4]

Backend Changes Affecting Dates

  • Pandas backend removal requires using DuckDB/DataFusion for DataFrame operations:
    # Still valid but executes through different backend
    df = pd.DataFrame({'date': ['2023-01-01']})
    t = ibis.memtable(df)[4][7]
  • Schema handling standardized across backends for temporal types[4][7]

These changes improve consistency across Ibis backends while requiring explicit temporal component specification. Users converting from older versions should update timestamp construction patterns and expect native Python date objects instead of numpy types[1][4][7].

Citations:


LGTM! Date format update aligns with ibis 10.0.0's new timestamp handling.

The change to using "1996-01-02 00:00:00.000000" matches the updated string parsing behavior in ibis 10.0.0, which now standardizes full timestamp representations rather than date-only formats. This is a breaking change that consumers need to be aware of, but the test adjustment correctly reflects the new behavior.

ibis-server/tests/routers/v2/connector/test_canner.py (1)

98-98: LGTM! Date format change is consistent.

The update to use full timestamp format matches the standardized date handling across all connectors.

ibis-server/tests/routers/v2/connector/test_bigquery.py (1)

94-94: LGTM! Date format change is consistent.

The update to use full timestamp format maintains consistency with other database connectors.

ibis-server/tests/routers/v2/connector/test_mssql.py (1)

128-128: LGTM: Date format standardization.

The change from "1996-01-02" to "1996-01-02 00:00:00.000000" aligns with the standardization of date formats across all database connectors, ensuring consistent timestamp handling after the ibis upgrade.

ibis-server/tests/routers/v2/connector/test_mysql.py (4)

5-8: LGTM: Import changes for MySQL authentication.

The import changes support the new authentication flow:

  • Added pymysql for initial connection to change authentication plugin
  • Updated OperationalError import to use MySQLdb which is used by ibis

120-138: Well-documented MySQL authentication workaround.

The implementation and comments clearly explain the need to change the authentication plugin from caching_sha2_password to mysql_native_password when SSL is disabled. This is necessary because:

  1. MySQL's default caching_sha2_password requires SSL
  2. MysqlDB (used by ibis) only supports caching_sha2_password with SSL

441-445: LGTM: Improved SSL error message.

The updated error message "SSL connection error: SSL is required but the server doesn't support it" provides better clarity about the SSL requirement compared to the previous generic "Bad handshake" message.


163-163: LGTM: Date format standardization.

The change from "1996-01-02" to "1996-01-02 00:00:00.000000" aligns with the standardization of date formats across all database connectors, ensuring consistent timestamp handling after the ibis upgrade.

ibis-server/tests/routers/v2/connector/test_clickhouse.py (2)

183-183: LGTM: Date format standardization.

The change from "1996-01-02" to "1996-01-02 00:00:00.000000" aligns with the standardization of date formats across all database connectors, ensuring consistent timestamp handling after the ibis upgrade.


522-522: Verify the change in table ordering.

The change from response.json()[1] to response.json()[0] suggests a change in how tables are ordered in the response after the ibis upgrade.

✅ Verification successful

🏁 Script executed:

#!/bin/bash
# Description: Check if the orders table is consistently the first table in the response.

# Test: Search for test_metadata_list_tables implementations across all connectors.
# Expect: Similar changes in array indexing.
rg -A 5 'test_metadata_list_tables'

Length of output: 7021


I'll inspect the surrounding lines of ibis-server/tests/routers/v2/connector/test_clickhouse.py around line 522 to verify the intended ordering change. Let’s view lines 520–525 to see how the response is being indexed.


🏁 Script executed:

#!/bin/bash
sed -n '520,525p' ibis-server/tests/routers/v2/connector/test_clickhouse.py

Length of output: 296


Verification Confirmed: Table Ordering Updated

The test now explicitly asserts that the table at index 0 is "test.orders" (i.e. assert result["name"] == "test.orders"). This confirms that the ordering change following the ibis upgrade is deliberate and correctly validated in the clickhouse tests.

ibis-server/tests/routers/v2/connector/test_postgres.py (3)

146-146: LGTM: Date format standardization.

The change from "1996-01-02" to "1996-01-02 00:00:00.000000" aligns with the standardization of date formats across all database connectors, ensuring consistent timestamp handling after the ibis upgrade.


299-301: LGTM: Improved error message pattern matching.

The change to use a regex pattern r'.*FATAL: password authentication failed for user "test".*' provides more flexible matching of PostgreSQL authentication error messages.


6-6: Verify psycopg version compatibility.

The change from psycopg2 to psycopg indicates an upgrade to a newer PostgreSQL driver. Please verify compatibility with the latest version.

✅ Verification successful

🌐 Web query:

What is the latest version of psycopg and what are the key differences from psycopg2?

💡 Result:

The latest version of Psycopg is 3.2.4 (released January 15, 2025)[8], with Psycopg 3 representing a major evolution from Psycopg2 (last updated in October 2024)[6]. Here are the key differences between Psycopg3 and Psycopg2:

Architecture and Design

  • Language base:
    • Psycopg2: Primarily written in C[2][6].
    • Psycopg3: Mostly Python with optional C acceleration[2][7].
  • Dependencies:
    • Psycopg3 simplifies installation with pre-compiled bundles (psycopg package)[2], while Psycopg2 requires separate psycopg2/psycopg2-binary packages[5][6].

Feature Comparison

Feature Psycopg2 Psycopg3
Python Support Up to Python 3.12[6] Up to Python 3.13[2][8]
PostgreSQL Support PostgreSQL 7.4–17[2] PostgreSQL 10–17[2]
Async Support Limited (via third-party libs)[2] Native async/await support[2][7]
COPY Operations File-based interface[3][7] Object-oriented API for dynamic data[7]
Prepared Statements Not supported[2] Automatic or opt-in usage[2][7]
Type Adaptation Basic type mapping[3] Advanced support (JSONB, ranges)[2][7]

Performance Improvements

Psycopg3 shows ~300% faster data retrieval speeds in benchmarks compared to Psycopg2 (500k vs 150k rows/sec)[9]. This stems from:

  • Binary protocol usage
  • Pipeline mode for batch operations[2]
  • Optimized memory management

API Changes

  1. Multi-statement execution:

    • Psycopg2 returns only last query's results
    • Psycopg3 provides access to all results via cursor.nextset()[7]
    # Psycopg3 example:
    cur.execute("SELECT 1; SELECT 2")
    print(cur.fetchall())  # [(1,)]
    cur.nextset()
    print(cur.fetchall())  # [(2,)][8]
  2. Context managers:

    • Closing connection context manager now terminates transactions and connections[3][7]

Compatibility Notes

While maintaining DBAPI 2.0 compliance:

  • Requires libpq v17 for full feature set (PostgreSQL ≥17)[1]
  • Default date handling avoids automatic infinity conversions[7]

For new projects, Psycopg3 is recommended due to its modern feature set and performance gains[2][9]. Existing systems using Psycopg2 remain supported but won't receive new features[6].

Citations:


Psycopg Upgrade Confirmed

The upgrade from psycopg2 to psycopg is valid. The latest version (3.2.4) brings major enhancements—such as native async support, improved performance, and modern API changes—that justify its use in new projects. Just ensure that any features affected by the API changes (e.g., multi-statement execution and context management) are fully tested in your integration.

ibis-server/pyproject.toml (2)

36-36: Consider making mysqlclient a required dependency.

Since MySQL support is included in the ibis-framework extras and the Dockerfile installs the MySQL client library by default, consider making mysqlclient a required dependency instead of optional.

Let's verify if mysqlclient is required for MySQL support in ibis-framework 10.0.0:

✅ Verification successful

🌐 Web query:

Is mysqlclient required for MySQL support in ibis-framework 10.0.0?

💡 Result:

To use MySQL with ibis-framework 10.0.0, mysqlclient is required. This change was introduced when Ibis switched from using pymysql to the MySQLdb driver (provided by mysqlclient) for MySQL connectivity[7].

Key details:

  • The mysqlclient package provides the MySQLdb interface needed by Ibis's MySQL backend[6][7].
  • Installation requires either:
    pip install 'ibis-framework[mysql]'  # Installs mysqlclient as a dependency
    or explicit installation via pip install mysqlclient[1][6].
  • Some systems may require additional MySQL client libraries (e.g., via brew install mysql-client on macOS or system packages like libmysqlclient-dev on Ubuntu)[3][6].

This requirement applies specifically to ibis-framework versions ≥10.x that implemented this backend switch[7]. Earlier versions used different drivers without requiring mysqlclient.

Citations:


Make mysqlclient a required dependency. The web result confirms that in ibis-framework 10.0.0, mysqlclient is essential for MySQL connectivity. Given that MySQL support is provided via the extras (and the Dockerfile already installs the MySQL client library), it's appropriate to remove the optional flag from the dependency in ibis-server/pyproject.toml (line 36).

  • File Impacted: ibis-server/pyproject.toml (line 36)

13-21: Verify breaking changes in ibis-framework 10.0.0.

The major version bump from 9.5.0 to 10.0.0 could introduce breaking changes.

Let's check the changelog and release notes:

✅ Verification successful

🌐 Web query:

What are the breaking changes in ibis-framework 10.0.0?

💡 Result:

The release of Ibis 10.0.0 introduces several breaking changes across APIs, backends, and configurations:

API Standardization

  • Positional-only arguments enforced for:
    • Interval/timestamp units (as_interval, as_timestamp)
    • Table operations (drop_null, fill_null, window_by, alias, sample, aggregate)
    • Set operations (union, intersect, etc.)
    • Type casting (cast, try_cast)
    • Window functions (nth, ntile, preceding/following ranges)
    • Join conditions (how parameter keyword-only)
  • Required keyword arguments added for:
    • Struct type definitions (struct(..., type=...))
    • Aggregate function filters (where=...)
    • Geospatial distance checks (d_within(distance=...))

Backend-Specific Changes

DuckDB:

  • CSV type specifications require DuckDB-native type names (e.g., "double" instead of "float64") [1]
  • Removed read_in_memory() – use ibis.memtable() instead [1]
  • Bumped minimum version to v0.10 with storage compatibility requirements [1]

MySQL:

  • Switched driver from PyMySQL to MySQLdb (may require client library updates) [1]

Removed Backends:

  • Pandas and Dask execution backends removed – use DuckDB/Polars/DataFusion for pandas DataFrames [1]

Major Feature Removals

  • Deprecated methods deleted:
    • Table.relabel()
    • StringValue.initcap() (use .capitalize())
    • Top-level geo functions (moved to column methods)
    • .greatest()/.least() column methods (use ibis.greatest()/ibis.least())
  • Configuration system:
    • Removed legacy option_context manager [1]
  • In-memory joins with pandas/pyarrow objects now require explicit .memtable() conversion [1]

Behavioral Changes

  • Scalar values returned as native Python types instead of numpy objects [1]
  • String padding operations now follow Python semantics (leave long strings untouched) [1]
  • Schema/database terminology standardized:
    • schema: Column name → type mapping
    • database: Table collection
    • catalog: Database collection

These changes aim to standardize APIs across backends and simplify Ibis' architecture while maintaining compatibility with pandas DataFrames as input/output formats through other supported engines like DuckDB[1][7]. Users should audit their code for deprecated method usage and update type specifications/argument positions where needed[1][5].

Citations:


Bump to ibis-framework 10.0.0 – Confirmed Breaking Changes

The web query confirms that upgrading to ibis-framework 10.0.0 introduces several breaking changes. Notable updates include:

  • API Standardization:

    • Enforced positional-only arguments for various functions (e.g., interval/timestamp conversions, table operations, type casting, window functions, join parameters).
    • Required keyword arguments for struct type definitions, aggregate filters, and geospatial distance checks.
  • Backend-Specific Changes:

    • In DuckDB, CSV type specifications now require DuckDB-native type names and the removal of read_in_memory().
    • For MySQL, a switch from PyMySQL to MySQLdb may require client library updates.
  • Removed Backends & Deprecated Methods:

    • Removal of Pandas and Dask execution backends in favor of using alternatives such as DuckDB or Polars.
    • Deprecated methods like Table.relabel(), StringValue.initcap(), and others have been removed in favor of updated APIs.
  • Behavioral Adjustments:

    • Scalar values now return as native Python types instead of numpy objects.
    • Changes in string padding semantics and standardization of schema/database terminology.

These changes are well-documented in the release notes and require a review of any dependent code to ensure compatibility.

@github-actions github-actions bot added the documentation Improvements or additions to documentation label Feb 12, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
ibis-server/docs/development.md (3)

98-98: Fix grammar in the introduction sentence.

There's a grammatical error in this sentence.

-If you want run tests related to MySQL Server
+If you want to run tests related to MySQL Server
🧰 Tools
🪛 LanguageTool

[grammar] ~98-~98: Did you mean “to run”?
Context: ...No driver for MySQL Server If you want run tests related to MySQL Server or connec...

(MISSING_TO_BEFORE_A_VERB)


99-99: Fix grammar and improve clarity in the Linux instructions.

The sentence has incorrect preposition usage and could be clearer.

-- For linux, you can install `libmysqlclient-dev`. By the way, there are some different names for different linux versions. You should take care about it.
+- For Linux, you can install `default-libmysqlclient-dev`. Note that package names may vary across different Linux distributions.
🧰 Tools
🪛 LanguageTool

[grammar] ~99-~99: The correct preposition in this context would be “of”.
Context: ...nt linux versions. You should take care about it. - For Mac, you can install `mysql-c...

(TAKE_CARE_ABOUT)


101-101: Fix typo in the Windows instructions.

There's a typo in "dowanload".

-- For Windows, you can dowanload [the libraries](https://dev.mysql.com/downloads/c-api)
+- For Windows, you can download [the libraries](https://dev.mysql.com/downloads/c-api)
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 992f42a and 03d5f44.

📒 Files selected for processing (2)
  • ibis-server/docs/development.md (1 hunks)
  • ibis-server/tests/routers/v2/connector/test_clickhouse.py (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • ibis-server/tests/routers/v2/connector/test_clickhouse.py
🧰 Additional context used
🪛 LanguageTool
ibis-server/docs/development.md

[grammar] ~98-~98: Did you mean “to run”?
Context: ...No driver for MySQL Server If you want run tests related to MySQL Server or connec...

(MISSING_TO_BEFORE_A_VERB)


[grammar] ~99-~99: The correct preposition in this context would be “of”.
Context: ...nt linux versions. You should take care about it. - For Mac, you can install `mysql-c...

(TAKE_CARE_ABOUT)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: ci

Comment on lines +115 to +119
ssl_mode: SecretStr | None = Field(
alias="sslMode",
default="ENABLED",
description="Use ssl connection or not. The default value is `ENABLED` because MySQL uses `caching_sha2_password` by default and the driver MySQLdb support caching_sha2_password with ssl only.",
)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The ssl_model is enabled by default because ibis ports to MySQLdb that only support caching_sha2_password with SSL.
c.c @ongdisheng who implements this.

@goldmedal goldmedal requested a review from douenergy February 12, 2025 09:46
@goldmedal
Copy link
Contributor Author

There are some issues with the BigQuery secret. Let's ignore the CI fails of BigQuery testing.
I have tested BigQuery on my laptop.

@douenergy
Copy link
Contributor

LTGM !
I have tested locally, and all bigquery tests also passed.

@douenergy douenergy merged commit 90cd416 into Canner:main Feb 14, 2025
4 of 5 checks passed
@goldmedal goldmedal deleted the chore/upgrade-ibis-10.0.0 branch February 14, 2025 06:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bigquery dependencies Pull requests that update a dependency file documentation Improvements or additions to documentation ibis python Pull requests that update Python code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Enable the connection string test for MSSQL
2 participants