use of io.questdb.cairo.sql.Function in project questdb by bluestreak01.
the class FunctionParserTest method testConstVarArgFunction.
@Test
public void testConstVarArgFunction() throws SqlException {
functions.add(new InStrFunctionFactory());
final GenericRecordMetadata metadata = new GenericRecordMetadata();
metadata.add(new TableColumnMetadata("a", 1, ColumnType.STRING));
FunctionParser functionParser = createFunctionParser();
Function function = parseFunction("a in ('xu', 'yk')", metadata, functionParser);
Assert.assertEquals(ColumnType.BOOLEAN, function.getType());
Assert.assertTrue(function.getBool(new Record() {
@Override
public CharSequence getStr(int col) {
return "yk";
}
}));
}
use of io.questdb.cairo.sql.Function in project questdb by bluestreak01.
the class FunctionParserTest method testImplicitConstantInt.
@Test
public void testImplicitConstantInt() throws SqlException {
functions.add(new FunctionFactory() {
@Override
public String getSignature() {
return "x()";
}
@Override
public Function newInstance(int position, ObjList<Function> args, IntList argPositions, CairoConfiguration configuration1, SqlExecutionContext sqlExecutionContext) {
return new IntFunction() {
@Override
public int getInt(Record rec) {
return 0;
}
@Override
public boolean isConstant() {
return true;
}
};
}
});
Function function = parseFunction("x()", new GenericRecordMetadata(), createFunctionParser());
Assert.assertTrue(function instanceof IntConstant);
}
use of io.questdb.cairo.sql.Function in project questdb by bluestreak01.
the class FunctionParserTest method testFunctionFactoryException.
@Test
public void testFunctionFactoryException() {
functions.add(new FunctionFactory() {
@Override
public String getSignature() {
return "x()";
}
@Override
public Function newInstance(int position, ObjList<Function> args, IntList argPositions, CairoConfiguration configuration, SqlExecutionContext sqlExecutionContext) {
throw new RuntimeException("oops");
}
});
final GenericRecordMetadata metadata = new GenericRecordMetadata();
assertFail(0, "exception in function factory", "x()", metadata);
}
use of io.questdb.cairo.sql.Function in project questdb by bluestreak01.
the class FunctionParserTest method testAmbiguousFunctionInvocation.
@Test
public void testAmbiguousFunctionInvocation() throws SqlException {
functions.add(new FunctionFactory() {
@Override
public String getSignature() {
// double,double
return "+(DD)";
}
@Override
public Function newInstance(int position, ObjList<Function> args, IntList argPositions, CairoConfiguration configuration, SqlExecutionContext sqlExecutionContext) {
return new DoubleFunction() {
@Override
public double getDouble(Record rec) {
return 123.123;
}
};
}
});
functions.add(new FunctionFactory() {
@Override
public String getSignature() {
// float,float
return "+(FF)";
}
@Override
public Function newInstance(int position, ObjList<Function> args, IntList argPositions, CairoConfiguration configuration, SqlExecutionContext sqlExecutionContext) {
return new FloatFunction() {
@Override
public float getFloat(Record rec) {
return 123.123f;
}
};
}
});
final GenericRecordMetadata metadata = new GenericRecordMetadata();
metadata.add(new TableColumnMetadata("a", 1, ColumnType.BYTE));
metadata.add(new TableColumnMetadata("c", 2, ColumnType.SHORT));
FunctionParser functionParser = createFunctionParser();
Function f = parseFunction("a + c", metadata, functionParser);
Assert.assertEquals(123.123f, f.getFloat(null), 0.0001);
}
use of io.questdb.cairo.sql.Function in project questdb by bluestreak01.
the class FunctionParserTest method testBooleanConstants.
@Test
public void testBooleanConstants() throws SqlException {
functions.add(new NotFunctionFactory());
functions.add(new OrFunctionFactory());
final Record record = new Record() {
@Override
public boolean getBool(int col) {
// col0 = false
return false;
}
};
final GenericRecordMetadata metadata = new GenericRecordMetadata();
metadata.add(new TableColumnMetadata("a", 1, ColumnType.BOOLEAN));
FunctionParser functionParser = createFunctionParser();
Function function = parseFunction("a or not false", metadata, functionParser);
Assert.assertEquals(ColumnType.BOOLEAN, function.getType());
Assert.assertTrue(function.getBool(record));
Function function2 = parseFunction("a or true", metadata, functionParser);
Assert.assertTrue(function2.getBool(record));
}
Aggregations