@Override public boolean isEqual(Object v1, Object v2) { if (v1 != null && v2 != null) { long l1 = PrimitiveObjectInspectorUtils.getLong(v1, (PrimitiveObjectInspector) expressionDef.getOI()); long l2 = PrimitiveObjectInspectorUtils.getLong(v2, (PrimitiveObjectInspector) expressionDef.getOI()); return l1 == l2; } return v1 == null && v2 == null; // True if both are null } }
@Override public boolean isDistanceGreater(Object v1, Object v2, int amt) { if (v1 != null && v2 != null) { double d1 = PrimitiveObjectInspectorUtils.getDouble(v1, (PrimitiveObjectInspector) expressionDef.getOI()); double d2 = PrimitiveObjectInspectorUtils.getDouble(v2, (PrimitiveObjectInspector) expressionDef.getOI()); return (d1 -d2) > amt; } return v1 != null || v2 != null; // True if only one value is null }
@Override public boolean isDistanceGreater(Object v1, Object v2, int amt) { if (v1 != null && v2 != null) { long l1 = PrimitiveObjectInspectorUtils.getLong(v1, (PrimitiveObjectInspector) expressionDef.getOI()); long l2 = PrimitiveObjectInspectorUtils.getLong(v2, (PrimitiveObjectInspector) expressionDef.getOI()); return (l1 -l2) > amt; } return v1 != null || v2 != null; // True if only one value is null }
@Override public boolean isEqual(Object v1, Object v2) { String s1 = PrimitiveObjectInspectorUtils.getString(v1, (PrimitiveObjectInspector) expressionDef.getOI()); String s2 = PrimitiveObjectInspectorUtils.getString(v2, (PrimitiveObjectInspector) expressionDef.getOI()); return (s1 == null && s2 == null) || (s1 != null && s1.equals(s2)); } }
@Override public boolean isEqual(Object v1, Object v2) { if (v1 != null && v2 != null) { double d1 = PrimitiveObjectInspectorUtils.getDouble(v1, (PrimitiveObjectInspector) expressionDef.getOI()); double d2 = PrimitiveObjectInspectorUtils.getDouble(v2, (PrimitiveObjectInspector) expressionDef.getOI()); return d1 == d2; } return v1 == null && v2 == null; // True if both are null } }
@Override public boolean isDistanceGreater(Object v1, Object v2, int amt) { String s1 = PrimitiveObjectInspectorUtils.getString(v1, (PrimitiveObjectInspector) expressionDef.getOI()); String s2 = PrimitiveObjectInspectorUtils.getString(v2, (PrimitiveObjectInspector) expressionDef.getOI()); return s1 != null && s2 != null && s1.compareTo(s2) > 0; }
@Override public boolean isEqual(Object v1, Object v2) { if (v1 != null && v2 != null) { long l1 = PrimitiveObjectInspectorUtils.getLong(v1, (PrimitiveObjectInspector) expressionDef.getOI()); long l2 = PrimitiveObjectInspectorUtils.getLong(v2, (PrimitiveObjectInspector) expressionDef.getOI()); return l1 == l2; } return v1 == null && v2 == null; // True if both are null } }
@Override public boolean isDistanceGreater(Object v1, Object v2, int amt) { Date l1 = PrimitiveObjectInspectorUtils.getDate(v1, (PrimitiveObjectInspector) expressionDef.getOI()); Date l2 = PrimitiveObjectInspectorUtils.getDate(v2, (PrimitiveObjectInspector) expressionDef.getOI()); if (l1 != null && l2 != null) { return (double)(l1.getTime() - l2.getTime())/1000 > (long)amt * 24 * 3600; // Converts amt days to milliseconds } return l1 != l2; // True if only one date is null }
@Override public boolean isEqual(Object v1, Object v2) { String s1 = PrimitiveObjectInspectorUtils.getString(v1, (PrimitiveObjectInspector) expressionDef.getOI()); String s2 = PrimitiveObjectInspectorUtils.getString(v2, (PrimitiveObjectInspector) expressionDef.getOI()); return (s1 == null && s2 == null) || (s1 != null && s1.equals(s2)); } }
@Override public boolean isEqual(Object v1, Object v2) { HiveDecimal d1 = PrimitiveObjectInspectorUtils.getHiveDecimal(v1, (PrimitiveObjectInspector) expressionDef.getOI()); HiveDecimal d2 = PrimitiveObjectInspectorUtils.getHiveDecimal(v2, (PrimitiveObjectInspector) expressionDef.getOI()); if ( d1 != null && d2 != null ) { return d1.equals(d2); } return d1 == null && d2 == null; // True if both are null } }
@Override public boolean isEqual(Object v1, Object v2) { Date l1 = PrimitiveObjectInspectorUtils.getDate(v1, (PrimitiveObjectInspector) expressionDef.getOI()); Date l2 = PrimitiveObjectInspectorUtils.getDate(v2, (PrimitiveObjectInspector) expressionDef.getOI()); return (l1 == null && l2 == null) || (l1 != null && l1.equals(l2)); } }
@Override public boolean isEqual(Object v1, Object v2) { if (v1 != null && v2 != null) { Timestamp l1 = PrimitiveObjectInspectorUtils.getTimestamp(v1, (PrimitiveObjectInspector) expressionDef.getOI()); Timestamp l2 = PrimitiveObjectInspectorUtils.getTimestamp(v2, (PrimitiveObjectInspector) expressionDef.getOI()); return l1.equals(l2); } return v1 == null && v2 == null; // True if both are null } }
@Override public boolean isEqual(Object v1, Object v2) { if (v1 != null && v2 != null) { TimestampTZ l1 = PrimitiveObjectInspectorUtils.getTimestampLocalTZ(v1, (PrimitiveObjectInspector) expressionDef.getOI(), null); TimestampTZ l2 = PrimitiveObjectInspectorUtils.getTimestampLocalTZ(v2, (PrimitiveObjectInspector) expressionDef.getOI(), null); return l1.equals(l2); } return v1 == null && v2 == null; // True if both are null } }
@Override public boolean isDistanceGreater(Object v1, Object v2, int amt) { Date l1 = PrimitiveObjectInspectorUtils.getDate(v1, (PrimitiveObjectInspector) expressionDef.getOI()); Date l2 = PrimitiveObjectInspectorUtils.getDate(v2, (PrimitiveObjectInspector) expressionDef.getOI()); if (l1 != null && l2 != null) { return (double)(l1.toEpochMilli() - l2.toEpochMilli())/1000 > (long)amt * 24 * 3600; // Converts amt days to milliseconds } return l1 != l2; // True if only one date is null }
@Override public boolean isDistanceGreater(Object v1, Object v2, int amt) { if (v1 != null && v2 != null) { long l1 = PrimitiveObjectInspectorUtils.getTimestamp(v1, (PrimitiveObjectInspector) expressionDef.getOI()).toEpochMilli(); long l2 = PrimitiveObjectInspectorUtils.getTimestamp(v2, (PrimitiveObjectInspector) expressionDef.getOI()).toEpochMilli(); return (double)(l1-l2)/1000 > amt; // TODO: lossy conversion, distance is considered in seconds } return v1 != null || v2 != null; // True if only one value is null }
@Override public boolean isDistanceGreater(Object v1, Object v2, int amt) { if (v1 != null && v2 != null) { long l1 = PrimitiveObjectInspectorUtils.getTimestampLocalTZ(v1, (PrimitiveObjectInspector) expressionDef.getOI(), null).getEpochSecond(); long l2 = PrimitiveObjectInspectorUtils.getTimestampLocalTZ(v2, (PrimitiveObjectInspector) expressionDef.getOI(), null).getEpochSecond(); return (l1 -l2) > amt; // TODO: lossy conversion, distance is considered seconds similar to timestamp } return v1 != null || v2 != null; // True if only one value is null }
@Override public boolean isDistanceGreater(Object v1, Object v2, int amt) { HiveDecimal d1 = PrimitiveObjectInspectorUtils.getHiveDecimal(v1, (PrimitiveObjectInspector) expressionDef.getOI()); HiveDecimal d2 = PrimitiveObjectInspectorUtils.getHiveDecimal(v2, (PrimitiveObjectInspector) expressionDef.getOI()); if ( d1 != null && d2 != null ) { return d1.subtract(d2).intValue() > amt; // TODO: lossy conversion! } return d1 != null || d2 != null; // True if only one value is null }
public Object[] computeValues(Object row) throws HiveException { Object[] objs = new Object[orderDef.getExpressions().size()]; for (int i = 0; i < objs.length; i++) { Object o = orderDef.getExpressions().get(i).getExprEvaluator().evaluate(row); objs[i] = ObjectInspectorUtils.copyToStandardObject(o, orderDef.getExpressions().get(i).getOI()); } return objs; }
public Object computeValue(Object row) throws HiveException { Object o = expressionDef.getExprEvaluator().evaluate(row); return ObjectInspectorUtils.copyToStandardObject(o, expressionDef.getOI()); }
public Object[] computeValues(Object row) throws HiveException { Object[] objs = new Object[orderDef.getExpressions().size()]; for (int i = 0; i < objs.length; i++) { Object o = orderDef.getExpressions().get(i).getExprEvaluator().evaluate(row); objs[i] = ObjectInspectorUtils.copyToStandardObject(o, orderDef.getExpressions().get(i).getOI()); } return objs; }