activerecord-postgresql-extensions 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OGY1YjMzZWU1ZmNjN2VmZDU5ODQyM2Q0ZDg3N2JjNjkwZTFkMTkwYQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZGMxNWRjNjEwNzVhZjU1MzMxYTQ4ZTk0NWU2MjljYzViMDM5YzdjNQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NWRkMmZiNWViMzE4ZjBhNDEzOWFlNGJkOTIxZjg1MjljM2IyOWVmM2QzODA2
|
10
|
+
OGQzOWY2YjRhY2UzMzE5MzBlN2YxYzM3MjZkMTUzYzc4NDM3Zjc3NzliZWZm
|
11
|
+
MTc5NDU2NGE2MjY2YjUxYzhiYTI5MTVlNmZiNDFjMmZkOWFlM2U=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjQyYWU2ZDM3MjQ0NmFhNDVmOWI3N2U0MWZkZDM5MTRiNTRhZmFlM2M4N2Jj
|
14
|
+
YjdkZTUyODk5ZmFlYmJhNzVhMjdjZDc5YjdmY2QyODMxZmY2ZmIwZTBiNmE5
|
15
|
+
YmZkMjE4NmZhNjAzNWI4MjIwOThkNjYzMzg3ZjQyMTQ1ODQ3NTE=
|
@@ -89,14 +89,22 @@ module ActiveRecord
|
|
89
89
|
# convoluted as evidenced by the plethora of options we're
|
90
90
|
# handling here.
|
91
91
|
#
|
92
|
-
# ====
|
92
|
+
# ==== Examples
|
93
|
+
#
|
94
|
+
# # With a string for the body:
|
95
|
+
# create_function('tester_function', 'integer',
|
96
|
+
# 'integer', 'sql',
|
97
|
+
# 'select $1;'
|
98
|
+
# :behavior => :immutable, :set => { :search_path => :from_current }, :force => true
|
99
|
+
# )
|
93
100
|
#
|
101
|
+
# # With a block:
|
94
102
|
# create_function('tester_function', 'integer',
|
95
103
|
# 'integer', 'sql', :behavior => :immutable, :set => { :search_path => :from_current }, :force => true) do
|
96
104
|
# "select $1;"
|
97
105
|
# end
|
98
106
|
#
|
99
|
-
# #
|
107
|
+
# # Both produce:
|
100
108
|
# #
|
101
109
|
# # CREATE OR REPLACE FUNCTION "tester_function"(integer) RETURNS integer AS $$
|
102
110
|
# # select $1;
|
@@ -104,9 +112,20 @@ module ActiveRecord
|
|
104
112
|
# # LANGUAGE "sql"
|
105
113
|
# # IMMUTABLE
|
106
114
|
# # SET "search_path" FROM CURRENT;
|
107
|
-
def create_function(name,
|
108
|
-
|
109
|
-
|
115
|
+
def create_function(name, arguments, returns, language, *args)
|
116
|
+
options = args.extract_options!
|
117
|
+
|
118
|
+
body = if args.first.present?
|
119
|
+
if block_given?
|
120
|
+
raise ArgumentError.new("Can't have both a function body argument as well as a block in create_function")
|
121
|
+
end
|
122
|
+
|
123
|
+
args.first
|
124
|
+
elsif block_given?
|
125
|
+
yield.to_s
|
126
|
+
end
|
127
|
+
|
128
|
+
execute PostgreSQLFunctionDefinition.new(self, name, arguments, returns, language, body, options).to_s
|
110
129
|
end
|
111
130
|
|
112
131
|
# Drops a function.
|
data/test/functions_tests.rb
CHANGED
@@ -46,6 +46,45 @@ class FunctionsTests < PostgreSQLExtensionsTestCase
|
|
46
46
|
assert_equal(expected, statements)
|
47
47
|
end
|
48
48
|
|
49
|
+
def test_create_function_with_body_argument
|
50
|
+
ARBC.create_function(:test, :integer, :integer, :sql, "select 10;")
|
51
|
+
|
52
|
+
ARBC.create_function(:test, :integer, :integer, :sql, "return 10;", {
|
53
|
+
:force => true,
|
54
|
+
:delimiter => '$__$',
|
55
|
+
:behavior => :immutable,
|
56
|
+
:on_null_input => :strict,
|
57
|
+
:cost => 1,
|
58
|
+
:rows => 10,
|
59
|
+
:set => {
|
60
|
+
'TIME ZONE' => 'America/Halifax'
|
61
|
+
}
|
62
|
+
})
|
63
|
+
|
64
|
+
expected = []
|
65
|
+
|
66
|
+
expected << strip_heredoc(<<-SQL)
|
67
|
+
CREATE FUNCTION "test"(integer) RETURNS integer AS $$
|
68
|
+
select 10;
|
69
|
+
$$
|
70
|
+
LANGUAGE "sql";
|
71
|
+
SQL
|
72
|
+
|
73
|
+
expected << strip_heredoc(<<-SQL)
|
74
|
+
CREATE OR REPLACE FUNCTION "test"(integer) RETURNS integer AS $__$
|
75
|
+
return 10;
|
76
|
+
$__$
|
77
|
+
LANGUAGE "sql"
|
78
|
+
IMMUTABLE
|
79
|
+
STRICT
|
80
|
+
COST 1
|
81
|
+
ROWS 10
|
82
|
+
SET TIME ZONE "America/Halifax";
|
83
|
+
SQL
|
84
|
+
|
85
|
+
assert_equal(expected, statements)
|
86
|
+
end
|
87
|
+
|
49
88
|
def test_drop_function
|
50
89
|
ARBC.drop_function(:test, :integer)
|
51
90
|
ARBC.drop_function(:test, :integer, :if_exists => true, :cascade => true)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-postgresql-extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- J Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
type: :runtime
|