public void visit(NodeValue value) { logger.debug("visit NodeValue " + value); if (!convertable) { expression.push(Expression.FALSE); // prevent stack empty exceptions when conversion return; // fails in the middle of a multi-arg operator conversion } if (value.isDecimal() || value.isDouble() || value.isFloat() || value.isInteger() || value.isNumber()) { expression.push(new ConstantEx(value.asString(), value.asNode())); } else if (value.isDateTime()) { // Convert xsd:dateTime: CCYY-MM-DDThh:mm:ss // to SQL-92 TIMESTAMP: CCYY-MM-DD hh:mm:ss[.fraction] // TODO support time zones (WITH TIME ZONE columns) expression.push(new ConstantEx(value.asString().replace("T", " "), value.asNode())); } else { expression.push(new ConstantEx(value.asString(), value.asNode())); } }