def pa_to_trino_value_type(pa_type_as_str: str) -> str:
    pa_type_as_str = pa_type_as_str.lower()
    trino_type = '{}'
    if pa_type_as_str.startswith('list'):
        trino_type = 'array<{}>'
        pa_type_as_str = re.search('^list<item:\\s(.+)>$', pa_type_as_str).group(1)
    if pa_type_as_str.startswith('date'):
        return trino_type.format('date')
    if pa_type_as_str.startswith('timestamp'):
        if ('tz=' in pa_type_as_str):
            return trino_type.format('timestamp with time zone')
        else:
            return trino_type.format('timestamp')
    if pa_type_as_str.startswith('decimal'):
        return trino_type.format(pa_type_as_str)
    type_map = {'null': 'null', 'bool': 'boolean', 'int8': 'tinyint', 'int16': 'smallint', 'int32': 'int', 'int64': 'bigint', 'uint8': 'smallint', 'uint16': 'int', 'uint32': 'bigint', 'uint64': 'bigint', 'float': 'double', 'double': 'double', 'binary': 'binary', 'string': 'varchar'}
    return trino_type.format(type_map[pa_type_as_str])
def pa_to_trino_value_type(pa_type_as_str: str) -> str:
    pa_type_as_str = pa_type_as_str.lower()
    trino_type = '{}'
    if pa_type_as_str.startswith('list'):
        trino_type = 'array<{}>'
        pa_type_as_str = re.search('^list<item:\\s(.+)>$', pa_type_as_str).group(1)
    if pa_type_as_str.startswith('date'):
        return trino_type.format('date')
    if pa_type_as_str.startswith('timestamp'):
        if ('tz=' in pa_type_as_str):
            return trino_type.format('timestamp with time zone')
        else:
            return trino_type.format('timestamp')
    if pa_type_as_str.startswith('decimal'):
        return trino_type.format(pa_type_as_str)
    type_map = {'null': 'null', 'bool': 'boolean', 'int8': 'tinyint', 'int16': 'smallint', 'int32': 'int', 'int64': 'bigint', 'uint8': 'smallint', 'uint16': 'int', 'uint32': 'bigint', 'uint64': 'bigint', 'float': 'double', 'double': 'double', 'binary': 'binary', 'string': 'varchar'}
    return trino_type.format(type_map[pa_type_as_str])