Skip to content
Snippets Groups Projects
Commit f265eb17 authored by Grégory Mantelet's avatar Grégory Mantelet
Browse files

[ADQL] Add default translation for IN_UNIT(...): as geometries, same as in ADQL.

parent 61b1a079
No related branches found
No related tags found
No related merge requests found
...@@ -51,6 +51,7 @@ import adql.query.operand.WrappedOperand; ...@@ -51,6 +51,7 @@ import adql.query.operand.WrappedOperand;
import adql.query.operand.function.ADQLFunction; import adql.query.operand.function.ADQLFunction;
import adql.query.operand.function.MathFunction; import adql.query.operand.function.MathFunction;
import adql.query.operand.function.SQLFunction; import adql.query.operand.function.SQLFunction;
import adql.query.operand.function.UnitConversionFunction;
import adql.query.operand.function.UserDefinedFunction; import adql.query.operand.function.UserDefinedFunction;
import adql.query.operand.function.geometry.AreaFunction; import adql.query.operand.function.geometry.AreaFunction;
import adql.query.operand.function.geometry.BoxFunction; import adql.query.operand.function.geometry.BoxFunction;
...@@ -151,6 +152,9 @@ public interface ADQLTranslator { ...@@ -151,6 +152,9 @@ public interface ADQLTranslator {
/** @since 2.0 */ /** @since 2.0 */
public String translate(LowerFunction fct) throws TranslationException; public String translate(LowerFunction fct) throws TranslationException;
/** @since 2.0 */
public String translate(UnitConversionFunction fct) throws TranslationException;
/* ***** GEOMETRICAL FUNCTIONS ***** */ /* ***** GEOMETRICAL FUNCTIONS ***** */
public String translate(GeometryFunction fct) throws TranslationException; public String translate(GeometryFunction fct) throws TranslationException;
......
...@@ -63,6 +63,7 @@ import adql.query.operand.function.ADQLFunction; ...@@ -63,6 +63,7 @@ import adql.query.operand.function.ADQLFunction;
import adql.query.operand.function.MathFunction; import adql.query.operand.function.MathFunction;
import adql.query.operand.function.SQLFunction; import adql.query.operand.function.SQLFunction;
import adql.query.operand.function.SQLFunctionType; import adql.query.operand.function.SQLFunctionType;
import adql.query.operand.function.UnitConversionFunction;
import adql.query.operand.function.UserDefinedFunction; import adql.query.operand.function.UserDefinedFunction;
import adql.query.operand.function.geometry.AreaFunction; import adql.query.operand.function.geometry.AreaFunction;
import adql.query.operand.function.geometry.BoxFunction; import adql.query.operand.function.geometry.BoxFunction;
...@@ -836,6 +837,8 @@ public abstract class JDBCTranslator implements ADQLTranslator { ...@@ -836,6 +837,8 @@ public abstract class JDBCTranslator implements ADQLTranslator {
return translate((UserDefinedFunction)fct); return translate((UserDefinedFunction)fct);
else if (fct instanceof LowerFunction) else if (fct instanceof LowerFunction)
return translate((LowerFunction)fct); return translate((LowerFunction)fct);
else if (fct instanceof UnitConversionFunction)
return translate((UnitConversionFunction)fct);
else else
return getDefaultADQLFunction(fct); return getDefaultADQLFunction(fct);
} }
......
...@@ -29,6 +29,7 @@ import adql.query.constraint.Comparison; ...@@ -29,6 +29,7 @@ import adql.query.constraint.Comparison;
import adql.query.operand.ADQLOperand; import adql.query.operand.ADQLOperand;
import adql.query.operand.Concatenation; import adql.query.operand.Concatenation;
import adql.query.operand.Operation; import adql.query.operand.Operation;
import adql.query.operand.function.UnitConversionFunction;
import adql.query.operand.function.geometry.AreaFunction; import adql.query.operand.function.geometry.AreaFunction;
import adql.query.operand.function.geometry.BoxFunction; import adql.query.operand.function.geometry.BoxFunction;
import adql.query.operand.function.geometry.CentroidFunction; import adql.query.operand.function.geometry.CentroidFunction;
...@@ -155,7 +156,7 @@ public class MySQLTranslator extends JDBCTranslator { ...@@ -155,7 +156,7 @@ public class MySQLTranslator extends JDBCTranslator {
switch(comp.getOperator()) { switch(comp.getOperator()) {
case ILIKE: case ILIKE:
case NOTILIKE: case NOTILIKE:
throw new TranslationException("Translation of ILIKE impossible! This is not supported in MySQL."); throw new TranslationException("Translation of ILIKE impossible! This is not supported natively in MySQL.");
default: default:
return translate(comp.getLeftOperand()) + " " + comp.getOperator().toADQL() + " " + translate(comp.getRightOperand()); return translate(comp.getLeftOperand()) + " " + comp.getOperator().toADQL() + " " + translate(comp.getRightOperand());
} }
...@@ -177,6 +178,11 @@ public class MySQLTranslator extends JDBCTranslator { ...@@ -177,6 +178,11 @@ public class MySQLTranslator extends JDBCTranslator {
return translated.toString(); return translated.toString();
} }
@Override
public String translate(final UnitConversionFunction fct) throws TranslationException {
return getDefaultADQLFunction(fct);
}
/* ********************************************************************** */ /* ********************************************************************** */
/* * * */ /* * * */
/* * TYPE MANAGEMENT * */ /* * TYPE MANAGEMENT * */
......
...@@ -30,6 +30,7 @@ import adql.query.operand.OperationType; ...@@ -30,6 +30,7 @@ import adql.query.operand.OperationType;
import adql.query.operand.StringConstant; import adql.query.operand.StringConstant;
import adql.query.operand.function.ADQLFunction; import adql.query.operand.function.ADQLFunction;
import adql.query.operand.function.MathFunction; import adql.query.operand.function.MathFunction;
import adql.query.operand.function.UnitConversionFunction;
import adql.query.operand.function.geometry.AreaFunction; import adql.query.operand.function.geometry.AreaFunction;
import adql.query.operand.function.geometry.BoxFunction; import adql.query.operand.function.geometry.BoxFunction;
import adql.query.operand.function.geometry.CentroidFunction; import adql.query.operand.function.geometry.CentroidFunction;
...@@ -175,6 +176,11 @@ public class PostgreSQLTranslator extends JDBCTranslator { ...@@ -175,6 +176,11 @@ public class PostgreSQLTranslator extends JDBCTranslator {
} }
} }
@Override
public String translate(final UnitConversionFunction fct) throws TranslationException {
return getDefaultADQLFunction(fct);
}
@Override @Override
public String translate(ExtractCoord extractCoord) throws TranslationException { public String translate(ExtractCoord extractCoord) throws TranslationException {
return getDefaultADQLFunction(extractCoord); return getDefaultADQLFunction(extractCoord);
......
...@@ -41,6 +41,7 @@ import adql.query.operand.ADQLColumn; ...@@ -41,6 +41,7 @@ import adql.query.operand.ADQLColumn;
import adql.query.operand.ADQLOperand; import adql.query.operand.ADQLOperand;
import adql.query.operand.Concatenation; import adql.query.operand.Concatenation;
import adql.query.operand.function.MathFunction; import adql.query.operand.function.MathFunction;
import adql.query.operand.function.UnitConversionFunction;
import adql.query.operand.function.geometry.AreaFunction; import adql.query.operand.function.geometry.AreaFunction;
import adql.query.operand.function.geometry.BoxFunction; import adql.query.operand.function.geometry.BoxFunction;
import adql.query.operand.function.geometry.CentroidFunction; import adql.query.operand.function.geometry.CentroidFunction;
...@@ -194,12 +195,17 @@ public class SQLServerTranslator extends JDBCTranslator { ...@@ -194,12 +195,17 @@ public class SQLServerTranslator extends JDBCTranslator {
switch(comp.getOperator()) { switch(comp.getOperator()) {
case ILIKE: case ILIKE:
case NOTILIKE: case NOTILIKE:
throw new TranslationException("Translation of ILIKE impossible! This is not supported in MS-SQL Server."); throw new TranslationException("Translation of ILIKE impossible! This is not supported natively in MS-SQL Server.");
default: default:
return translate(comp.getLeftOperand()) + " " + comp.getOperator().toADQL() + " " + translate(comp.getRightOperand()); return translate(comp.getLeftOperand()) + " " + comp.getOperator().toADQL() + " " + translate(comp.getRightOperand());
} }
} }
@Override
public String translate(final UnitConversionFunction fct) throws TranslationException {
return getDefaultADQLFunction(fct);
}
@Override @Override
public String translate(Concatenation concat) throws TranslationException { public String translate(Concatenation concat) throws TranslationException {
StringBuffer translated = new StringBuffer(); StringBuffer translated = new StringBuffer();
......
...@@ -20,6 +20,7 @@ import adql.query.operand.NumericConstant; ...@@ -20,6 +20,7 @@ import adql.query.operand.NumericConstant;
import adql.query.operand.Operation; import adql.query.operand.Operation;
import adql.query.operand.StringConstant; import adql.query.operand.StringConstant;
import adql.query.operand.function.DefaultUDF; import adql.query.operand.function.DefaultUDF;
import adql.query.operand.function.UnitConversionFunction;
import adql.query.operand.function.geometry.AreaFunction; import adql.query.operand.function.geometry.AreaFunction;
import adql.query.operand.function.geometry.BoxFunction; import adql.query.operand.function.geometry.BoxFunction;
import adql.query.operand.function.geometry.CentroidFunction; import adql.query.operand.function.geometry.CentroidFunction;
...@@ -173,6 +174,11 @@ public class TestJDBCTranslator { ...@@ -173,6 +174,11 @@ public class TestJDBCTranslator {
public final static class AJDBCTranslator extends JDBCTranslator { public final static class AJDBCTranslator extends JDBCTranslator {
@Override
public String translate(UnitConversionFunction fct) throws TranslationException {
return null;
}
@Override @Override
public String translate(ExtractCoord extractCoord) throws TranslationException { public String translate(ExtractCoord extractCoord) throws TranslationException {
return null; return null;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment