@@ -42,32 +42,54 @@ function drop_view(db, name)
4242end
4343
4444
45- macro compute (sqlquery, name, replace = false )
46-
47- if replace == true
48- sql_cr_or_replace = " CREATE OR REPLACE Table $name AS "
49- elseif replace == false
50- sql_cr_or_replace = " CREATE Table $name AS "
45+ macro create_table (sqlquery, name, args... )
46+ replace_flag = false
47+ temp_flag = false # new flag
48+
49+ for arg in args
50+ if arg === true || arg === false # legacy positional arg
51+ replace_flag = arg
52+ elseif isa (arg, Expr) && arg. head === :(= )
53+ lhs, rhs = arg. args
54+ if lhs === :replace
55+ replace_flag = rhs
56+ elseif lhs === :temp
57+ temp_flag = rhs
58+ else
59+ error (" @create_table: unknown keyword $(lhs) " )
60+ end
61+ else
62+ error (" @create_table: unsupported argument $(arg) " )
63+ end
5164 end
52- return quote
53- # prin
65+
66+ replace_clause = replace_flag ? " OR REPLACE" : " "
67+ temp_clause = temp_flag ? " TEMP" : " "
68+ sql_prefix = " CREATE$(replace_clause)$(temp_clause) TABLE $name AS "
69+
70+ quote
5471 backend = current_sql_mode[]
5572 sq = $ (esc (sqlquery))
73+
5674 if backend == duckdb ()
5775 final_query = finalize_query (sq)
58- final_query = $ sql_cr_or_replace * final_query
76+ final_query = $ sql_prefix * final_query
77+ # println(final_query)
5978 DBInterface. execute (sq. db, final_query)
60- elseif backend == postgres ()
61- final_compute ($ (esc (sqlquery)), postgres, $ sql_cr_or_replace)
79+
80+ elseif backend == postgres ()
81+ final_compute ($ (esc (sqlquery)), postgres, $ sql_prefix)
82+
6283 elseif backend == gbq ()
63- final_compute (sq, gbq, $ sql_cr_or_replace)
64- elseif current_sql_mode[] == mysql ()
65- final_compute ($ (esc (sqlquery)), mysql, $ sql_cr_or_replace)
66- else
67- backend = current_sql_mode[]
68- print (" $backend not yet supported" ) # COV_EXCL_LINE
84+ final_compute (sq, gbq, $ sql_prefix)
85+
86+ elseif backend == mysql ()
87+ final_compute ($ (esc (sqlquery)), mysql, $ sql_prefix)
88+
89+ else
90+ backend = current_sql_mode[]
91+ print (" $(backend) not yet supported" ) # COV_EXCL_LINE
6992 end
70-
7193 end
7294end
7395
0 commit comments