crate / crate

CrateDB is a distributed and scalable SQL database for storing and analyzing massive amounts of data in near real-time, even with complex queries. It is PostgreSQL-compatible, and based on Lucene.
https://cratedb.com/database
Apache License 2.0
4.13k stars 568 forks source link

Jetbrains IDE DataGrip compatibility #15062

Open admtech opened 1 year ago

admtech commented 1 year ago

CrateDB version

5.5.0

CrateDB setup information

Single Node Developer Setup

Problem description

Currently, three things prevent the professional use of the DataGrip IDE from jetbrains with crateDB (and all other IDEs form jetbrains):

"Escape support" https://github.com/crate/crate/issues/14790 and the "AS alias SET" error: https://github.com/crate/crate/issues/15061

In addition, you have to connect using the https://github.com/crate/crate-jdbc driver instead of the built-in PostgreSQL driver. Maybe you tell jetbrains that there is a Crate Open Source Driver and they should add it to the driver list.

In the PostgreSQL driver, the selection of the schema does not work and acknowledges the service with the error:

ERROR: Unknown function: pg_catalog.txid_current() Wobei: io.crate.metadata.Functions.raiseUnknownFunction(Functions.java:357) io.crate.metadata.Functions.get(Functions.java:157) io.crate.metadata.Functions.get(Functions.java:126) io.crate.analyze.expressions.ExpressionAnalyzer.allocateBuiltinOrUdfFunction(ExpressionAnalyzer.java:1195)

It is important to know that if it does not work in Datagrid, it will not work in any of jetbrains' other IDEs: IntelliJ IDEA, AppCode, Aqua, CLion, DataGrip, DataSpell, Fleet, GoLand, PhpStorm, PyCharm, Rider, RubyMine, RustRover, WebStorm. That's a lot of IDEs.

I tested CrateDB today because you have finally implemented the "Drop Columns Support" (there is still room for improvement). The DB itself works very well. The Webgui could use a little more love, but it works fine.

However, since we developers usually work with IDEs and not just with Webgui or CLIs like "crash", we need the full support of the respective IDE, especially for fields, types and names.

Steps to Reproduce

Escape support https://github.com/crate/crate/issues/14790 AS alias SET error: https://github.com/crate/crate/issues/15061

Actual Result

ERROR: Unknown function: pg_catalog.txid_current() Wobei: io.crate.metadata.Functions.raiseUnknownFunction(Functions.java:357) io.crate.metadata.Functions.get(Functions.java:157) io.crate.metadata.Functions.get(Functions.java:126) io.crate.analyze.expressions.ExpressionAnalyzer.allocateBuiltinOrUdfFunction(ExpressionAnalyzer.java:1195)

or

java.sql.SQLException: ERROR: ESCAPE is not supported. Wobei: io.crate.exceptions.SQLExceptions.esToCrateException(SQLExceptions.java:154) io.crate.exceptions.SQLExceptions.prepareForClientTransmission(SQLExceptions.java:141) io.crate.protocols.postgres.Messages.sendErrorResponse(Messages.java:190)

or

java.sql.SQLException: ERROR: Column reference "t.quote" has too many parts. A column must not have a schema or a table here. Wobei: io.crate.exceptions.SQLExceptions.esToCrateException(SQLExceptions.java:152) io.crate.exceptions.SQLExceptions.prepareForClientTransmission(SQLExceptions.java:141)

Expected Result

no errors, so that you can edit and delete content, that you can see all fields, types and schemas in the IDEs.

mfussenegger commented 1 year ago

txid_current is also tracked here: https://github.com/crate/crate/issues/12086