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
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import adql.query.operand.WrappedOperand;
import adql.query.operand.function.ADQLFunction;
import adql.query.operand.function.MathFunction;
import adql.query.operand.function.SQLFunction;
import adql.query.operand.function.UnitConversionFunction;
import adql.query.operand.function.UserDefinedFunction;
import adql.query.operand.function.geometry.AreaFunction;
import adql.query.operand.function.geometry.BoxFunction;
@@ -151,6 +152,9 @@ public interface ADQLTranslator {
	/** @since 2.0 */
	public String translate(LowerFunction fct) throws TranslationException;

	/** @since 2.0 */
	public String translate(UnitConversionFunction fct) throws TranslationException;

	/* ***** GEOMETRICAL FUNCTIONS ***** */
	public String translate(GeometryFunction fct) throws TranslationException;

+3 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import adql.query.operand.function.ADQLFunction;
import adql.query.operand.function.MathFunction;
import adql.query.operand.function.SQLFunction;
import adql.query.operand.function.SQLFunctionType;
import adql.query.operand.function.UnitConversionFunction;
import adql.query.operand.function.UserDefinedFunction;
import adql.query.operand.function.geometry.AreaFunction;
import adql.query.operand.function.geometry.BoxFunction;
@@ -836,6 +837,8 @@ public abstract class JDBCTranslator implements ADQLTranslator {
			return translate((UserDefinedFunction)fct);
		else if (fct instanceof LowerFunction)
			return translate((LowerFunction)fct);
		else if (fct instanceof UnitConversionFunction)
			return translate((UnitConversionFunction)fct);
		else
			return getDefaultADQLFunction(fct);
	}
+7 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import adql.query.constraint.Comparison;
import adql.query.operand.ADQLOperand;
import adql.query.operand.Concatenation;
import adql.query.operand.Operation;
import adql.query.operand.function.UnitConversionFunction;
import adql.query.operand.function.geometry.AreaFunction;
import adql.query.operand.function.geometry.BoxFunction;
import adql.query.operand.function.geometry.CentroidFunction;
@@ -155,7 +156,7 @@ public class MySQLTranslator extends JDBCTranslator {
		switch(comp.getOperator()) {
			case ILIKE:
			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:
				return translate(comp.getLeftOperand()) + " " + comp.getOperator().toADQL() + " " + translate(comp.getRightOperand());
		}
@@ -177,6 +178,11 @@ public class MySQLTranslator extends JDBCTranslator {
		return translated.toString();
	}

	@Override
	public String translate(final UnitConversionFunction fct) throws TranslationException {
		return getDefaultADQLFunction(fct);
	}

	/* ********************************************************************** */
	/* *                                                                    * */
	/* * TYPE MANAGEMENT                                                    * */
+6 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import adql.query.operand.OperationType;
import adql.query.operand.StringConstant;
import adql.query.operand.function.ADQLFunction;
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.BoxFunction;
import adql.query.operand.function.geometry.CentroidFunction;
@@ -175,6 +176,11 @@ public class PostgreSQLTranslator extends JDBCTranslator {
		}
	}

	@Override
	public String translate(final UnitConversionFunction fct) throws TranslationException {
		return getDefaultADQLFunction(fct);
	}

	@Override
	public String translate(ExtractCoord extractCoord) throws TranslationException {
		return getDefaultADQLFunction(extractCoord);
+7 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import adql.query.operand.ADQLColumn;
import adql.query.operand.ADQLOperand;
import adql.query.operand.Concatenation;
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.BoxFunction;
import adql.query.operand.function.geometry.CentroidFunction;
@@ -194,12 +195,17 @@ public class SQLServerTranslator extends JDBCTranslator {
		switch(comp.getOperator()) {
			case ILIKE:
			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:
				return translate(comp.getLeftOperand()) + " " + comp.getOperator().toADQL() + " " + translate(comp.getRightOperand());
		}
	}

	@Override
	public String translate(final UnitConversionFunction fct) throws TranslationException {
		return getDefaultADQLFunction(fct);
	}

	@Override
	public String translate(Concatenation concat) throws TranslationException {
		StringBuffer translated = new StringBuffer();
Loading