diff --git a/src/adql/translator/SQLServerTranslator.java b/src/adql/translator/SQLServerTranslator.java index 2afdcb3ec9923db4eb2d88cb051fa9f66314c731..b147bee54053ac18631feaba821b519f2720f5fe 100644 --- a/src/adql/translator/SQLServerTranslator.java +++ b/src/adql/translator/SQLServerTranslator.java @@ -19,18 +19,9 @@ package adql.translator; * Copyright 2016 - Astronomisches Rechen Institut (ARI) */ -import java.util.ArrayList; -import java.util.Iterator; - -import adql.db.DBChecker; -import adql.db.DBColumn; -import adql.db.DBTable; -import adql.db.DBType; +import adql.db.*; import adql.db.DBType.DBDatatype; -import adql.db.DefaultDBColumn; -import adql.db.DefaultDBTable; import adql.db.STCS.Region; -import adql.db.SearchColumnList; import adql.db.exception.UnresolvedJoinException; import adql.parser.ADQLParser; import adql.parser.ParseException; @@ -41,18 +32,10 @@ import adql.query.IdentifierField; import adql.query.from.ADQLJoin; import adql.query.operand.ADQLColumn; import adql.query.operand.function.MathFunction; -import adql.query.operand.function.geometry.AreaFunction; -import adql.query.operand.function.geometry.BoxFunction; -import adql.query.operand.function.geometry.CentroidFunction; -import adql.query.operand.function.geometry.CircleFunction; -import adql.query.operand.function.geometry.ContainsFunction; -import adql.query.operand.function.geometry.DistanceFunction; -import adql.query.operand.function.geometry.ExtractCoord; -import adql.query.operand.function.geometry.ExtractCoordSys; -import adql.query.operand.function.geometry.IntersectsFunction; -import adql.query.operand.function.geometry.PointFunction; -import adql.query.operand.function.geometry.PolygonFunction; -import adql.query.operand.function.geometry.RegionFunction; +import adql.query.operand.function.geometry.*; + +import java.util.ArrayList; +import java.util.Iterator; /** * <p>MS SQL Server translator.</p> @@ -343,6 +326,8 @@ public class SQLServerTranslator extends JDBCTranslator { return "round(" + ((fct.getNbParameters() >= 2) ? (translate(fct.getParameter(0)) + ", " + translate(fct.getParameter(1))) : "") + ",1)"; case MOD: return ((fct.getNbParameters() >= 2) ? (translate(fct.getParameter(0)) + "% " + translate(fct.getParameter(1))) : ""); + case ATAN2: + return "ATN2(" + translate(fct.getParameter(0)) + ", " + translate(fct.getParameter(1)) + ")"; default: return getDefaultADQLFunction(fct); } diff --git a/src/tap/data/ResultSetTableIterator.java b/src/tap/data/ResultSetTableIterator.java index 5bcbbfcabcb7936344123a68b7b6acb86aa6239b..0f2e10ccd558ca2a106de381b3a8521050537187 100644 --- a/src/tap/data/ResultSetTableIterator.java +++ b/src/tap/data/ResultSetTableIterator.java @@ -716,7 +716,7 @@ public class ResultSetTableIterator implements TableIterator { else if (colType != null && colValue != null && colType.type == DBDatatype.CHAR && (colType.length == 1 || colType.length <= 0) && colValue instanceof String) colValue = ((String)colValue).charAt(0); // if the column value is a geometrical object, it must be serialized in STC-S: - else if (translator != null && colType != null && colType.isGeometry()){ + else if ((translator != null && colType != null && colType.isGeometry()) || colType.type == DBDatatype.VARBINARY) { try{ Region region = translator.translateGeometryFromDB(colValue); if (region != null)