def execute() -> QueryResult: return raw_query( clickhouse_query, request_settings, formatted_query, reader, timer, query_metadata, stats, span.trace_id, robust=robust, )
def _format_storage_query_and_run( timer: Timer, query_metadata: SnubaQueryMetadata, from_date: datetime, to_date: datetime, referrer: str, clickhouse_query: Query, request_settings: RequestSettings, reader: Reader[SqlQuery], ) -> QueryResult: """ Formats the Storage Query and pass it to the DB specific code for execution. """ # TODO: This function (well, it will be a wrapper of this function) # where we will transform the result according to the SelectedExpression # object in the query to ensure the fields in the QueryResult have # the same name the user expects. source = clickhouse_query.get_data_source().format_from() with sentry_sdk.start_span(description="create_query", op="db") as span: formatted_query = AstSqlQuery(clickhouse_query, request_settings) span.set_data("query", formatted_query.sql_data()) metrics.increment("execute") timer.mark("prepare_query") stats = { "clickhouse_table": source, "final": clickhouse_query.get_final(), "referrer": referrer, "num_days": (to_date - from_date).days, "sample": clickhouse_query.get_sample(), } with sentry_sdk.start_span( description=formatted_query.format_sql(), op="db" ) as span: span.set_tag("table", source) return raw_query( clickhouse_query, request_settings, formatted_query, reader, timer, query_metadata, stats, span.trace_id, )
def _format_storage_query_and_run( # TODO: remove dependency on Dataset. This is only for formatting the legacy ClickhouseQuery # with the AST this won't be needed. dataset: Dataset, timer: Timer, query_metadata: SnubaQueryMetadata, from_date: datetime, to_date: datetime, request: Request, ) -> RawQueryResult: """ Formats the Storage Query and pass it to the DB specific code for execution. TODO: When we will have the AST in production and we will have the StorageQuery abstraction, this function is probably going to collapse and disappear. """ source = request.query.get_data_source().format_from() with sentry_sdk.start_span(description="create_query", op="db"): # TODO: Move the performance logic and the pre_where generation into # ClickhouseQuery since they are Clickhouse specific query = DictClickhouseQuery(dataset, request.query, request.settings) timer.mark("prepare_query") stats = { "clickhouse_table": source, "final": request.query.get_final(), "referrer": request.referrer, "num_days": (to_date - from_date).days, "sample": request.query.get_sample(), } with sentry_sdk.start_span(description=query.format_sql(), op="db") as span: span.set_tag("table", source) try: span.set_tag( "ast_query", AstClickhouseQuery(request.query, request.settings).format_sql(), ) except Exception: logger.warning("Failed to format ast query", exc_info=True) return raw_query(request, query, timer, query_metadata, stats, span.trace_id)
def _format_storage_query_and_run( timer: Timer, query_metadata: SnubaQueryMetadata, from_date: datetime, to_date: datetime, referrer: str, clickhouse_query: Query, request_settings: RequestSettings, reader: Reader[SqlQuery], ) -> QueryResult: """ Formats the Storage Query and pass it to the DB specific code for execution. """ source = clickhouse_query.get_from_clause().format_from() with sentry_sdk.start_span(description="create_query", op="db") as span: formatted_query = AstSqlQuery(clickhouse_query, request_settings) span.set_data("query", formatted_query.sql_data()) metrics.increment("execute") timer.mark("prepare_query") stats = { "clickhouse_table": source, "final": clickhouse_query.get_final(), "referrer": referrer, "num_days": (to_date - from_date).days, "sample": clickhouse_query.get_sample(), } with sentry_sdk.start_span(description=formatted_query.format_sql(), op="db") as span: span.set_tag("table", source) return raw_query( clickhouse_query, request_settings, formatted_query, reader, timer, query_metadata, stats, span.trace_id, )
def _format_storage_query_and_run( timer: Timer, query_metadata: SnubaQueryMetadata, referrer: str, clickhouse_query: Union[Query, CompositeQuery[Table]], request_settings: RequestSettings, reader: Reader, ) -> QueryResult: """ Formats the Storage Query and pass it to the DB specific code for execution. """ from_clause = clickhouse_query.get_from_clause() visitor = TablesCollector() visitor.visit(from_clause) table_names = ",".join(sorted(visitor.get_tables())) with sentry_sdk.start_span(description="create_query", op="db") as span: formatted_query = format_query(clickhouse_query, request_settings) span.set_data("query", formatted_query.structured()) metrics.increment("execute") timer.mark("prepare_query") stats = { "clickhouse_table": table_names, "final": visitor.any_final(), "referrer": referrer, "sample": visitor.get_sample_rate(), } with sentry_sdk.start_span(description=formatted_query.get_sql(), op="db") as span: span.set_tag("table", table_names) return raw_query( clickhouse_query, request_settings, formatted_query, reader, timer, query_metadata, stats, span.trace_id, )