@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { Object arg0 = arguments[0].get(); Object arg1 = arguments[1].get(); if (arg0 == null || arg1 == null) { return arg0; } PrimitiveObjectInspector compareOI = (PrimitiveObjectInspector) returnOIResolver.get(); if (PrimitiveObjectInspectorUtils.comparePrimitiveObjects( arg0, compareOI, returnOIResolver.convertIfNecessary(arg1, argumentOIs[1], false), compareOI)) { return null; } return arg0; }
/** * Compare 2 Primitive Objects with their Object Inspector, conversions * allowed. Note that NULL does not equal to NULL according to SQL standard. */ public static boolean comparePrimitiveObjectsWithConversion(Object o1, PrimitiveObjectInspector oi1, Object o2, PrimitiveObjectInspector oi2) { if (o1 == null || o2 == null) { return false; } if (oi1.getPrimitiveCategory() == oi2.getPrimitiveCategory()) { return comparePrimitiveObjects(o1, oi1, o2, oi2); } // If not equal, convert all to double and compare try { return getDouble(o1, oi1) == getDouble(o2, oi2); } catch (NumberFormatException e) { return false; } }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { Object arg0 = arguments[0].get(); Object arg1 = arguments[1].get(); Object value0 = null; if (arg0 != null) { value0 = returnOIResolver.convertIfNecessary(arg0, argumentOIs[0], false); } if (arg0 == null || arg1 == null) { return value0; } PrimitiveObjectInspector compareOI = (PrimitiveObjectInspector) returnOIResolver.get(); if (PrimitiveObjectInspectorUtils.comparePrimitiveObjects( value0, compareOI, returnOIResolver.convertIfNecessary(arg1, argumentOIs[1], false), compareOI)) { return null; } return value0; }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { Object exprValue = arguments[0].get(); for (int i = 1; i + 1 < arguments.length; i += 2) { Object caseKey = arguments[i].get(); // May need to convert to common type to compare PrimitiveObjectInspector caseOI = (PrimitiveObjectInspector) caseOIResolver.get(); if (PrimitiveObjectInspectorUtils.comparePrimitiveObjects( caseOIResolver.convertIfNecessary(exprValue, argumentOIs[0]), caseOI, caseOIResolver.convertIfNecessary(caseKey, argumentOIs[i], false), caseOI)) { Object caseValue = arguments[i + 1].get(); return returnOIResolver.convertIfNecessary(caseValue, argumentOIs[i + 1]); } } // Process else statement if (arguments.length % 2 == 0) { int i = arguments.length - 2; Object elseValue = arguments[i + 1].get(); return returnOIResolver.convertIfNecessary(elseValue, argumentOIs[i + 1]); } return null; }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { Object exprValue = arguments[0].get(); for (int i = 1; i + 1 < arguments.length; i += 2) { Object caseKey = arguments[i].get(); // May need to convert to common type to compare PrimitiveObjectInspector caseOI = (PrimitiveObjectInspector) caseOIResolver.get(); if (PrimitiveObjectInspectorUtils.comparePrimitiveObjects( caseOIResolver.convertIfNecessary(exprValue, argumentOIs[0]), caseOI, caseOIResolver.convertIfNecessary(caseKey, argumentOIs[i], false), caseOI)) { Object caseValue = arguments[i + 1].get(); return returnOIResolver.convertIfNecessary(caseValue, argumentOIs[i + 1]); } } // Process else statement if (arguments.length % 2 == 0) { int i = arguments.length - 2; Object elseValue = arguments[i + 1].get(); return returnOIResolver.convertIfNecessary(elseValue, argumentOIs[i + 1]); } return null; }
/** * Compare 2 Primitive Objects with their Object Inspector, conversions * allowed. Note that NULL does not equal to NULL according to SQL standard. */ public static boolean comparePrimitiveObjectsWithConversion(Object o1, PrimitiveObjectInspector oi1, Object o2, PrimitiveObjectInspector oi2) { if (o1 == null || o2 == null) { return false; } if (oi1.getPrimitiveCategory() == oi2.getPrimitiveCategory()) { return comparePrimitiveObjects(o1, oi1, o2, oi2); } // If not equal, convert all to double and compare try { return convertPrimitiveToDouble(o1, oi1) == convertPrimitiveToDouble(o2, oi2); } catch (NumberFormatException e) { return false; } }
/** * Compare 2 Primitive Objects with their Object Inspector, conversions * allowed. Note that NULL does not equal to NULL according to SQL standard. */ public static boolean comparePrimitiveObjectsWithConversion(Object o1, PrimitiveObjectInspector oi1, Object o2, PrimitiveObjectInspector oi2) { if (o1 == null || o2 == null) { return false; } if (oi1.getPrimitiveCategory() == oi2.getPrimitiveCategory()) { return comparePrimitiveObjects(o1, oi1, o2, oi2); } // If not equal, convert all to double and compare try { return getDouble(o1, oi1) == getDouble(o2, oi2); } catch (NumberFormatException e) { return false; } }
/** * Compare 2 Primitive Objects with their Object Inspector, conversions * allowed. Note that NULL does not equal to NULL according to SQL standard. */ public static boolean comparePrimitiveObjectsWithConversion(Object o1, PrimitiveObjectInspector oi1, Object o2, PrimitiveObjectInspector oi2) { if (o1 == null || o2 == null) { return false; } if (oi1.getPrimitiveCategory() == oi2.getPrimitiveCategory()) { return comparePrimitiveObjects(o1, oi1, o2, oi2); } // If not equal, convert all to double and compare try { return convertPrimitiveToDouble(o1, oi1) == convertPrimitiveToDouble(o2, oi2); } catch (NumberFormatException e) { return false; } }
/** * Compare 2 Primitive Objects with their Object Inspector, conversions * allowed. Note that NULL does not equal to NULL according to SQL standard. */ public static boolean comparePrimitiveObjectsWithConversion(Object o1, PrimitiveObjectInspector oi1, Object o2, PrimitiveObjectInspector oi2) { if (o1 == null || o2 == null) { return false; } if (oi1.getPrimitiveCategory() == oi2.getPrimitiveCategory()) { return comparePrimitiveObjects(o1, oi1, o2, oi2); } // If not equal, convert all to double and compare try { return convertPrimitiveToDouble(o1, oi1) == convertPrimitiveToDouble(o2, oi2); } catch (NumberFormatException e) { return false; } }
/** * Compare 2 Primitive Objects with their Object Inspector, conversions * allowed. Note that NULL does not equal to NULL according to SQL standard. */ public static boolean comparePrimitiveObjectsWithConversion(Object o1, PrimitiveObjectInspector oi1, Object o2, PrimitiveObjectInspector oi2) { if (o1 == null || o2 == null) { return false; } if (oi1.getPrimitiveCategory() == oi2.getPrimitiveCategory()) { return comparePrimitiveObjects(o1, oi1, o2, oi2); } // If not equal, convert all to double and compare try { return convertPrimitiveToDouble(o1, oi1) == convertPrimitiveToDouble(o2, oi2); } catch (NumberFormatException e) { return false; } }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { Object exprValue = arguments[0].get(); for (int i = 1; i + 1 < arguments.length; i += 2) { Object caseKey = arguments[i].get(); if (PrimitiveObjectInspectorUtils.comparePrimitiveObjects(exprValue, (PrimitiveObjectInspector) argumentOIs[0], caseKey, (PrimitiveObjectInspector) argumentOIs[i])) { Object caseValue = arguments[i + 1].get(); return returnOIResolver.convertIfNecessary(caseValue, argumentOIs[i + 1]); } } // Process else statement if (arguments.length % 2 == 0) { int i = arguments.length - 2; Object elseValue = arguments[i + 1].get(); return returnOIResolver.convertIfNecessary(elseValue, argumentOIs[i + 1]); } return null; }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { Object exprValue = arguments[0].get(); for (int i = 1; i + 1 < arguments.length; i += 2) { Object caseKey = arguments[i].get(); // May need to convert to common type to compare PrimitiveObjectInspector caseOI = (PrimitiveObjectInspector) caseOIResolver.get(); if (PrimitiveObjectInspectorUtils.comparePrimitiveObjects( caseOIResolver.convertIfNecessary(exprValue, argumentOIs[0]), caseOI, caseOIResolver.convertIfNecessary(caseKey, argumentOIs[i], false), caseOI)) { Object caseValue = arguments[i + 1].get(); return returnOIResolver.convertIfNecessary(caseValue, argumentOIs[i + 1]); } } // Process else statement if (arguments.length % 2 == 0) { int i = arguments.length - 2; Object elseValue = arguments[i + 1].get(); return returnOIResolver.convertIfNecessary(elseValue, argumentOIs[i + 1]); } return null; }