@@ -230,7 +230,7 @@ if Code.ensure_loaded?(Postgrex) do
230230
231231 [
232232 "INSERT INTO " ,
233- quote_table ( prefix , table ) ,
233+ quote_name ( prefix , table ) ,
234234 insert_as ( on_conflict ) ,
235235 values ,
236236 on_conflict ( on_conflict , header ) | returning ( returning )
@@ -332,7 +332,7 @@ if Code.ensure_loaded?(Postgrex) do
332332
333333 [
334334 "UPDATE " ,
335- quote_table ( prefix , table ) ,
335+ quote_name ( prefix , table ) ,
336336 " SET " ,
337337 fields ,
338338 " WHERE " ,
@@ -351,7 +351,7 @@ if Code.ensure_loaded?(Postgrex) do
351351 { [ quote_name ( field ) , " = $" | Integer . to_string ( acc ) ] , acc + 1 }
352352 end )
353353
354- [ "DELETE FROM " , quote_table ( prefix , table ) , " WHERE " , filters | returning ( returning ) ]
354+ [ "DELETE FROM " , quote_name ( prefix , table ) , " WHERE " , filters | returning ( returning ) ]
355355 end
356356
357357 @ impl true
@@ -1136,7 +1136,7 @@ if Code.ensure_loaded?(Postgrex) do
11361136
11371137 { table , schema , prefix } ->
11381138 name = as_prefix ++ [ create_alias ( table ) | Integer . to_string ( pos ) ]
1139- { quote_table ( prefix , table ) , name , schema }
1139+ { quote_name ( prefix , table ) , name , schema }
11401140
11411141 % Ecto.SubQuery { } ->
11421142 { nil , as_prefix ++ [ ?s | Integer . to_string ( pos ) ] , nil }
@@ -1160,7 +1160,7 @@ if Code.ensure_loaded?(Postgrex) do
11601160
11611161 @ impl true
11621162 def execute_ddl ( { command , % Table { } = table , columns } ) when command in @ creates do
1163- table_name = quote_table ( table . prefix , table . name )
1163+ table_name = quote_name ( table . prefix , table . name )
11641164
11651165 query = [
11661166 "CREATE TABLE " ,
@@ -1184,14 +1184,14 @@ if Code.ensure_loaded?(Postgrex) do
11841184 [
11851185 "DROP TABLE " ,
11861186 if_do ( command == :drop_if_exists , "IF EXISTS " ) ,
1187- quote_table ( table . prefix , table . name ) ,
1187+ quote_name ( table . prefix , table . name ) ,
11881188 drop_mode ( mode )
11891189 ]
11901190 ]
11911191 end
11921192
11931193 def execute_ddl ( { :alter , % Table { } = table , changes } ) do
1194- table_name = quote_table ( table . prefix , table . name )
1194+ table_name = quote_name ( table . prefix , table . name )
11951195
11961196 query = [
11971197 "ALTER TABLE " ,
@@ -1227,7 +1227,7 @@ if Code.ensure_loaded?(Postgrex) do
12271227 quote_name ( index . name ) ,
12281228 " ON " ,
12291229 if_do ( index . only , "ONLY " ) ,
1230- quote_table ( index . prefix , index . table ) ,
1230+ quote_name ( index . prefix , index . table ) ,
12311231 if_do ( index . using , [ " USING " , to_string ( index . using ) ] ) ,
12321232 ?\s ,
12331233 ?( ,
@@ -1239,7 +1239,7 @@ if Code.ensure_loaded?(Postgrex) do
12391239 ]
12401240 ]
12411241
1242- queries ++ comments_on ( "INDEX" , quote_table ( index . prefix , index . name ) , index . comment )
1242+ queries ++ comments_on ( "INDEX" , quote_name ( index . prefix , index . name ) , index . comment )
12431243 end
12441244
12451245 def execute_ddl ( { command , % Index { } = index , mode } ) when command in @ drops do
@@ -1248,23 +1248,30 @@ if Code.ensure_loaded?(Postgrex) do
12481248 "DROP INDEX " ,
12491249 if_do ( index . concurrently , "CONCURRENTLY " ) ,
12501250 if_do ( command == :drop_if_exists , "IF EXISTS " ) ,
1251- quote_table ( index . prefix , index . name ) ,
1251+ quote_name ( index . prefix , index . name ) ,
12521252 drop_mode ( mode )
12531253 ]
12541254 ]
12551255 end
12561256
12571257 def execute_ddl ( { :rename , % Index { } = current_index , new_name } ) do
1258- [ [ "ALTER INDEX " , quote_name ( current_index . name ) , " RENAME TO " , quote_name ( new_name ) ] ]
1258+ [
1259+ [
1260+ "ALTER INDEX " ,
1261+ quote_name ( current_index . prefix , current_index . name ) ,
1262+ " RENAME TO " ,
1263+ quote_name ( new_name )
1264+ ]
1265+ ]
12591266 end
12601267
12611268 def execute_ddl ( { :rename , % Table { } = current_table , % Table { } = new_table } ) do
12621269 [
12631270 [
12641271 "ALTER TABLE " ,
1265- quote_table ( current_table . prefix , current_table . name ) ,
1272+ quote_name ( current_table . prefix , current_table . name ) ,
12661273 " RENAME TO " ,
1267- quote_table ( nil , new_table . name )
1274+ quote_name ( nil , new_table . name )
12681275 ]
12691276 ]
12701277 end
@@ -1273,7 +1280,7 @@ if Code.ensure_loaded?(Postgrex) do
12731280 [
12741281 [
12751282 "ALTER TABLE " ,
1276- quote_table ( table . prefix , table . name ) ,
1283+ quote_name ( table . prefix , table . name ) ,
12771284 " RENAME " ,
12781285 quote_name ( current_column ) ,
12791286 " TO " ,
@@ -1283,7 +1290,7 @@ if Code.ensure_loaded?(Postgrex) do
12831290 end
12841291
12851292 def execute_ddl ( { :create , % Constraint { } = constraint } ) do
1286- table_name = quote_table ( constraint . prefix , constraint . table )
1293+ table_name = quote_name ( constraint . prefix , constraint . table )
12871294 queries = [ [ "ALTER TABLE " , table_name , " ADD " , new_constraint_expr ( constraint ) ] ]
12881295
12891296 queries ++ comments_on ( "CONSTRAINT" , constraint . name , constraint . comment , table_name )
@@ -1293,7 +1300,7 @@ if Code.ensure_loaded?(Postgrex) do
12931300 [
12941301 [
12951302 "ALTER TABLE " ,
1296- quote_table ( constraint . prefix , constraint . table ) ,
1303+ quote_name ( constraint . prefix , constraint . table ) ,
12971304 " DROP CONSTRAINT " ,
12981305 if_do ( command == :drop_if_exists , "IF EXISTS " ) ,
12991306 quote_name ( constraint . name ) ,
@@ -1672,7 +1679,7 @@ if Code.ensure_loaded?(Postgrex) do
16721679 "FOREIGN KEY (" ,
16731680 quote_names ( current_columns ) ,
16741681 ") REFERENCES " ,
1675- quote_table ( ref . prefix || table . prefix , ref . table ) ,
1682+ quote_name ( ref . prefix || table . prefix , ref . table ) ,
16761683 ?( ,
16771684 quote_names ( reference_columns ) ,
16781685 ?) ,
@@ -1762,27 +1769,17 @@ if Code.ensure_loaded?(Postgrex) do
17621769 Enum . map_intersperse ( names , ?, , & quote_name / 1 )
17631770 end
17641771
1772+ defp quote_name ( nil , name ) , do: quote_name ( name )
1773+
1774+ defp quote_name ( prefix , name ) , do: [ quote_name ( prefix ) , ?. , quote_name ( name ) ]
1775+
17651776 defp quote_name ( name ) when is_atom ( name ) do
17661777 quote_name ( Atom . to_string ( name ) )
17671778 end
17681779
17691780 defp quote_name ( name ) when is_binary ( name ) do
17701781 if String . contains? ( name , "\" " ) do
1771- error! ( nil , "bad literal/field/table name #{ inspect ( name ) } (\" is not permitted)" )
1772- end
1773-
1774- [ ?" , name , ?" ]
1775- end
1776-
1777- defp quote_table ( nil , name ) , do: quote_table ( name )
1778- defp quote_table ( prefix , name ) , do: [ quote_table ( prefix ) , ?. , quote_table ( name ) ]
1779-
1780- defp quote_table ( name ) when is_atom ( name ) ,
1781- do: quote_table ( Atom . to_string ( name ) )
1782-
1783- defp quote_table ( name ) do
1784- if String . contains? ( name , "\" " ) do
1785- error! ( nil , "bad table name #{ inspect ( name ) } " )
1782+ error! ( nil , "bad literal/field/index/table name #{ inspect ( name ) } (\" is not permitted)" )
17861783 end
17871784
17881785 [ ?" , name , ?" ]
0 commit comments