opensearch-project / sql

Query your data using familiar SQL or intuitive Piped Processing Language (PPL)
https://opensearch.org/docs/latest/search-plugins/sql/index/
Apache License 2.0
117 stars 135 forks source link

[FEATURE] Join query doesn't support index alias #2542

Open dai-chen opened 7 months ago

dai-chen commented 7 months ago

Is your feature request related to a problem?

When using index alias instead of index name in JOIN query, NPE is thrown from SQL plugin.

What solution would you like?

JOIN query (or any SQL query) can handle index alias without issue.

Do you have any additional context?

Error stacktrace:

[2024-03-06T22:33:27,579][ERROR][o.o.s.l.p.RestSqlAction  ]  Client side error during query execution
java.lang.NullPointerException: Cannot invoke "org.opensearch.sql.legacy.esdomain.mapping.FieldMappings.has(String)" because "fieldMappings" is null
    at org.opensearch.sql.legacy.rewriter.matchtoterm.TermFieldRewriter.visit(TermFieldRewriter.java:129)
    at com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr.accept0(SQLIdentifierExpr.java:65)
    at com.alibaba.druid.sql.ast.SQLObjectImpl.accept(SQLObjectImpl.java:40)
    at com.alibaba.druid.sql.ast.SQLObjectImpl.acceptChild(SQLObjectImpl.java:62)
    at com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr.accept0(SQLBinaryOpExpr.java:99)
    at com.alibaba.druid.sql.ast.SQLObjectImpl.accept(SQLObjectImpl.java:40)
    at com.alibaba.druid.sql.ast.SQLObjectImpl.acceptChild(SQLObjectImpl.java:62)
    at com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock.accept0(MySqlSelectQueryBlock.java:258)
    at com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock.accept0(MySqlSelectQueryBlock.java:246)
    at com.alibaba.druid.sql.ast.SQLObjectImpl.accept(SQLObjectImpl.java:40)
    at com.alibaba.druid.sql.ast.SQLObjectImpl.acceptChild(SQLObjectImpl.java:62)
    at com.alibaba.druid.sql.ast.statement.SQLSelect.accept0(SQLSelect.java:85)
    at com.alibaba.druid.sql.ast.SQLObjectImpl.accept(SQLObjectImpl.java:40)
    at com.alibaba.druid.sql.ast.SQLObjectImpl.acceptChild(SQLObjectImpl.java:62)
    at com.alibaba.druid.sql.ast.expr.SQLQueryExpr.accept0(SQLQueryExpr.java:55)
    at com.alibaba.druid.sql.ast.SQLObjectImpl.accept(SQLObjectImpl.java:40)
    at org.opensearch.sql.legacy.query.OpenSearchActionFactory.create(OpenSearchActionFactory.java:110)
    at org.opensearch.sql.legacy.plugin.SearchDao.explain(SearchDao.java:52)
    at org.opensearch.sql.legacy.plugin.RestSqlAction.explainRequest(RestSqlAction.java:208)
    at org.opensearch.sql.legacy.plugin.RestSqlAction.lambda$prepareRequest$1(RestSqlAction.java:160)
    at org.opensearch.sql.legacy.plugin.RestSQLQueryAction$1.onFailure(RestSQLQueryAction.java:130)
    at org.opensearch.sql.sql.SQLService.explain(SQLService.java:60)
    at org.opensearch.sql.legacy.plugin.RestSQLQueryAction.lambda$prepareRequest$2(RestSQLQueryAction.java:98)
    ...
HabooshHaddad commented 4 months ago

Hello Any updates on this ?