Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
ecf039fc
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,发现更多精彩内容 >>
提交
ecf039fc
编写于
4月 11, 2010
作者:
A
Aaron Patterson
提交者:
wycats
4月 11, 2010
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
mode postgresql adapters table_exists? method take the schema in to account. [#4341 state:resolved]
Signed-off-by:
N
wycats
<
wycats@gmail.com
>
上级
803df08d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
38 addition
and
1 deletion
+38
-1
activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
...b/active_record/connection_adapters/postgresql_adapter.rb
+23
-1
activerecord/test/cases/schema_test_postgresql.rb
activerecord/test/cases/schema_test_postgresql.rb
+15
-0
未找到文件。
activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
浏览文件 @
ecf039fc
...
...
@@ -670,8 +670,30 @@ def drop_database(name) #:nodoc:
def
tables
(
name
=
nil
)
query
(
<<-
SQL
,
name
).
map
{
|
row
|
row
[
0
]
}
SELECT tablename
FROM pg_tables
WHERE schemaname = ANY (current_schemas(false))
SQL
end
def
table_exists?
(
name
)
name
=
name
.
to_s
schema
,
table
=
name
.
split
(
'.'
,
2
)
unless
table
# A table was provided without a schema
table
=
schema
schema
=
nil
end
if
name
=~
/^"/
# Handle quoted table names
table
=
name
schema
=
nil
end
query
(
<<-
SQL
).
first
[
0
].
to_i
>
0
SELECT COUNT(*)
FROM pg_tables
WHERE schemaname = ANY (current_schemas(false))
WHERE tablename = '
#{
table
.
gsub
(
/(^"|"$)/
,
''
)
}
'
#{
schema
?
"AND schemaname = '
#{
schema
}
'"
:
''
}
SQL
end
...
...
activerecord/test/cases/schema_test_postgresql.rb
浏览文件 @
ecf039fc
...
...
@@ -52,6 +52,21 @@ def teardown
@connection
.
execute
"DROP SCHEMA
#{
SCHEMA_NAME
}
CASCADE"
end
def
test_table_exists?
[
Thing1
,
Thing2
,
Thing3
,
Thing4
].
each
do
|
klass
|
name
=
klass
.
table_name
assert
@connection
.
table_exists?
(
name
),
"'
#{
name
}
' table should exist"
end
end
def
test_table_exists_wrong_schema
assert
(
!
@connection
.
table_exists?
(
"foo.things"
),
"table should not exist"
)
end
def
test_table_exists_quoted_table
assert
(
@connection
.
table_exists?
(
'"things.table"'
),
"table should exist"
)
end
def
test_with_schema_prefixed_table_name
assert_nothing_raised
do
assert_equal
COLUMNS
,
columns
(
"
#{
SCHEMA_NAME
}
.
#{
TABLE_NAME
}
"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录