alberttwong opened a new issue, #45937:
URL: https://github.com/apache/superset/issues/45937

   ### Bug description
   
   Testing Superset **7.0.0rc2** against a generic Arrow Flight SQL endpoint 
exposed source-install packaging problems and incomplete metadata discovery 
with sqlalchemy-adbc. Reads **and writes** work once installation is resolved, 
but compatibility is partial.
   
   The metadata failures reproduce in SQLAlchemy Inspector before Superset, so 
this report does **not** attribute those adapter defects to Superset. The 
Superset-specific findings are the source/core dependency mismatch, a missing 
CLI dependency, and the resulting application behavior.
   
   ## Source-install reproduction
   
   From a fresh Python 3.12 virtual environment:
   
   ```sh
   git clone --depth 1 --branch 7.0.0rc2 https://github.com/apache/superset.git
   python -m pip install ./superset 'sqlalchemy-adbc[flightsql]==0.3.0'
   ```
   
   Observed resolver conflict:
   
   ```text
   apache-superset 7.0.0 depends on sqlalchemy<2.1 and >=2.0.52
   sqlalchemy-adbc 0.3.0 depends on sqlalchemy>=2.0
   apache-superset-core 0.1.0 depends on sqlalchemy<2.0 and >=1.4.0
   ERROR: ResolutionImpossible
   ```
   
   Installing the matching core from the same source tree resolves it:
   
   ```sh
   python -m pip install ./superset ./superset/superset-core 
'sqlalchemy-adbc[flightsql]==0.3.0'
   ```
   
   This selected core 0.2.0 and SQLAlchemy 2.0.55. Related existing report: 
#42568 concerns stale-core selection in the extensions CLI; this reproduces it 
for the root 7.0.0rc2 application install.
   
   Next, invoking superset db upgrade with isolated SQLite metadata failed 
while importing CLI commands:
   
   ```text
   File ".../superset/cli/test_db.py", line 27, in <module>
       from rich.console import Console
   ModuleNotFoundError: No module named 'rich'
   ```
   
   After installing rich, migrations and superset init succeeded. pip check 
reported no broken requirements. No --no-deps, constraint edits, or adapter 
patches were used.
   
   Expected: a fresh source installation resolves a compatible core and 
declares dependencies needed to invoke its CLI, or the release-candidate 
instructions explicitly cover these requirements.
   
   ## Flight SQL reproduction
   
   Backend: https://github.com/redis/redis-apache-arrow-flight at 
f8a2723b737626eec3dc1ec529f9ebf3d70ff21f, community build, backed by disposable 
Redis 8.6.2 with Search. Local plaintext endpoint: 127.0.0.1:18915.
   
   Versions: sqlalchemy-adbc 0.3.0, adbc-driver-flightsql/manager 1.13.0, 
PyArrow 25.0.1.
   
   Create a fixture:
   
   ```python
   import pyarrow as pa
   from adbc_driver_flightsql import dbapi
   with dbapi.connect('grpc://127.0.0.1:18915', autocommit=True) as conn:
       with conn.cursor() as cur:
           cur.adbc_ingest('superset7_orders', pa.table({
               'id': [1, 2, 3, 4],
               'region': ['west', 'east', 'west', 'east'],
               'amount': pa.array([10., 20., 30., None], type=pa.float64()),
           }), mode='replace')
   ```
   
   Superset URI:
   
   ```text
   adbc+flightsql://127.0.0.1:18915?tls=false
   ```
   
   Extra:
   
   ```json
   {"engine_params":{"connect_args":{"autocommit":true}}}
   ```
   
   Enable DML for SQL Lab write testing.
   
   ## Observed through authenticated Superset API requests
   
   | Check | Result |
   | --- | --- |
   | Test Connection, database creation, schema discovery | Passed; public 
returned |
   | Table browsing | Empty list despite existing table |
   | Column discovery / explicit dataset creation | Names present, types NULL / 
UNKNOWN |
   | SQL Lab ordered SELECT, NULL, empty results, filtered SUM/GROUP BY | 
Passed with exact expected rows |
   | SQL Lab CREATE TABLE, INSERT, UPDATE, DELETE, DROP | Passed; write effects 
verified with reads through SQL Lab |
   | Chart data API: grouped SUM metric | Passed; east=20, west=40 |
   | SELECT after DROP | Correct missing-table message, returned as HTTP 500 / 
GENERIC_DB_ENGINE_ERROR |
   
   The write evidence is from SQL Lab itself, not just the fixture upload. 
Tests used the authenticated Flask test client against the real endpoint. 
Browser UI, rendered dashboards, time-series SQL, TLS/authentication, async 
workers, production load and the DataFusion-specific dialect were not tested.
   
   ## Metadata diagnosis / ownership
   
   Independent reproduction before Superset:
   
   ```python
   from sqlalchemy import create_engine, inspect
   engine = create_engine(
       'adbc+flightsql://127.0.0.1:18915?tls=false',
       connect_args={'autocommit': True},
   )
   i = inspect(engine)
   print(i.get_table_names(schema='public'))  # []
   print(i.get_columns('superset7_orders', schema='public'))
   # id, region, amount returned as NullType()
   ```
   
   Raw ADBC metadata reports table_type="TABLE"; adapter 0.3.0's 
reflection.table_names_from_tree() accepts only lowercase "table". Column 
xdbc_type_name is null, while xdbc_data_type has numeric codes -5, 12, 6. The 
adapter maps only the name and falls back to NullType.
   
   These reflection mismatches appear to need adapter-side handling rather than 
Superset changes. Generic Flight SQL queries and Superset writes are working in 
this test. Existing adapter tracking context: 
https://github.com/drls-io/sqlalchemy-adbc/issues/16.
   
   
   ### Screenshots/recordings
   
   _No response_
   
   ### Superset version
   
   master / latest-dev
   
   ### Python version
   
   3.12
   
   ### Node version
   
   Not applicable
   
   ### Browser
   
   Not applicable
   
   ### Additional context
   
   Exact Superset version: 7.0.0rc2 source, commit 
e4aee71493bdac25bbfb7be11084c11b1e7d31a5; package reports 7.0.0. The version 
dropdown has no 7.x option. Python 3.12.16 on macOS arm64. Tested November 1, 
2026. No Node build or browser rendering tested. Related core-package issue 
#42568 is acknowledged above; Slack was not searched. CLI traceback: 
superset/cli/test_db.py:27 imports rich.console.Console and raises 
ModuleNotFoundError: No module named rich until rich is installed.
   
   ### Checklist
   
   - [ ] I have searched Superset docs and Slack and didn't find a solution to 
my problem.
   - [ ] I have searched the GitHub issue tracker and didn't find a similar bug 
report.
   - [x] I have checked Superset's logs for errors and if I found a relevant 
Python stacktrace, I included it here as text in the "additional context" 
section.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to