Hi Bill, all,

Thanks for raising this. I'd suggest enriching the Polaris CLI as much as
possible, https://polaris.apache.org/releases/1.4.1/command-line-interface/.
Yong has been working on it for a while now. The CLI should be generally
good enough for most use cases. We should also try to avoid file IO if
possible as I mentioned in this thread [1]. That should avoid turning this
into a competing SQL engine while still solving the operational
quick-inspection use case.

1. https://lists.apache.org/thread/35zzzh2jgorhx7q2xksp7rwxnt6gl2zx

Yufei

On Sun, 10 May 2026 07:47:41 +0200, “Jean-Baptiste Onofré” [email protected]
wrote:

Hi Bill,

Great proposal!

Exposing new features on top of the Polaris REST APIs is always welcome and
helpful. I agree that this is a strong candidate for the polaris-tools
repository. Additionally, we might want to consider incorporating similar
operational metrics into the Polaris Console (I will move forward on
Polaris Console release after Polaris 1.5.0).

Thanks!

Regards,
JB

On Fri, May 8, 2026 at 3:32 AM Bill Bejeck [email protected] wrote:

Hi all,
A while back, someone raised on this list
(https://lists.apache.org/thread/35zzzh2jgorhx7q2xksp7rwxnt6gl2zx) that
once Polaris is bootstrapped, simple operational questions (“how many
tables in
this namespace?”, “how many snapshots?”, “any small files?”)
force you to switch to Spark/Trino/pyiceberg and write a script.
It gave me an idea for a standalone SQL
shell (ANTLR grammar + REST catalog client, ships as a shadow jar).
Code:

https://github.com/bbejeck/polaris/tree/add-sql-module/extensions/sql-engine
End-to-end
https://github.com/bbejeck/polaris/tree/add-sql-module/extensions/sql-engineEnd-to-end
demo (docker-compose + MinIO, runs locally):

https://github.com/bbejeck/polaris/tree/add-sql-module/extensions/sql-engine/demo
It adds Iceberg-aware statements like
SHOW TABLES, DESCRIBE STATS, SHOW TABLE LOCATION/POLICIES,
DIAGNOSE TABLE, and EXPLAIN so you can poke at namespaces,
snapshots, small-file diagnostics, etc., without firing up Spark or Trino.
The demo above spins up Polaris + MinIO, seeds three Iceberg tables, and
lets you try
all of the statements above in a few minutes.
A few things worth stating upfront, because the “yet another SQL
dialect” worry is real:
- Not trying to compete with Spark/Trino/Doris SQL
- The SELECT support is “peek at a table from the shell”, not
“run analytics”.
- Dialect baseline I’d propose: small SQL-92 read-only subset
plus a handful of named Polaris extension statements
(DESCRIBE STATS, DIAGNOSE TABLE, etc.). Easy to maintain,
intentionally orthogonal to the engines.

If anyone thinks this could be useful, I’d love to discuss the next steps.
I’m new to the Polaris community, but I know in Apache Kafka, something
like this would require a KIP,
so I’m also willing to do a more formal design doc.
Thanks,
— Bill Bejeck

Reply via email to