Skip to content
Snippets Groups Projects
Commit 998cad9b authored by Julien Lopez's avatar Julien Lopez
Browse files

- Add conversion of integers and doubles

- Add getDriver for QIROperators
parent 567d0c0c
No related branches found
No related tags found
No related merge requests found
package qir.ast;
import qir.driver.DBDriver;
import qir.util.IQIRVisitor;
import qir.util.QIRException;
import com.oracle.truffle.api.source.*;
......@@ -21,6 +23,10 @@ public abstract class QIRNode {
return source;
}
public DBDriver getDriver() {
throw new QIRException("No driver found.");
}
/**
* Allows a class implementing {@link IQIRVisitor} to access the node.
*
......
......@@ -23,6 +23,7 @@ public final class QIRTable extends QIRNode {
return tableName;
}
@Override
public final DBDriver getDriver() {
return driver;
}
......
......@@ -3,6 +3,7 @@ package qir.ast.operator;
import com.oracle.truffle.api.source.SourceSection;
import qir.ast.QIRNode;
import qir.driver.DBDriver;
import qir.util.IQIRVisitor;
/**
......@@ -42,6 +43,11 @@ public final class QIRGroup extends QIROperator {
return child;
}
@Override
public DBDriver getDriver() {
return child.getDriver();
}
@Override
public final <T> T accept(final IQIRVisitor<T> visitor) {
return visitor.visit(this);
......
......@@ -3,6 +3,7 @@ package qir.ast.operator;
import com.oracle.truffle.api.source.SourceSection;
import qir.ast.QIRNode;
import qir.driver.DBDriver;
import qir.util.IQIRVisitor;
/**
......@@ -38,6 +39,11 @@ public final class QIRJoin extends QIROperator {
return right;
}
@Override
public DBDriver getDriver() {
return left.getDriver(); // TODO: That is arbitrary.
}
@Override
public final <T> T accept(IQIRVisitor<T> visitor) {
return visitor.visit(this);
......
......@@ -3,6 +3,7 @@ package qir.ast.operator;
import com.oracle.truffle.api.source.SourceSection;
import qir.ast.QIRNode;
import qir.driver.DBDriver;
import qir.util.IQIRVisitor;
/**
......@@ -32,6 +33,11 @@ public final class QIRLimit extends QIROperator {
return child;
}
@Override
public DBDriver getDriver() {
return child.getDriver();
}
@Override
public final <T> T accept(final IQIRVisitor<T> visitor) {
return visitor.visit(this);
......
......@@ -3,6 +3,7 @@ package qir.ast.operator;
import com.oracle.truffle.api.source.SourceSection;
import qir.ast.QIRNode;
import qir.driver.DBDriver;
import qir.util.IQIRVisitor;
/**
......@@ -13,6 +14,11 @@ public abstract class QIROperator extends QIRNode {
super(source);
}
@Override
public DBDriver getDriver() {
return super.getDriver();
}
@Override
public <T> T accept(final IQIRVisitor<T> visitor) {
return visitor.visit(this);
......
......@@ -3,6 +3,7 @@ package qir.ast.operator;
import com.oracle.truffle.api.source.SourceSection;
import qir.ast.QIRNode;
import qir.driver.DBDriver;
import qir.util.IQIRVisitor;
/**
......@@ -33,6 +34,11 @@ public final class QIROrder extends QIROperator {
return child;
}
@Override
public DBDriver getDriver() {
return child.getDriver();
}
@Override
public final <T> T accept(final IQIRVisitor<T> visitor) {
return visitor.visit(this);
......
......@@ -3,6 +3,7 @@ package qir.ast.operator;
import com.oracle.truffle.api.source.SourceSection;
import qir.ast.QIRNode;
import qir.driver.DBDriver;
import qir.util.IQIRVisitor;
/**
......@@ -33,6 +34,11 @@ public final class QIRProject extends QIROperator {
return child;
}
@Override
public DBDriver getDriver() {
return child.getDriver();
}
@Override
public <T> T accept(final IQIRVisitor<T> visitor) {
return visitor.visit(this);
......
......@@ -3,6 +3,7 @@ package qir.ast.operator;
import com.oracle.truffle.api.source.SourceSection;
import qir.ast.QIRNode;
import qir.driver.DBDriver;
import qir.util.IQIRVisitor;
/**
......@@ -23,6 +24,11 @@ public final class QIRScan extends QIROperator {
return table;
}
@Override
public DBDriver getDriver() {
return table.getDriver();
}
@Override
public final <T> T accept(final IQIRVisitor<T> visitor) {
return visitor.visit(this);
......
......@@ -3,6 +3,7 @@ package qir.ast.operator;
import com.oracle.truffle.api.source.SourceSection;
import qir.ast.QIRNode;
import qir.driver.DBDriver;
import qir.util.IQIRVisitor;
/**
......@@ -33,6 +34,11 @@ public final class QIRSelect extends QIROperator {
return child;
}
@Override
public DBDriver getDriver() {
return child.getDriver();
}
@Override
public final <T> T accept(final IQIRVisitor<T> visitor) {
return visitor.visit(this);
......
......@@ -56,17 +56,18 @@ public abstract class SQLDriver extends DBDriver {
while (rs.next()) {
QIRTuple newTuple = QIRTnil.getInstance();
for (int i = rs.getMetaData().getColumnCount(); i >= 1; i--) {
switch (rs.getMetaData().getColumnType(i)) {
case Types.NUMERIC: {
int type = rs.getMetaData().getColumnType(i);
switch (type) {
case Types.NUMERIC:
case Types.INTEGER:
case Types.DOUBLE:
// TODO: Handle overflow
data = new QIRNumber(SourceSection.createUnavailable("QIRNode", "QIRNumber"), rs.getLong(i));
break;
}
default: {
default:
data = new QIRString(SourceSection.createUnavailable("QIRNode", "QIRString"), rs.getString(i));
break;
}
}
newTuple = new QIRTcons(SourceSection.createUnavailable("QIRNode", "QIRTcons"), rs.getMetaData().getColumnLabel(i), data, newTuple);
}
tmp.push(newTuple);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment