Example #1
0
 // TODO: cache?
 public static LiteralExpression newConstant(Object value, Determinism determinism) {
   if (value instanceof Boolean) {
     return getBooleanLiteralExpression((Boolean) value, determinism);
   } else if (value == null) {
     return getNullLiteralExpression(determinism);
   }
   PDataType type = PDataType.fromLiteral(value);
   byte[] b = type.toBytes(value);
   if (type.isNull(b)) {
     return getTypedNullLiteralExpression(type, determinism);
   }
   if (type == PVarchar.INSTANCE) {
     String s = (String) value;
     if (s.length() == b.length) { // single byte characters only
       type = PChar.INSTANCE;
     }
   }
   return new LiteralExpression(value, type, b, determinism);
 }