in java/clickhouse-client/src/main/java/com/epam/deltix/clickhouse/writer/WriterCodecGenerator.java [266:369]
private void processSimpleType(MethodVisitor methodVisitor, String memberName,
Class<?> memberDataType, String memberTypeDescriptor,
DataTypes dbDataTypeValue) {
if (IntrospectionType.BY_GETTERS == introspectionType)
invokeCommonLoadGetterInstructions(methodVisitor, memberName, memberTypeDescriptor);
else if (IntrospectionType.BY_FIELDS == introspectionType)
invokeCommonLoadFieldInstructions(methodVisitor, memberName, memberTypeDescriptor);
else
throw unsupportedIntrospectionType();
switch (dbDataTypeValue) {
case ENUM8:
case ENUM16:
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_ENUM_NAME, CodecUtil.PROCESS_ENUM_DESC, false);
break;
case STRING:
case FIXED_STRING:
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_STRING_NAME, CodecUtil.PROCESS_STRING_DESC, false);
break;
case UINT8:
if (memberDataType.isPrimitive())
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_BOOLEAN_NAME, CodecUtil.PROCESS_PRIMITIVE_BOOLEAN_DESC, false);
else
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_BOOLEAN_NAME, CodecUtil.PROCESS_BOOLEAN_DESC, false);
break;
case UINT16:
case UINT32:
case UINT64:
throw unsupportedDataTypeException(dbDataTypeValue, memberDataType);
case INT8:
if (memberDataType.isPrimitive())
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_BYTE_NAME, CodecUtil.PROCESS_PRIMITIVE_BYTE_DESC, false);
else
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_BYTE_NAME, CodecUtil.PROCESS_BYTE_DESC, false);
break;
case INT16:
if (memberDataType.isPrimitive())
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_SHORT_NAME, CodecUtil.PROCESS_PRIMITIVE_SHORT_DESC, false);
else
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_SHORT_NAME, CodecUtil.PROCESS_SHORT_DESC, false);
break;
case INT32:
if (memberDataType.isPrimitive())
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_INTEGER_NAME, CodecUtil.PROCESS_PRIMITIVE_INTEGER_DESC, false);
else
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_INTEGER_NAME, CodecUtil.PROCESS_INTEGER_DESC, false);
break;
case INT64:
if (memberDataType.isPrimitive())
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_LONG_NAME, CodecUtil.PROCESS_PRIMITIVE_LONG_DESC, false);
else if (memberDataType.equals(Long.class))
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_LONG_NAME, CodecUtil.PROCESS_LONG_DESC, false);
else if (memberDataType.equals(Instant.class))
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_INSTANT_AS_LONG_NAME, CodecUtil.PROCESS_INSTANT_DESC, false);
else if (memberDataType.equals(Duration.class))
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_DURATION_AS_LONG_NAME, CodecUtil.PROCESS_DURATION_DESC, false);
break;
case FLOAT32:
if (memberDataType.isPrimitive())
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_FLOAT_NAME, CodecUtil.PROCESS_PRIMITIVE_FLOAT_DESC, false);
else
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_FLOAT_NAME, CodecUtil.PROCESS_FLOAT_DESC, false);
break;
case FLOAT64:
if (memberDataType.isPrimitive())
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_DOUBLE_NAME, CodecUtil.PROCESS_PRIMITIVE_DOUBLE_DESC, false);
else
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_DOUBLE_NAME, CodecUtil.PROCESS_DOUBLE_DESC, false);
break;
case DECIMAL:
case DECIMAL32:
case DECIMAL64:
case DECIMAL128:
if (memberDataType.equals(Decimal64.class))
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_DECIMAL64_NAME, CodecUtil.PROCESS_DECIMAL64_DESC, false);
else if (memberDataType.equals(BigDecimal.class))
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_BIG_DECIMAL_NAME, CodecUtil.PROCESS_BIG_DECIMAL_DESC, false);
break;
case DATE:
if (memberDataType.equals(long.class))
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_DATE_NAME, CodecUtil.PROCESS_DATE_BY_PRIMITIVE_LONG_DESC, false);
else if (memberDataType.equals(Long.class))
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_DATE_NAME, CodecUtil.PROCESS_DATE_BY_LONG_DESC, false);
else if (memberDataType.equals(LocalDate.class))
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_DATE_NAME, CodecUtil.PROCESS_DATE_BY_LOCAL_DATE_DESC, false);
break;
case DATE_TIME:
case DATE_TIME64:
if (memberDataType.equals(Instant.class))
methodVisitor.visitMethodInsn(INVOKESTATIC, CodecUtil.INTERNAL_NAME, CodecUtil.PROCESS_INSTANT_NAME, CodecUtil.PROCESS_INSTANT_DESC, false);
break;
default:
throw unsupportedDataTypeException(dbDataTypeValue, memberDataType);
}
storeParameterIndexValue(methodVisitor);
}