int get_convert_mode_for_unnest()

in holo-client-c/src/worker.c [557:594]


int get_convert_mode_for_unnest(Batch* batch, int colIdx) {
    int convertMode = 0;
    switch (batch->schema->columns[colIdx].type)
    {
    case HOLO_TYPE_TIMESTAMP:
    case HOLO_TYPE_TIMESTAMPTZ:
        if (batch->valueFormats[colIdx] == 1) {
            convertMode = 1;
        } else {
            convertMode = 3;
        }
        break;
    case HOLO_TYPE_INT4:
    case HOLO_TYPE_INT8:
    case HOLO_TYPE_INT2:
    case HOLO_TYPE_BOOL:
    case HOLO_TYPE_FLOAT4:
    case HOLO_TYPE_FLOAT8:
        convertMode = 1;
        break;
    case HOLO_TYPE_CHAR:
    case HOLO_TYPE_VARCHAR:
    case HOLO_TYPE_TEXT:
    case HOLO_TYPE_JSON:
    case HOLO_TYPE_JSONB:
        convertMode = 3;
        break;
    case HOLO_TYPE_BYTEA:
    case HOLO_TYPE_NUMERIC:
    case HOLO_TYPE_DATE:
        convertMode = 3;
        break;
    default:
        LOG_ERROR("Generate convertMode failed for unnest, type is %d.", batch->schema->columns[colIdx].type);
        break;
    }
    return convertMode;
}