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
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)
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)
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
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
def __init__(self, typename, nullable=True): if typename not in self.dtypes: raise com.UnsupportedBackendType(typename) self.typename = typename self.nullable = nullable