mirror of
https://github.com/apache/superset.git
synced 2026-09-04 22:41:36 +00:00
sqlalchemy-monetdb mutates SQLAlchemy's shared, process-global compiler.OPERATORS mapping in place on import instead of subclassing it (OPERATORS = compiler.OPERATORS; OPERATORS[operators.ne] = " <> "). Once Superset's own get_available_engine_specs() enumerates the "monetdb" sqlalchemy.dialects entry point to build the "available databases" list (which happens on every app boot, not just when MonetDB is actually used), that changes `!=` rendering to `<>` for every dialect for the rest of the process -- breaking test_where_operators identically across the test-mysql/test-postgres/test-sqlite CI jobs, since installing the monetdb extra now pulls sqlalchemy-monetdb into their shared dev requirements. Snapshot/restore sqlalchemy.sql.compiler.OPERATORS around each third-party dialect entry point load so a misbehaving connector can't leak global compiler state just because it was enumerated here. Also fix the new mongodb testcontainers pagination test: pymongosql's SQL-to-Mongo AST parser reads LIMIT/OFFSET off the compiled SQL text ahead of parameter substitution, so a bound `LIMIT ?`/`OFFSET ?` placeholder is silently dropped. Compile with literal_binds=True instead, matching how Superset actually issues chart/SQL Lab queries. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>