Overview Schemas Index

Expression_arm (jsdai.SExpression_arm)


FUNCTION Is_sql_mappable
          (arg : Expression) : BOOLEAN;

LOCAL
          i: INTEGER;
END_LOCAL;

IF 'EXPRESSION_ARM.SIMPLE_NUMERIC_EXPRESSION' 
                                                                                IN TYPEOF  (arg) 
THEN 
          RETURN (TRUE);
END_IF;
IF 'EXPRESSION_ARM.SQL_MAPPABLE_DEFINED_FUNCTION' 
                                                                                IN TYPEOF  (arg) 
THEN 
          RETURN (TRUE);
END_IF;
IF 'EXPRESSION_ARM.MINUS_FUNCTION' IN  TYPEOF(arg) 
THEN 
          RETURN (Is_sql_mappable(arg\Unary_numeric_expression.operand)); 
END_IF;
IF ('EXPRESSION_ARM.ABS_FUNCTION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.SIN_FUNCTION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.COS_FUNCTION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.TAN_FUNCTION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.ASIN_FUNCTION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.ACOS_FUNCTION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.ATAN_FUNCTION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.EXP_FUNCTION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.LOG_FUNCTION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.LOG2_FUNCTION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.LOG10_FUNCTION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.SQUARE_ROOT_FUNCTION' 
                                                                                IN TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.VALUE_FUNCTION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.LENGTH_FUNCTION' 
                                                                                IN TYPEOF(arg))
THEN 
          RETURN (FALSE);
END_IF;
IF ('EXPRESSION_ARM.PLUS_EXPRESSION' IN  TYPEOF(arg)) 
                    OR('EXPRESSION_ARM.MULT_EXPRESSION' IN  TYPEOF(arg)) 
                    OR('EXPRESSION_ARM.MAXIMUM_FUNCTION' 
                                                                                IN TYPEOF(arg)) 
                    OR('EXPRESSION_ARM.MAXIMUM_FUNCTION' 
                                                                                IN TYPEOF(arg)) 
THEN 
          REPEAT i :=1 TO  SIZEOF  (
                              arg\Multiple_arity_numeric_expression.operands);
                    IF NOT  Is_sql_mappable(
                              arg\Multiple_arity_numeric_expression.operands[i])
                    THEN 
                              RETURN (FALSE);
                    END_IF;
          END_REPEAT;
RETURN (TRUE);
END_IF;
IF ('EXPRESSION_ARM.MINUS_EXPRESSION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.SLASH_EXPRESSION' IN  
                                                                                TYPEOF(arg))
THEN
                    RETURN (Is_sql_mappable(
                              arg\Binary_numeric_expression.operands[1])
                    AND Is_sql_mappable(arg\Binary_numeric_expression.operands[2]));
END_IF;
IF ('EXPRESSION_ARM.DIV_EXPRESSION' IN  TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.MOD_EXPRESSION' IN  TYPEOF(arg)) 
                    OR('EXPRESSION_ARM.POWER_EXPRESSION' 
                                                                                IN TYPEOF(arg))
THEN 
          RETURN (FALSE);          
END_IF;
IF 'EXPRESSION_ARM.SIMPLE_BOOLEAN_EXPRESSION' 
                                                                                IN TYPEOF  (arg) 
THEN 
          RETURN (TRUE);
END_IF;
IF 'EXPRESSION_ARM.NOT_EXPRESSION' IN  TYPEOF  (arg) 
THEN 
          RETURN (Is_sql_mappable (arg\UNARY_GENERIC_EXPRESSION.OPERAND));
END_IF;
IF ('EXPRESSION_ARM.ODD_FUNCTION'IN TYPEOF  (arg)) 
                    OR ('EXPRESSION_ARM.XOR_EXPRESSION' 
                                                                                IN TYPEOF  (arg)) 
THEN         
          RETURN (FALSE);
END_IF;
IF ('EXPRESSION_ARM.AND_EXPRESSION' IN  TYPEOF  (arg)) 
                    OR ('EXPRESSION_ARM.OR_EXPRESSION' IN  TYPEOF  (arg)) 
THEN
          REPEAT i:=1 TO SIZEOF (
                              arg\MULTIPLE_ARITY_BOOLEAN_EXPRESSION.OPERANDS);
                    IF NOT Is_sql_mappable (
                              arg\MULTIPLE_ARITY_BOOLEAN_EXPRESSION.OPERANDS[i]) 
                    THEN 
                              RETURN (FALSE);
                    END_IF;
          END_REPEAT;
          RETURN (TRUE);
END_IF;
IF 'EXPRESSION_ARM.EQUALS_EXPRESSION' IN  TYPEOF  (arg) 
THEN
          RETURN(Is_sql_mappable (
                              arg\Binary_generic_expression.OPERANDS [1])
                    AND Is_sql_mappable(
                              arg\Binary_generic_expression.OPERANDS [2]));
END_IF;
IF          ('EXPRESSION_ARM.COMPARISON_EQUAL' IN  TYPEOF  (arg)) 
                    OR ('EXPRESSION_ARM.COMPARISON_GREATER' 
                                                                                IN TYPEOF  (arg)) 
                    OR ('EXPRESSION_ARM.COMPARISON_GREATER_EQUAL'
                                                                                IN TYPEOF  (arg))
                    OR ('EXPRESSION_ARM.COMPARISON_LESS' 
                                                                                IN TYPEOF  (arg)) 
                    OR ('EXPRESSION_ARM.COMPARISON_LESS_EQUAL' 
                                                                                IN TYPEOF  (arg)) 
                    OR ('EXPRESSION_ARM.COMPARISON_NOT_EQUAL' 
                                                                                IN TYPEOF  (arg)) 
                    OR ('EXPRESSION_ARM.LIKE_EXPRESSION' 
                                                                                IN TYPEOF (arg)) 
THEN
          RETURN (Is_sql_mappable (arg\COMPARISON_EXPRESSION.OPERANDS[1])
                    AND Is_sql_mappable (arg\COMPARISON_EXPRESSION.OPERANDS[2]));
END_IF;
IF 'EXPRESSION_ARM.INTERVAL_EXPRESSION' IN  TYPEOF(arg) 
THEN 
          RETURN (Is_sql_mappable(arg\Interval_expression.interval_low) 
                    AND Is_sql_mappable(arg\Interval_expression.interval_high)
                    AND Is_sql_mappable(arg\Interval_expression.interval_item));
END_IF;
IF ('NUMERIC_FUNCTION_ARM.NUMERIC_DEFINED_FUNCTION' 
                                                                                IN TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.BOOLEAN_DEFINED_FUNCTION' 
                                                                                IN TYPEOF(arg))
                    OR ('EXPRESSION_ARM.STRING_DEFINED_FUNCTION' 
                                                                                IN TYPEOF(arg))  
THEN 
                    RETURN (FALSE) ;
END_IF;

IF 'EXPRESSION_ARM.SIMPLE_STRING_EXPRESSION' 
                                                                                IN TYPEOF(ARG) 
THEN 
          RETURN (TRUE);
END_IF;
IF           ('EXPRESSION_ARM.INDEX_EXPRESSION' IN TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.SUBSTRING_EXPRESSION' 
                                                                                IN TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.CONCAT_EXPRESSION' 
                                                                                IN TYPEOF(arg)) 
                    OR ('EXPRESSION_ARM.FORMAT_FUNCTION' 
                                                                                IN TYPEOF(arg)) 
THEN 
          RETURN (FALSE);
END_IF;

          RETURN (FALSE);

END_FUNCTION; -- Is_sql_mappable

public class FIs_sql_mappable
          public static Value run(SdaiContext _context, Value arg)