SQL Server Temporary Tables

I inherited a lot of Metabase questions written in native SQL and using temporary tables (data output to a temporary table, a bunch of queries run off the table, a final SELECT returns the desire data).

These stopped working when we upgraded to circumvent the log4j vulnerability. We were a little behind on releases, so I don't know if this is a bug or a feature that was removed in the last year.

The error message is: "Select statement did not produce a ResultSet for native query"

I just saw a discussion from 2020 that talks about temporary tables, but we have been using them extensively since then - until the upgrade last week, hence the question about whether this is a new bug?

Sample query to reproduce:

DROP TABLE IF EXISTS #some_temp_data

SELECT TOP 10 
	[name],
	number
INTO
	#some_temp_data
FROM
	master..spt_values

-- Do some complicated stuff

-- Output the desired data
SELECT
	number
FROM
	#some_temp_data
WHERE
	number < 64

Log Error:

:error_type :invalid-query,
 :json_query
 {:type "native",
  :native
  {:query
   "DROP TABLE IF EXISTS #some_temp_data\r\n\r\nSELECT TOP 10 \r\n\t[name],\r\n\tnumber\r\nINTO\r\n\t#some_temp_data\r\nFROM\r\n\tmaster..spt_values\r\n\r\n-- Do some complicated stuff\r\n\r\n-- Output the desired data\r\nSELECT\r\n\tnumber\r\nFROM\r\n\t#some_temp_data\r\nWHERE\r\n\tnumber < 64\r\n",
   :template-tags {}},
  :database 2,
  :parameters [],
  :middleware {:js-int-to-string? true, :add-default-userland-constraints? true}},
 :status :failed,
 :class clojure.lang.ExceptionInfo,
 :stacktrace
 ["--> driver.sql_jdbc.execute$fn__52411.invokeStatic(execute.clj:370)"
  "driver.sql_jdbc.execute$fn__52411.invoke(execute.clj:366)"
  "driver.sql_jdbc.execute$execute_statement_or_prepared_statement_BANG_.invokeStatic(execute.clj:376)"
  "driver.sql_jdbc.execute$execute_statement_or_prepared_statement_BANG_.invoke(execute.clj:373)"
  "driver.sql_jdbc.execute$execute_reducible_query$fn__52491.invoke(execute.clj:502)"
  "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:501)"
  "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:487)"
  "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:496)"
  "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:487)"
  "driver.sql_jdbc$fn__85172.invokeStatic(sql_jdbc.clj:54)"
  "driver.sql_jdbc$fn__85172.invoke(sql_jdbc.clj:52)"
  "query_processor.context$executef.invokeStatic(context.clj:59)"
  "query_processor.context$executef.invoke(context.clj:48)"
  "query_processor.context.default$default_runf.invokeStatic(default.clj:68)"
  "query_processor.context.default$default_runf.invoke(default.clj:66)"
  "query_processor.context$runf.invokeStatic(context.clj:45)"
  "query_processor.context$runf.invoke(context.clj:39)"
  "query_processor.reducible$pivot.invokeStatic(reducible.clj:34)"
  "query_processor.reducible$pivot.invoke(reducible.clj:31)"
  "query_processor.middleware.mbql_to_native$mbql__GT_native$fn__49144.invoke(mbql_to_native.clj:25)"
  "query_processor.middleware.check_features$check_features$fn__49630.invoke(check_features.clj:39)"
  "query_processor.middleware.limit$limit$fn__47517.invoke(limit.clj:37)"
  "query_processor.middleware.cache$maybe_return_cached_results$fn__50004.invoke(cache.clj:204)"
  "query_processor.middleware.optimize_temporal_filters$optimize_temporal_filters$fn__50997.invoke(optimize_temporal_filters.clj:204)"
  "query_processor.middleware.validate_temporal_bucketing$validate_temporal_bucketing$fn__51041.invoke(validate_temporal_bucketing.clj:50)"
  "query_processor.middleware.auto_parse_filter_values$auto_parse_filter_values$fn__49201.invoke(auto_parse_filter_values.clj:43)"
  "query_processor.middleware.wrap_value_literals$wrap_value_literals$fn__39249.invoke(wrap_value_literals.clj:161)"
  "query_processor.middleware.annotate$add_column_info$fn__43680.invoke(annotate.clj:620)"
  "query_processor.middleware.permissions$check_query_permissions$fn__45618.invoke(permissions.clj:108)"
  "query_processor.middleware.pre_alias_aggregations$pre_alias_aggregations$fn__50181.invoke(pre_alias_aggregations.clj:40)"
  "query_processor.middleware.cumulative_aggregations$handle_cumulative_aggregations$fn__46016.invoke(cumulative_aggregations.clj:60)"
  "query_processor.middleware.visualization_settings$update_viz_settings$fn__45954.invoke(visualization_settings.clj:63)"
  "query_processor.middleware.resolve_joined_fields$resolve_joined_fields$fn__47115.invoke(resolve_joined_fields.clj:102)"
  "query_processor.middleware.resolve_joins$resolve_joins$fn__50767.invoke(resolve_joins.clj:171)"
  "query_processor.middleware.add_implicit_joins$add_implicit_joins$fn__50303.invoke(add_implicit_joins.clj:190)"
  "query_processor.middleware.large_int_id$convert_id_to_string$fn__47134.invoke(large_int_id.clj:59)"
  "query_processor.middleware.format_rows$format_rows$fn__50355.invoke(format_rows.clj:74)"
  "query_processor.middleware.add_default_temporal_unit$add_default_temporal_unit$fn__46506.invoke(add_default_temporal_unit.clj:23)"
  "query_processor.middleware.desugar$desugar$fn__45927.invoke(desugar.clj:21)"
  "query_processor.middleware.binning$update_binning_strategy$fn__39149.invoke(binning.clj:229)"
  "query_processor.middleware.resolve_fields$resolve_fields$fn__45261.invoke(resolve_fields.clj:34)"
  "query_processor.middleware.add_dimension_projections$add_remapping$fn__49556.invoke(add_dimension_projections.clj:312)"
  "query_processor.middleware.add_implicit_clauses$add_implicit_clauses$fn__49853.invoke(add_implicit_clauses.clj:147)"
  "query_processor.middleware.upgrade_field_literals$upgrade_field_literals$fn__47502.invoke(upgrade_field_literals.clj:40)"
  "query_processor.middleware.add_source_metadata$add_source_metadata_for_source_queries$fn__46883.invoke(add_source_metadata.clj:123)"
  "query_processor.middleware.reconcile_breakout_and_order_by_bucketing$reconcile_breakout_and_order_by_bucketing$fn__50103.invoke(reconcile_breakout_and_order_by_bucketing.clj:100)"
  "query_processor.middleware.auto_bucket_datetimes$auto_bucket_datetimes$fn__48453.invoke(auto_bucket_datetimes.clj:147)"
  "query_processor.middleware.resolve_source_table$resolve_source_tables$fn__45242.invoke(resolve_source_table.clj:45)"
  "query_processor.middleware.parameters$substitute_parameters$fn__48107.invoke(parameters.clj:111)"
  "query_processor.middleware.resolve_referenced$resolve_referenced_card_resources$fn__45315.invoke(resolve_referenced.clj:79)"
  "query_processor.middleware.expand_macros$expand_macros$fn__51425.invoke(expand_macros.clj:184)"
  "query_processor.middleware.add_timezone_info$add_timezone_info$fn__47886.invoke(add_timezone_info.clj:15)"
  "query_processor.middleware.splice_params_in_response$splice_params_in_response$fn__50370.invoke(splice_params_in_response.clj:32)"
  "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__49864$fn__49868.invoke(resolve_database_and_driver.clj:31)"
  "driver$do_with_driver.invokeStatic(driver.clj:60)"
  "driver$do_with_driver.invoke(driver.clj:56)"
  "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__49864.invoke(resolve_database_and_driver.clj:25)"
  "query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__45865.invoke(fetch_source_query.clj:274)"
  "query_processor.middleware.store$initialize_store$fn__46053$fn__46054.invoke(store.clj:11)"
  "query_processor.store$do_with_store.invokeStatic(store.clj:44)"
  "query_processor.store$do_with_store.invoke(store.clj:38)"
  "query_processor.middleware.store$initialize_store$fn__46053.invoke(store.clj:10)"
  "query_processor.middleware.validate$validate_query$fn__50153.invoke(validate.clj:10)"
  "query_processor.middleware.normalize_query$normalize$fn__50160.invoke(normalize_query.clj:22)"
  "query_processor.middleware.add_rows_truncated$add_rows_truncated$fn__47832.invoke(add_rows_truncated.clj:35)"
  "query_processor.middleware.results_metadata$record_and_return_metadata_BANG_$fn__49130.invoke(results_metadata.clj:147)"
  "query_processor.middleware.constraints$add_default_userland_constraints$fn__47850.invoke(constraints.clj:42)"
  "query_processor.middleware.process_userland_query$process_userland_query$fn__50139.invoke(process_userland_query.clj:146)"
  "query_processor.middleware.catch_exceptions$catch_exceptions$fn__50450.invoke(catch_exceptions.clj:169)"
  "query_processor.reducible$async_qp$qp_STAR___42500$thunk__42501.invoke(reducible.clj:103)"
  "query_processor.reducible$async_qp$qp_STAR___42500.invoke(reducible.clj:109)"
  "query_processor.reducible$sync_qp$qp_STAR___42509$fn__42512.invoke(reducible.clj:135)"
  "query_processor.reducible$sync_qp$qp_STAR___42509.invoke(reducible.clj:134)"
  "query_processor$process_userland_query.invokeStatic(query_processor.clj:243)"
  "query_processor$process_userland_query.doInvoke(query_processor.clj:239)"
  "query_processor$fn__51473$process_query_and_save_execution_BANG___51482$fn__51485.invoke(query_processor.clj:255)"
  "query_processor$fn__51473$process_query_and_save_execution_BANG___51482.invoke(query_processor.clj:247)"
  "query_processor$fn__51517$process_query_and_save_with_max_results_constraints_BANG___51526$fn__51529.invoke(query_processor.clj:267)"
  "query_processor$fn__51517$process_query_and_save_with_max_results_constraints_BANG___51526.invoke(query_processor.clj:260)"
  "api.dataset$run_query_async$fn__57865.invoke(dataset.clj:64)"
  "query_processor.streaming$streaming_response_STAR_$fn__38058$fn__38059.invoke(streaming.clj:148)"
  "query_processor.streaming$streaming_response_STAR_$fn__38058.invoke(streaming.clj:147)"
  "async.streaming_response$do_f_STAR_.invokeStatic(streaming_response.clj:65)"
  "async.streaming_response$do_f_STAR_.invoke(streaming_response.clj:63)"
  "async.streaming_response$do_f_async$fn__25229.invoke(streaming_response.clj:84)"],
 :card_id nil,
 :context :ad-hoc,
 :error "Select statement did not produce a ResultSet for native query",
 :row_count 0,
 :running_time 0,
 :ex-data
 {:sql
  "-- Metabase:: userID: 82 queryType: native queryHash: 25c0095aaa108f297235e41276b9292745dd33a25fe9ff466459c79ccc4651ee\nDROP TABLE IF EXISTS #some_temp_data\r\n\r\nSELECT TOP 10 \r\n\t[name],\r\n\tnumber\r\nINTO\r\n\t#some_temp_data\r\nFROM\r\n\tmaster..spt_values\r\n\r\n-- Do some complicated stuff\r\n\r\n-- Output the desired data\r\nSELECT\r\n\tnumber\r\nFROM\r\n\t#some_temp_data\r\nWHERE\r\n\tnumber < 64",
  :driver :sqlserver},
 :data {:rows [], :cols []}}

Diagnostic Data:

{
  "browser-info": {
    "language": "en-US",
    "platform": "Win32",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62",
    "vendor": "Google Inc."
  },
  "system-info": {
    "file.encoding": "UTF-8",
    "java.runtime.name": "OpenJDK Runtime Environment",
    "java.runtime.version": "11.0.13+8",
    "java.vendor": "Eclipse Adoptium",
    "java.vendor.url": "https://adoptium.net/",
    "java.version": "11.0.13",
    "java.vm.name": "OpenJDK 64-Bit Server VM",
    "java.vm.version": "11.0.13+8",
    "os.name": "Linux",
    "os.version": "4.18.0-348.2.1.el8_5.x86_64",
    "user.language": "en",
    "user.timezone": "GMT"
  },
  "metabase-info": {
    "databases": [
      "sqlserver"
    ],
    "hosting-env": "unknown",
    "application-database": "h2",
    "application-database-details": {
      "database": {
        "name": "H2",
        "version": "1.4.197 (2018-03-18)"
      },
      "jdbc-driver": {
        "name": "H2 JDBC Driver",
        "version": "1.4.197 (2018-03-18)"
      }
    },
    "run-mode": "prod",
    "version": {
      "date": "2021-12-16",
      "tag": "v0.41.5",
      "branch": "release-x.41.x",
      "hash": "fbfffc6"
    },
    "settings": {
      "report-timezone": "US/Eastern"
    }
  }
}

Hi @ColinPM
You should migrate away from H2 if you are using Metabase in production:
https://www.metabase.com/docs/latest/operations-guide/migrating-from-h2.html
If you searched for the error message, then you would have found this topic:
SQL Queries Broken in 0.39.0.1
The issue is marked as "won't fix", but there's a workaround.

Thank you. In my hurry, I had searched for 'temporary table' but not the full error message. Thank you also for the migration note - that plan is in hand.