@Override public void putNormalizedKey(T record, MemorySegment target, int offset, int numBytes) { NormalizableKey<?> key = (NormalizableKey<?>) record; key.copyNormalizedKey(target, offset, numBytes); }
@Override public int getNormalizeKeyLen() { NormalizableKey<?> key = (NormalizableKey<?>) reference; return key.getMaxNormalizedKeyLen(); }
@SuppressWarnings("unchecked") private <T extends Comparable<T>> void assertNormalizableKey(NormalizableKey<T> key1, NormalizableKey<T> key2, int len) { byte[] normalizedKeys = new byte[2*len]; MemorySegment wrapper = new MemorySegment(normalizedKeys); key1.copyNormalizedKey(wrapper, 0, len); key2.copyNormalizedKey(wrapper, len, len); for (int i = 0; i < len; i++) { int comp; int normKey1 = normalizedKeys[i] & 0xFF; int normKey2 = normalizedKeys[len + i] & 0xFF; if ((comp = (normKey1 - normKey2)) != 0) { if (Math.signum(((T) key1).compareTo((T) key2)) != Math.signum(comp)) { Assert.fail("Normalized key comparison differs from actual key comparision"); } return; } } if (((T) key1).compareTo((T) key2) != 0 && key1.getMaxNormalizedKeyLen() <= len) { Assert.fail("Normalized key was not able to distinguish keys, " + "although it should as the length of it sufficies to uniquely identify them"); } }
@Override public int getNormalizeKeyLen() { if (this.reference == null) { this.reference = InstantiationUtil.instantiate(this.type); } NormalizableKey<?> key = (NormalizableKey<?>) this.reference; return key.getMaxNormalizedKeyLen(); }
@Override public void putNormalizedKey(T record, MemorySegment target, int offset, int numBytes) { NormalizableKey<?> key = (NormalizableKey<?>) record; key.copyNormalizedKey(target, offset, numBytes); }
@Override public int getNormalizeKeyLen() { ensureReferenceInstantiated(); NormalizableKey<?> key = (NormalizableKey<?>) reference; return key.getMaxNormalizedKeyLen(); }
@Override public void putNormalizedKey(T record, MemorySegment target, int offset, int numBytes) { NormalizableKey<?> key = (NormalizableKey<?>) record; key.copyNormalizedKey(target, offset, numBytes); }
@Override public int getNormalizeKeyLen() { if (reference == null) { reference = InstantiationUtil.instantiate(type, Value.class); } NormalizableKey<?> key = (NormalizableKey<?>) reference; return key.getMaxNormalizedKeyLen(); }
@Override public void putNormalizedKey(T record, MemorySegment target, int offset, int numBytes) { NormalizableKey<?> key = (NormalizableKey<?>) record; key.copyNormalizedKey(target, offset, numBytes); }
final int len = ((NormalizableKey<?>) k).getMaxNormalizedKeyLen(); if (len < 0) { throw new RuntimeException("Data type " + k.getClass().getName() +
@Override public void putNormalizedKey(Record record, MemorySegment target, int offset, int numBytes) { int i = 0; try { for (; i < this.numLeadingNormalizableKeys & numBytes > 0; i++) { int len = this.normalizedKeyLengths[i]; len = numBytes >= len ? len : numBytes; ((NormalizableKey<?>) record.getField(this.keyFields[i], this.transientKeyHolders[i])).copyNormalizedKey(target, offset, len); numBytes -= len; offset += len; } } catch (NullPointerException npex) { throw new NullKeyFieldException(this.keyFields[i]); } }