Skip to content

Commit 162bc41

Browse files
committed
#1439 restore pg code
1 parent c4ee50d commit 162bc41

File tree

2 files changed

+64
-76
lines changed

2 files changed

+64
-76
lines changed

postgresw/src/main/java/com/arcadedb/postgres/PostgresNetworkExecutor.java

Lines changed: 58 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -347,37 +347,34 @@ private void queryCommand() {
347347
return;
348348
}
349349

350-
// if (DEBUG)
351-
// LogManager.instance().log(this, Level.INFO, "PSQL: query -> %s (thread=%s)", queryText, Thread.currentThread().getId());
350+
if (DEBUG)
351+
LogManager.instance().log(this, Level.INFO, "PSQL: query -> %s (thread=%s)", queryText, Thread.currentThread().getId());
352352

353353
final Query query = getLanguageAndQuery(queryText);
354-
if (DEBUG)
355-
LogManager.instance().log(this, Level.INFO, "PSQL: query -> %s ", query);
356354

357355
final ResultSet resultSet;
358-
if (query.query.startsWith("SET ")) {
359-
setConfiguration(query.query);
356+
if (queryText.startsWith("SET ")) {
357+
setConfiguration(queryText);
360358
resultSet = new IteratorResultSet(createResultSet("STATUS", "Setting ignored").iterator());
361-
} else if (query.query.equals("SELECT VERSION()"))
359+
} else if (queryText.equals("SELECT VERSION()"))
362360
resultSet = new IteratorResultSet(createResultSet("VERSION", "11.0.0").iterator());
363-
else if (query.query.equals("SELECT CURRENT_SCHEMA()"))
361+
else if (queryText.equals("SELECT CURRENT_SCHEMA()"))
364362
resultSet = new IteratorResultSet(createResultSet("CURRENT_SCHEMA", database.getName()).iterator());
365-
else if (query.query.equalsIgnoreCase("BEGIN") ||
366-
query.query.equalsIgnoreCase("BEGIN TRANSACTION")) {
363+
else if (queryText.equalsIgnoreCase("BEGIN") || queryText.equalsIgnoreCase("BEGIN TRANSACTION")) {
367364
explicitTransactionStarted = true;
368365
database.begin();
369366
resultSet = new IteratorResultSet(Collections.emptyIterator());
370-
} else if (ignoreQueries.contains(query.query))
367+
} else if (ignoreQueries.contains(queryText))
371368
resultSet = new IteratorResultSet(Collections.emptyIterator());
372369
else
373-
resultSet = database.query(query.language, query.query);
370+
resultSet = database.command(query.language, query.query);
374371

375-
final List<Result> cachedResultSet = browseAndCacheResultSet(resultSet, 0);
372+
final List<Result> cachedResultset = browseAndCacheResultSet(resultSet, 0);
376373

377-
final Map<String, PostgresType> columns = getColumns(cachedResultSet);
374+
final Map<String, PostgresType> columns = getColumns(cachedResultset);
378375
writeRowDescription(columns);
379-
writeDataRows(cachedResultSet, columns);
380-
writeCommandComplete(query.query, cachedResultSet.size());
376+
writeDataRows(cachedResultset, columns);
377+
writeCommandComplete(queryText, cachedResultset.size());
381378

382379
} catch (final CommandParsingException e) {
383380
setErrorInTx();
@@ -511,43 +508,39 @@ private void writeDataRows(final List<Result> resultSet, final Map<String, Postg
511508
for (final Map.Entry<String, PostgresType> entry : columns.entrySet()) {
512509
final String propertyName = entry.getKey();
513510

514-
Object value = switch (propertyName) {
515-
case "@rid" -> row.isElement() ? row.getElement().get().getIdentity() : null;
516-
case "@type" -> row.isElement() ? row.getElement().get().getTypeName() : null;
517-
case "@out" -> {
518-
if (row.isElement()) {
519-
final Document record = row.getElement().get();
520-
if (record instanceof Vertex vertex)
521-
yield vertex.countEdges(Vertex.DIRECTION.OUT, null);
522-
else if (record instanceof Edge edge)
523-
yield edge.getOut();
524-
}
525-
yield null;
511+
Object value = null;
512+
if (propertyName.equals("@rid"))
513+
value = row.isElement() ? row.getElement().get().getIdentity() : null;
514+
else if (propertyName.equals("@type"))
515+
value = row.isElement() ? row.getElement().get().getTypeName() : null;
516+
else if (propertyName.equals("@out")) {
517+
if (row.isElement()) {
518+
final Document record = row.getElement().get();
519+
if (record instanceof Vertex vertex)
520+
value = vertex.countEdges(Vertex.DIRECTION.OUT, null);
521+
else if (record instanceof Edge edge)
522+
value = edge.getOut();
526523
}
527-
case "@in" -> {
528-
if (row.isElement()) {
529-
final Document record = row.getElement().get();
530-
if (record instanceof Vertex vertex)
531-
yield vertex.countEdges(Vertex.DIRECTION.IN, null);
532-
else if (record instanceof Edge edge)
533-
yield edge.getIn();
534-
}
535-
yield null;
524+
} else if (propertyName.equals("@in")) {
525+
if (row.isElement()) {
526+
final Document record = row.getElement().get();
527+
if (record instanceof Vertex vertex)
528+
value = vertex.countEdges(Vertex.DIRECTION.IN, null);
529+
else if (record instanceof Edge edge)
530+
value = edge.getIn();
536531
}
537-
case "@cat" -> {
538-
if (row.isElement()) {
539-
final Document record = row.getElement().get();
540-
if (record instanceof Vertex)
541-
yield "v";
542-
else if (record instanceof Edge)
543-
yield "e";
544-
else
545-
yield "d";
546-
}
547-
yield null;
532+
} else if (propertyName.equals("@cat")) {
533+
if (row.isElement()) {
534+
final Document record = row.getElement().get();
535+
if (record instanceof Vertex)
536+
value = "v";
537+
else if (record instanceof Edge)
538+
value = "e";
539+
else
540+
value = "d";
548541
}
549-
default -> row.getProperty(propertyName);
550-
};
542+
} else
543+
value = row.getProperty(propertyName);
551544

552545
entry.getValue().serializeAsText(entry.getValue().code, bufferValues, value);
553546
}
@@ -1127,25 +1120,20 @@ private void readBytes(final int len) throws IOException {
11271120

11281121
private void writeCommandComplete(final String queryText, final int resultSetCount) {
11291122
final String upperCaseText = queryText.toUpperCase(Locale.ENGLISH);
1130-
final String tag = getTag(upperCaseText, resultSetCount);
1131-
writeMessage("command complete",
1132-
() -> writeString(tag), 'C', 4 + tag.length() + 1);
1133-
}
1134-
1135-
private String getTag(String upperCaseText, int resultSetCount) {
1136-
if (upperCaseText.startsWith("CREATE VERTEX") || upperCaseText.startsWith("INSERT INTO")) {
1137-
return "INSERT 0 " + resultSetCount;
1138-
} else if (upperCaseText.startsWith("SELECT") || upperCaseText.startsWith("MATCH")) {
1139-
return "SELECT " + resultSetCount;
1140-
} else if (upperCaseText.startsWith("UPDATE")) {
1141-
return "UPDATE " + resultSetCount;
1142-
} else if (upperCaseText.startsWith("DELETE")) {
1143-
return "DELETE " + resultSetCount;
1144-
} else if (upperCaseText.equals("BEGIN") || upperCaseText.equals("BEGIN TRANSACTION")) {
1145-
return "BEGIN";
1146-
} else {
1147-
return "";
1148-
}
1123+
String tag = "";
1124+
if (upperCaseText.startsWith("CREATE VERTEX") || upperCaseText.startsWith("INSERT INTO"))
1125+
tag = "INSERT 0 " + resultSetCount;
1126+
else if (upperCaseText.startsWith("SELECT") || upperCaseText.startsWith("MATCH"))
1127+
tag = "SELECT " + resultSetCount;
1128+
else if (upperCaseText.startsWith("UPDATE"))
1129+
tag = "UPDATE " + resultSetCount;
1130+
else if (upperCaseText.startsWith("DELETE"))
1131+
tag = "DELETE " + resultSetCount;
1132+
else if (upperCaseText.equals("BEGIN") || upperCaseText.equals("BEGIN TRANSACTION"))
1133+
tag = "BEGIN";
1134+
1135+
final String finalTag = tag;
1136+
writeMessage("command complete", () -> writeString(finalTag), 'C', 4 + tag.length() + 1);
11491137
}
11501138

11511139
private void writeNoData() {
@@ -1167,7 +1155,7 @@ private void createResultSet(final PostgresPortal portal, final Object... elemen
11671155

11681156
private List<Result> createResultSet(final Object... elements) {
11691157
if (elements.length % 2 != 0)
1170-
throw new IllegalArgumentException("Result set elements must be in pairs");
1158+
throw new IllegalArgumentException("Resultset elements must be in pairs");
11711159

11721160
final List<Result> resultSet = new ArrayList<>();
11731161
for (int i = 0; i < elements.length; i += 2) {

postgresw/src/main/java/com/arcadedb/postgres/PostgresPortal.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@
2121
import com.arcadedb.query.sql.executor.Result;
2222
import com.arcadedb.query.sql.parser.Statement;
2323

24-
import java.util.List;
25-
import java.util.Map;
24+
import java.util.*;
2625

2726
public class PostgresPortal {
2827
public String query;
@@ -31,15 +30,16 @@ public class PostgresPortal {
3130
public List<Object> parameterValues;
3231
public List<Integer> resultFormats;
3332
public Statement sqlStatement;
34-
public boolean ignoreExecution = false;
33+
public boolean ignoreExecution = false;
3534
public List<Result> cachedResultset;
3635
public Map<String, PostgresType> columns;
37-
public boolean isExpectingResult;
38-
public boolean executed = false;
36+
public boolean isExpectingResult = true;
37+
public boolean executed = false;
3938

4039
public PostgresPortal(final String query) {
4140
this.query = query;
42-
this.isExpectingResult = true;
41+
//final String queryUpperCase = query.toUpperCase();
42+
this.isExpectingResult = true;//queryUpperCase.startsWith("SELECT") || queryUpperCase.startsWith("MATCH");
4343
}
4444

4545
@Override

0 commit comments

Comments
 (0)