parent
a7e08f462f
commit
b97546a5a9
|
@ -239,7 +239,8 @@ public class XPackLicenseState {
|
|||
switch (currentMode) {
|
||||
case TRIAL:
|
||||
case PLATINUM:
|
||||
return new String[] { "JDBC support will be disabled, but you can continue to use SQL CLI and REST endpoint" };
|
||||
return new String[] {
|
||||
"JDBC and ODBC support will be disabled, but you can continue to use SQL CLI and REST endpoint" };
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -628,6 +629,20 @@ public class XPackLicenseState {
|
|||
return licensed && localStatus.active;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if ODBC support should be enabled.
|
||||
* <p>
|
||||
* ODBC is available only in for {@link OperationMode#PLATINUM} and {@link OperationMode#TRIAL} licences
|
||||
*/
|
||||
public synchronized boolean isOdbcAllowed() {
|
||||
Status localStatus = status;
|
||||
OperationMode operationMode = localStatus.mode;
|
||||
|
||||
boolean licensed = operationMode == OperationMode.TRIAL || operationMode == OperationMode.PLATINUM;
|
||||
|
||||
return licensed && localStatus.active;
|
||||
}
|
||||
|
||||
public synchronized boolean isTrialLicense() {
|
||||
return status.mode == OperationMode.TRIAL;
|
||||
}
|
||||
|
|
|
@ -167,7 +167,7 @@ public class SqlQueryResponse extends ActionResponse implements ToXContentObject
|
|||
* Serializes the provided value in SQL-compatible way based on the client mode
|
||||
*/
|
||||
public static XContentBuilder value(XContentBuilder builder, Mode mode, Object value) throws IOException {
|
||||
if (mode == Mode.JDBC && value instanceof ReadableDateTime) {
|
||||
if (Mode.isDriver(mode) && value instanceof ReadableDateTime) {
|
||||
// JDBC cannot parse dates in string format
|
||||
builder.value(((ReadableDateTime) value).getMillis());
|
||||
} else {
|
||||
|
|
|
@ -13,7 +13,8 @@ import java.util.Locale;
|
|||
*/
|
||||
public enum Mode {
|
||||
PLAIN,
|
||||
JDBC;
|
||||
JDBC,
|
||||
ODBC;
|
||||
|
||||
public static Mode fromString(String mode) {
|
||||
if (mode == null) {
|
||||
|
@ -27,4 +28,8 @@ public enum Mode {
|
|||
public String toString() {
|
||||
return this.name().toLowerCase(Locale.ROOT);
|
||||
}
|
||||
|
||||
public static boolean isDriver(Mode mode) {
|
||||
return mode == JDBC || mode == ODBC;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -64,6 +64,11 @@ public class SqlPlugin extends Plugin implements ActionPlugin {
|
|||
throw LicenseUtils.newComplianceException("jdbc");
|
||||
}
|
||||
break;
|
||||
case ODBC:
|
||||
if (licenseState.isOdbcAllowed() == false) {
|
||||
throw LicenseUtils.newComplianceException("odbc");
|
||||
}
|
||||
break;
|
||||
case PLAIN:
|
||||
if (licenseState.isSqlAllowed() == false) {
|
||||
throw LicenseUtils.newComplianceException(XPackField.SQL);
|
||||
|
|
|
@ -20,6 +20,7 @@ import org.elasticsearch.xpack.sql.action.SqlQueryRequest;
|
|||
import org.elasticsearch.xpack.sql.action.SqlQueryResponse;
|
||||
import org.elasticsearch.xpack.sql.execution.PlanExecutor;
|
||||
import org.elasticsearch.xpack.sql.proto.ColumnInfo;
|
||||
import org.elasticsearch.xpack.sql.proto.Mode;
|
||||
import org.elasticsearch.xpack.sql.session.Configuration;
|
||||
import org.elasticsearch.xpack.sql.session.Cursors;
|
||||
import org.elasticsearch.xpack.sql.session.RowSet;
|
||||
|
@ -30,7 +31,6 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
import static java.util.Collections.unmodifiableList;
|
||||
import static org.elasticsearch.xpack.sql.proto.Mode.JDBC;
|
||||
|
||||
public class TransportSqlQueryAction extends HandledTransportAction<SqlQueryRequest, SqlQueryResponse> {
|
||||
private final PlanExecutor planExecutor;
|
||||
|
@ -73,7 +73,7 @@ public class TransportSqlQueryAction extends HandledTransportAction<SqlQueryRequ
|
|||
static SqlQueryResponse createResponse(SqlQueryRequest request, SchemaRowSet rowSet) {
|
||||
List<ColumnInfo> columns = new ArrayList<>(rowSet.columnCount());
|
||||
for (Schema.Entry entry : rowSet.schema()) {
|
||||
if (request.mode() == JDBC) {
|
||||
if (Mode.isDriver(request.mode())) {
|
||||
columns.add(new ColumnInfo("", entry.name(), entry.type().esType, entry.type().jdbcType,
|
||||
entry.type().displaySize));
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue