Loading src/adql/translator/MySQLTranslator.java +15 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import adql.query.operand.ADQLOperand; import adql.query.operand.Concatenation; import adql.query.operand.Operation; import adql.query.operand.function.InUnitFunction; 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; Loading Loading @@ -205,6 +206,20 @@ public class MySQLTranslator extends JDBCTranslator { } } @Override public String translate(MathFunction fct) throws TranslationException { switch(fct.getType()) { case TRUNCATE: if (fct.getNbParameters() >= 2) return "truncate(" + translate(fct.getParameter(0)) + ", " + translate(fct.getParameter(1)) + ")"; else return "truncate(" + translate(fct.getParameter(0)) + ", 0)"; default: return getDefaultADQLFunction(fct); } } @Override public String translate(Comparison comp) throws TranslationException { switch(comp.getOperator()) { Loading src/adql/translator/PostgreSQLTranslator.java +2 −6 Original line number Diff line number Diff line Loading @@ -204,17 +204,13 @@ public class PostgreSQLTranslator extends JDBCTranslator { case TRUNCATE: if (fct.getNbParameters() >= 2) return "trunc(CAST(" + translate(fct.getParameter(0)) + " AS numeric), " + translate(fct.getParameter(1)) + ")"; else if (fct.getNbParameters() >= 1) return "trunc(CAST(" + translate(fct.getParameter(0)) + " AS numeric)" + ")"; else return "trunc()"; return "trunc(CAST(" + translate(fct.getParameter(0)) + " AS numeric)" + ")"; case ROUND: if (fct.getNbParameters() >= 2) return "round(CAST(" + translate(fct.getParameter(0)) + " AS numeric), " + translate(fct.getParameter(1)) + ")"; else if (fct.getNbParameters() >= 1) return "round(CAST(" + translate(fct.getParameter(0)) + " AS numeric))"; else return "round()"; return "round(CAST(" + translate(fct.getParameter(0)) + " AS numeric))"; case PI: return getDefaultADQLFunction(fct); default: Loading src/adql/translator/SQLServerTranslator.java +8 −2 Original line number Diff line number Diff line Loading @@ -456,7 +456,10 @@ public class SQLServerTranslator extends JDBCTranslator { switch(fct.getType()) { case TRUNCATE: // third argument to round nonzero means do a truncate return "round(convert(float, " + ((fct.getNbParameters() >= 2) ? (translate(fct.getParameter(0)) + ", " + translate(fct.getParameter(1))) : "") + "),1)"; if (fct.getNbParameters() >= 2) return "round(convert(float, " + translate(fct.getParameter(0)) + "), convert(float, " + translate(fct.getParameter(1)) + "), 1)"; else return "round(convert(float, " + translate(fct.getParameter(0)) + "), 0, 1)"; case MOD: return ((fct.getNbParameters() >= 2) ? ("convert(float, " + translate(fct.getParameter(0)) + ") % convert(float, " + translate(fct.getParameter(1)) + ")") : ""); case ATAN2: Loading @@ -478,7 +481,10 @@ public class SQLServerTranslator extends JDBCTranslator { case RADIANS: return "radians(convert(float, " + translate(fct.getParameter(0)) + "))"; case ROUND: if (fct.getNbParameters() >= 2) return "round(convert(float, " + translate(fct.getParameter(0)) + ")" + ", " + translate(fct.getParameter(1)) + ")"; else return "round(convert(float, " + translate(fct.getParameter(0)) + ")" + ", 0)"; default: return getDefaultADQLFunction(fct); Loading Loading
src/adql/translator/MySQLTranslator.java +15 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import adql.query.operand.ADQLOperand; import adql.query.operand.Concatenation; import adql.query.operand.Operation; import adql.query.operand.function.InUnitFunction; 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; Loading Loading @@ -205,6 +206,20 @@ public class MySQLTranslator extends JDBCTranslator { } } @Override public String translate(MathFunction fct) throws TranslationException { switch(fct.getType()) { case TRUNCATE: if (fct.getNbParameters() >= 2) return "truncate(" + translate(fct.getParameter(0)) + ", " + translate(fct.getParameter(1)) + ")"; else return "truncate(" + translate(fct.getParameter(0)) + ", 0)"; default: return getDefaultADQLFunction(fct); } } @Override public String translate(Comparison comp) throws TranslationException { switch(comp.getOperator()) { Loading
src/adql/translator/PostgreSQLTranslator.java +2 −6 Original line number Diff line number Diff line Loading @@ -204,17 +204,13 @@ public class PostgreSQLTranslator extends JDBCTranslator { case TRUNCATE: if (fct.getNbParameters() >= 2) return "trunc(CAST(" + translate(fct.getParameter(0)) + " AS numeric), " + translate(fct.getParameter(1)) + ")"; else if (fct.getNbParameters() >= 1) return "trunc(CAST(" + translate(fct.getParameter(0)) + " AS numeric)" + ")"; else return "trunc()"; return "trunc(CAST(" + translate(fct.getParameter(0)) + " AS numeric)" + ")"; case ROUND: if (fct.getNbParameters() >= 2) return "round(CAST(" + translate(fct.getParameter(0)) + " AS numeric), " + translate(fct.getParameter(1)) + ")"; else if (fct.getNbParameters() >= 1) return "round(CAST(" + translate(fct.getParameter(0)) + " AS numeric))"; else return "round()"; return "round(CAST(" + translate(fct.getParameter(0)) + " AS numeric))"; case PI: return getDefaultADQLFunction(fct); default: Loading
src/adql/translator/SQLServerTranslator.java +8 −2 Original line number Diff line number Diff line Loading @@ -456,7 +456,10 @@ public class SQLServerTranslator extends JDBCTranslator { switch(fct.getType()) { case TRUNCATE: // third argument to round nonzero means do a truncate return "round(convert(float, " + ((fct.getNbParameters() >= 2) ? (translate(fct.getParameter(0)) + ", " + translate(fct.getParameter(1))) : "") + "),1)"; if (fct.getNbParameters() >= 2) return "round(convert(float, " + translate(fct.getParameter(0)) + "), convert(float, " + translate(fct.getParameter(1)) + "), 1)"; else return "round(convert(float, " + translate(fct.getParameter(0)) + "), 0, 1)"; case MOD: return ((fct.getNbParameters() >= 2) ? ("convert(float, " + translate(fct.getParameter(0)) + ") % convert(float, " + translate(fct.getParameter(1)) + ")") : ""); case ATAN2: Loading @@ -478,7 +481,10 @@ public class SQLServerTranslator extends JDBCTranslator { case RADIANS: return "radians(convert(float, " + translate(fct.getParameter(0)) + "))"; case ROUND: if (fct.getNbParameters() >= 2) return "round(convert(float, " + translate(fct.getParameter(0)) + ")" + ", " + translate(fct.getParameter(1)) + ")"; else return "round(convert(float, " + translate(fct.getParameter(0)) + ")" + ", 0)"; default: return getDefaultADQLFunction(fct); Loading