Exemplo n.º 1
0
 def __init__(self, typename, nullable=False):
     m = base_typename_re.match(typename)
     base_typename = m.groups()[0]
     if base_typename not in _clickhouse_dtypes:
         raise com.UnsupportedBackendType(typename)
     self.typename = base_typename
     self.nullable = nullable
Exemplo n.º 2
0
def _type_to_sql_string(tval):
    if isinstance(tval, dt.Decimal):
        return 'decimal({}, {})'.format(tval.precision, tval.scale)
    name = tval.name.lower()
    try:
        return _sql_type_names[name]
    except KeyError:
        raise com.UnsupportedBackendType(name)
Exemplo n.º 3
0
def type_to_sql_string(tval):
    if isinstance(tval, dt.Decimal):
        return f'decimal({tval.precision}, {tval.scale})'
    name = tval.name.lower()
    try:
        return sql_type_names[name]
    except KeyError:
        raise com.UnsupportedBackendType(name)
Exemplo n.º 4
0
def bq_param_array(param, value):
    param_type = param.type()
    assert isinstance(param_type, dt.Array), str(param_type)

    try:
        bigquery_type = ibis_type_to_bigquery_type(param_type.value_type)
    except NotImplementedError:
        raise com.UnsupportedBackendType(param_type)
    else:
        if isinstance(param_type.value_type, dt.Struct):
            query_value = [
                bigquery_param(param[i].name("element_{:d}".format(i)), struct)
                for i, struct in enumerate(value)
            ]
            bigquery_type = "STRUCT"
        elif isinstance(param_type.value_type, dt.Array):
            raise TypeError("ARRAY<ARRAY<T>> is not supported in BigQuery")
        else:
            query_value = value
        result = bq.ArrayQueryParameter(param.get_name(), bigquery_type, query_value)
        return result
Exemplo n.º 5
0
def cs_param_array(param, value):
    param_type = param.type()
    assert isinstance(param_type, dt.Array), str(param_type)

    try:
        spanner_type = ibis_type_to_cloud_spanner_type(param_type.value_type)
    except NotImplementedError:
        raise com.UnsupportedBackendType(param_type)
    else:
        if isinstance(param_type.value_type, dt.Struct):
            raise TypeError("ARRAY<STRUCT<T>> is not supported in Cloud Spanner")
        elif isinstance(param_type.value_type, dt.Array):
            raise TypeError("ARRAY<ARRAY<T>> is not supported in Cloud Spanner")
        else:
            query_value = value

        params = ({param.get_name(): query_value},)
        param_types = {param.get_name(): convert_to_cs_type(spanner_type)}
        final_dict = {"params": params, "param_types": param_types}

        return final_dict
Exemplo n.º 6
0
 def __init__(self, typename, nullable=True):
     if typename not in self.dtypes:
         raise com.UnsupportedBackendType(typename)
     self.typename = typename
     self.nullable = nullable