@@ -1243,7 +1243,11 @@ def schema_dump_path
12431243 end
12441244end
12451245
1246+ require "models/post"
1247+ require "models/comment"
12461248class UnsafeRawSqlTest < ActiveRecord ::TestCase
1249+ fixtures :posts
1250+
12471251 # Use LEN() vs length() function.
12481252 coerce_tests! %r{order: always allows Arel}
12491253 test "order: always allows Arel" do
@@ -1273,6 +1277,86 @@ class UnsafeRawSqlTest < ActiveRecord::TestCase
12731277 assert_equal ids_expected , ids_depr
12741278 assert_equal ids_expected , ids_disabled
12751279 end
1280+
1281+ test "order: allows string column names that are quoted" do
1282+ ids_expected = Post . order ( Arel . sql ( "id" ) ) . pluck ( :id )
1283+
1284+ ids_depr = with_unsafe_raw_sql_deprecated { Post . order ( "[id]" ) . pluck ( :id ) }
1285+ ids_disabled = with_unsafe_raw_sql_disabled { Post . order ( "[id]" ) . pluck ( :id ) }
1286+
1287+ assert_equal ids_expected , ids_depr
1288+ assert_equal ids_expected , ids_disabled
1289+ end
1290+
1291+ test "order: allows string column names that are quoted with table" do
1292+ ids_expected = Post . order ( Arel . sql ( "id" ) ) . pluck ( :id )
1293+
1294+ ids_depr = with_unsafe_raw_sql_deprecated { Post . order ( "[posts].[id]" ) . pluck ( :id ) }
1295+ ids_disabled = with_unsafe_raw_sql_disabled { Post . order ( "[posts].[id]" ) . pluck ( :id ) }
1296+
1297+ assert_equal ids_expected , ids_depr
1298+ assert_equal ids_expected , ids_disabled
1299+ end
1300+
1301+ test "order: allows string column names that are quoted with table and user" do
1302+ ids_expected = Post . order ( Arel . sql ( "id" ) ) . pluck ( :id )
1303+
1304+ ids_depr = with_unsafe_raw_sql_deprecated { Post . order ( "[dbo].[posts].[id]" ) . pluck ( :id ) }
1305+ ids_disabled = with_unsafe_raw_sql_disabled { Post . order ( "[dbo].[posts].[id]" ) . pluck ( :id ) }
1306+
1307+ assert_equal ids_expected , ids_depr
1308+ assert_equal ids_expected , ids_disabled
1309+ end
1310+
1311+ test "order: allows string column names that are quoted with table, user and database" do
1312+ ids_expected = Post . order ( Arel . sql ( "id" ) ) . pluck ( :id )
1313+
1314+ ids_depr = with_unsafe_raw_sql_deprecated { Post . order ( "[activerecord_unittest].[dbo].[posts].[id]" ) . pluck ( :id ) }
1315+ ids_disabled = with_unsafe_raw_sql_disabled { Post . order ( "[activerecord_unittest].[dbo].[posts].[id]" ) . pluck ( :id ) }
1316+
1317+ assert_equal ids_expected , ids_depr
1318+ assert_equal ids_expected , ids_disabled
1319+ end
1320+
1321+ test "pluck: allows string column name that are quoted" do
1322+ titles_expected = Post . pluck ( Arel . sql ( "title" ) )
1323+
1324+ titles_depr = with_unsafe_raw_sql_deprecated { Post . pluck ( "[title]" ) }
1325+ titles_disabled = with_unsafe_raw_sql_disabled { Post . pluck ( "[title]" ) }
1326+
1327+ assert_equal titles_expected , titles_depr
1328+ assert_equal titles_expected , titles_disabled
1329+ end
1330+
1331+ test "pluck: allows string column name that are quoted with table" do
1332+ titles_expected = Post . pluck ( Arel . sql ( "title" ) )
1333+
1334+ titles_depr = with_unsafe_raw_sql_deprecated { Post . pluck ( "[posts].[title]" ) }
1335+ titles_disabled = with_unsafe_raw_sql_disabled { Post . pluck ( "[posts].[title]" ) }
1336+
1337+ assert_equal titles_expected , titles_depr
1338+ assert_equal titles_expected , titles_disabled
1339+ end
1340+
1341+ test "pluck: allows string column name that are quoted with table and user" do
1342+ titles_expected = Post . pluck ( Arel . sql ( "title" ) )
1343+
1344+ titles_depr = with_unsafe_raw_sql_deprecated { Post . pluck ( "[dbo].[posts].[title]" ) }
1345+ titles_disabled = with_unsafe_raw_sql_disabled { Post . pluck ( "[dbo].[posts].[title]" ) }
1346+
1347+ assert_equal titles_expected , titles_depr
1348+ assert_equal titles_expected , titles_disabled
1349+ end
1350+
1351+ test "pluck: allows string column name that are quoted with table, user and database" do
1352+ titles_expected = Post . pluck ( Arel . sql ( "title" ) )
1353+
1354+ titles_depr = with_unsafe_raw_sql_deprecated { Post . pluck ( "[activerecord_unittest].[dbo].[posts].[title]" ) }
1355+ titles_disabled = with_unsafe_raw_sql_disabled { Post . pluck ( "[activerecord_unittest].[dbo].[posts].[title]" ) }
1356+
1357+ assert_equal titles_expected , titles_depr
1358+ assert_equal titles_expected , titles_disabled
1359+ end
12761360end
12771361
12781362class ReservedWordTest < ActiveRecord ::TestCase
0 commit comments