CB-4502 dpi sql execute support (#2542)

* CB-4502 wip

* CB-4502 DPI: read data from container and script execution support

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
This commit is contained in:
Alexander Skoblikov
2024-04-15 15:29:57 +00:00
committed by GitHub
co-authored by mr-anton-t
parent c7ed9f3b5b
commit 9a46bb2a88
7 changed files with 19 additions and 10 deletions
@@ -43,7 +43,7 @@ public class WebSQLCellValueReceiver implements DBDDataReceiver {
@Override
public void fetchStart(@NotNull DBCSession session, @NotNull DBCResultSet resultSet, long offset, long maxRows) throws DBCException {
DBCResultSetMetaData meta = resultSet.getMeta();
List<DBCAttributeMetaData> attributes = meta.getAttributes();
List<? extends DBCAttributeMetaData> attributes = meta.getAttributes();
DBCAttributeMetaData attrMeta = attributes.get(rowIndex);
binding = new DBDAttributeBindingMeta(dataContainer, resultSet.getSession(), attrMeta);
}
@@ -51,7 +51,7 @@ public class WebSQLContextInfo implements WebSessionProvider {
private static final Log log = Log.getLog(WebSQLContextInfo.class);
private final WebSQLProcessor processor;
private final transient WebSQLProcessor processor;
private final String id;
private final String projectId;
private final Map<String, WebSQLResultsInfo> resultInfoMap = new HashMap<>();
@@ -1062,7 +1062,7 @@ public class WebSQLProcessor implements WebSessionProvider {
DBDAttributeBinding[] resultsAttributes = results.getAttributes();
DBCResultSetMetaData rsMeta = resultSet.getMeta();
List<DBCAttributeMetaData> keyAttributes = rsMeta.getAttributes();
List<? extends DBCAttributeMetaData> keyAttributes = rsMeta.getAttributes();
for (int i = 0; i < keyAttributes.size(); i++) {
DBCAttributeMetaData keyAttribute = keyAttributes.get(i);
DBDValueHandler valueHandler = DBUtils.findValueHandler(session, keyAttribute);
@@ -94,7 +94,16 @@ public class WebSQLQueryDataContainer implements DBSDataContainer, DBPContextPro
@NotNull
@Override
public DBCStatistics readData(@NotNull DBCExecutionSource source, @NotNull DBCSession session, @NotNull DBDDataReceiver dataReceiver, @Nullable DBDDataFilter dataFilter, long firstRow, long maxRows, long flags, int fetchSize) throws DBCException {
public DBCStatistics readData(
@Nullable DBCExecutionSource source,
@NotNull DBCSession session,
@NotNull DBDDataReceiver dataReceiver,
@Nullable DBDDataFilter dataFilter,
long firstRow,
long maxRows,
long flags,
int fetchSize
) throws DBCException {
return queryDataContainer.readData(source, session, dataReceiver, dataFilter, firstRow, maxRows, flags, fetchSize);
}
@@ -65,7 +65,7 @@ class WebSQLQueryDataReceiver implements DBDDataReceiver {
@Override
public void fetchStart(@NotNull DBCSession session, @NotNull DBCResultSet dbResult, long offset, long maxRows) throws DBCException {
DBCResultSetMetaData meta = dbResult.getMeta();
List<DBCAttributeMetaData> attributes = meta.getAttributes();
List<? extends DBCAttributeMetaData> attributes = meta.getAttributes();
bindings = new DBDAttributeBindingMeta[attributes.size()];
for (int i = 0; i < attributes.size(); i++) {
DBCAttributeMetaData attrMeta = attributes.get(i);
@@ -19,11 +19,9 @@ package io.cloudbeaver.service.sql;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.data.DBDAttributeBinding;
import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.utils.Pair;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* Web SQL query resultset.
@@ -33,7 +31,7 @@ public class WebSQLQueryResultSet {
private static final Log log = Log.getLog(WebSQLQueryResultSet.class);
private WebSQLQueryResultColumn[] columns;
private List<WebSQLQueryResultSetRow> rows;
private List<WebSQLQueryResultSetRow> rows = Collections.emptyList();
private boolean hasMoreData;
private WebSQLResultsInfo resultsInfo;
private boolean singleEntity = true;
@@ -33,7 +33,9 @@ import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.data.DBDAttributeBinding;
import org.jkiss.dbeaver.model.exec.*;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCLogicalOperator;
import org.jkiss.dbeaver.model.exec.DBExecUtils;
import org.jkiss.dbeaver.model.impl.sql.BasicSQLDialect;
import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;