Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
9a4ff4d6
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
9a4ff4d6
编写于
10月 23, 2019
作者:
R
Ryuta Kamizono
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add `supports_common_table_expressions?` for CTE testing
上级
f537b366
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
40 addition
and
33 deletion
+40
-33
activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
...lib/active_record/connection_adapters/abstract_adapter.rb
+4
-0
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
...tive_record/connection_adapters/abstract_mysql_adapter.rb
+8
-0
activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb
...ord/connection_adapters/postgresql/database_statements.rb
+3
-1
activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
...b/active_record/connection_adapters/postgresql_adapter.rb
+4
-0
activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb
...record/connection_adapters/sqlite3/database_statements.rb
+3
-1
activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
.../lib/active_record/connection_adapters/sqlite3_adapter.rb
+4
-0
activerecord/test/cases/adapter_test.rb
activerecord/test/cases/adapter_test.rb
+14
-0
activerecord/test/cases/adapters/mysql2/mysql2_adapter_test.rb
...erecord/test/cases/adapters/mysql2/mysql2_adapter_test.rb
+0
-9
activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb
...test/cases/adapters/postgresql/postgresql_adapter_test.rb
+0
-11
activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb
...ecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb
+0
-11
未找到文件。
activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
浏览文件 @
9a4ff4d6
...
...
@@ -416,6 +416,10 @@ def supports_optimizer_hints?
false
end
def
supports_common_table_expressions?
false
end
def
supports_lazy_transactions?
false
end
...
...
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
浏览文件 @
9a4ff4d6
...
...
@@ -110,6 +110,14 @@ def supports_optimizer_hints?
!
mariadb?
&&
database_version
>=
"5.7.7"
end
def
supports_common_table_expressions?
if
mariadb?
database_version
>=
"10.2.1"
else
database_version
>=
"8.0.1"
end
end
def
supports_advisory_locks?
true
end
...
...
activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb
浏览文件 @
9a4ff4d6
...
...
@@ -67,7 +67,9 @@ def query(sql, name = nil) #:nodoc:
end
end
READ_QUERY
=
ActiveRecord
::
ConnectionAdapters
::
AbstractAdapter
.
build_read_query_regexp
(
:begin
,
:commit
,
:explain
,
:select
,
:set
,
:show
,
:release
,
:savepoint
,
:rollback
,
:with
)
# :nodoc:
READ_QUERY
=
ActiveRecord
::
ConnectionAdapters
::
AbstractAdapter
.
build_read_query_regexp
(
:begin
,
:commit
,
:explain
,
:select
,
:set
,
:show
,
:release
,
:savepoint
,
:rollback
,
:with
)
# :nodoc:
private_constant
:READ_QUERY
def
write_query?
(
sql
)
# :nodoc:
...
...
activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
浏览文件 @
9a4ff4d6
...
...
@@ -361,6 +361,10 @@ def supports_optimizer_hints?
@has_pg_hint_plan
end
def
supports_common_table_expressions?
true
end
def
supports_lazy_transactions?
true
end
...
...
activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb
浏览文件 @
9a4ff4d6
...
...
@@ -4,7 +4,9 @@ module ActiveRecord
module
ConnectionAdapters
module
SQLite3
module
DatabaseStatements
READ_QUERY
=
ActiveRecord
::
ConnectionAdapters
::
AbstractAdapter
.
build_read_query_regexp
(
:begin
,
:commit
,
:explain
,
:select
,
:pragma
,
:release
,
:savepoint
,
:rollback
,
:with
)
# :nodoc:
READ_QUERY
=
ActiveRecord
::
ConnectionAdapters
::
AbstractAdapter
.
build_read_query_regexp
(
:begin
,
:commit
,
:explain
,
:select
,
:pragma
,
:release
,
:savepoint
,
:rollback
,
:with
)
# :nodoc:
private_constant
:READ_QUERY
def
write_query?
(
sql
)
# :nodoc:
...
...
activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
浏览文件 @
9a4ff4d6
...
...
@@ -144,6 +144,10 @@ def supports_json?
true
end
def
supports_common_table_expressions?
database_version
>=
"3.8.3"
end
def
supports_insert_on_conflict?
database_version
>=
"3.24.0"
end
...
...
activerecord/test/cases/adapter_test.rb
浏览文件 @
9a4ff4d6
...
...
@@ -223,6 +223,20 @@ def test_doesnt_error_when_a_select_query_is_called_while_preventing_writes
end
end
if
ActiveRecord
::
Base
.
connection
.
supports_common_table_expressions?
def
test_doesnt_error_when_a_read_query_with_a_cte_is_called_while_preventing_writes
@connection
.
insert
(
"INSERT INTO subscribers(nick) VALUES ('138853948594')"
)
@connection_handler
.
while_preventing_writes
do
result
=
@connection
.
select_all
(
<<~
SQL
)
WITH matching_subscribers AS (SELECT subscribers.* FROM subscribers WHERE nick = '138853948594')
SELECT * FROM matching_subscribers
SQL
assert_equal
1
,
result
.
length
end
end
end
def
test_uniqueness_violations_are_translated_to_specific_exception
@connection
.
execute
"INSERT INTO subscribers(nick) VALUES('me')"
error
=
assert_raises
(
ActiveRecord
::
RecordNotUnique
)
do
...
...
activerecord/test/cases/adapters/mysql2/mysql2_adapter_test.rb
浏览文件 @
9a4ff4d6
...
...
@@ -232,15 +232,6 @@ def test_doesnt_error_when_a_read_query_with_leading_chars_is_called_while_preve
end
end
def
test_doesnt_error_when_a_read_query_with_a_cte_is_called_while_preventing_writes
@conn
.
execute
(
"INSERT INTO `engines` (`car_id`) VALUES ('138853948594')"
)
@connection_handler
.
while_preventing_writes
do
sql
=
"WITH matching_cars AS (SELECT `engines`.* FROM `engines` WHERE `engines`.`car_id` = '138853948594') SELECT * FROM matching_cars"
assert_equal
1
,
@conn
.
execute
(
sql
).
entries
.
count
end
end
def
test_statement_timeout_error_codes
raw_conn
=
@conn
.
raw_connection
assert_raises
(
ActiveRecord
::
StatementTimeout
)
do
...
...
activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb
浏览文件 @
9a4ff4d6
...
...
@@ -457,17 +457,6 @@ def test_doesnt_error_when_a_read_query_with_leading_chars_is_called_while_preve
end
end
def
test_doesnt_error_when_a_read_query_with_a_cte_is_called_while_preventing_writes
with_example_table
do
@connection
.
execute
(
"INSERT INTO ex (data) VALUES ('138853948594')"
)
@connection_handler
.
while_preventing_writes
do
sql
=
"WITH matching_ex_values AS (SELECT * FROM ex WHERE data = '138853948594') SELECT * FROM matching_ex_values"
assert_equal
1
,
@connection
.
execute
(
sql
).
entries
.
count
end
end
end
private
def
with_example_table
(
definition
=
"id serial primary key, number integer, data character varying(255)"
,
&
block
)
...
...
activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb
浏览文件 @
9a4ff4d6
...
...
@@ -653,17 +653,6 @@ def test_doesnt_error_when_a_read_query_with_leading_chars_is_called_while_preve
end
end
def
test_doesnt_error_when_a_read_query_with_a_cte_is_called_while_preventing_writes
with_example_table
"id int, data string"
do
@conn
.
execute
(
"INSERT INTO ex (data) VALUES ('138853948594')"
)
@connection_handler
.
while_preventing_writes
do
sql
=
"WITH matching_ex_values AS (SELECT * FROM ex WHERE data = '138853948594') SELECT * FROM matching_ex_values"
assert_equal
1
,
@conn
.
execute
(
sql
).
entries
.
count
end
end
end
private
def
assert_logged
(
logs
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录