marty 2.6.6 → 2.6.7
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 +4 -4
- data/app/models/marty/data_grid.rb +4 -4
- data/db/migrate/504_remove_plv8_extension.rb +13 -0
- data/lib/marty/version.rb +1 -1
- metadata +3 -6
- data/db/js/errinfo_v1.js +0 -16
- data/db/js/lookup_grid_distinct_v1.js +0 -64
- data/db/js/query_grid_dir_v1.js +0 -61
- data/db/migrate/400_create_dg_plv8_v1_fns.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4617855bbed5e317b7983641b7f6565ec24a85a0690b8494cc17d1ac5b1372ed
|
4
|
+
data.tar.gz: 3155a823f0c5d0add5c361256c75f8c7c3851a9cf4fc257c9490bf76cedd9a01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d95e2defaa45dcc3a3fce8fd087654ea205591b7eaca786bfd9536f523f0de392e2917c410aa404accb038f17a1f8663dae06cf3d9ef4175f4eca914b3a33432
|
7
|
+
data.tar.gz: a4a8300480ea3cc8bd69c2cad1a2f162c9edc0cbfdd812f2acd98c686507d93d6083a682211f6085371c464c360d521dfe7adcb5c03fe32ab845dd83d8bf7ba2
|
@@ -165,8 +165,8 @@ class Marty::DataGrid < Marty::Base
|
|
165
165
|
|
166
166
|
PLV_DT_FMT = '%Y-%m-%d %H:%M:%S.%N6'
|
167
167
|
|
168
|
-
def self.
|
169
|
-
|
168
|
+
def self.plpg_lookup_grid_distinct(h_passed, dgh, ret_grid_data = false,
|
169
|
+
distinct = true)
|
170
170
|
cd = dgh['created_dt']
|
171
171
|
@@dtcache ||= {}
|
172
172
|
@@dtcache[cd] ||= cd.strftime(PLV_DT_FMT)
|
@@ -199,7 +199,7 @@ class Marty::DataGrid < Marty::Base
|
|
199
199
|
parms, sqls, ress, dg = res['error_extra'].values_at(
|
200
200
|
'params', 'sql', 'results', 'dg')
|
201
201
|
|
202
|
-
raise "DG #{name}: Error in
|
202
|
+
raise "DG #{name}: Error in PLPG call: #{msg}\n"\
|
203
203
|
"params: #{parms}\n"\
|
204
204
|
"sqls: #{sqls}\n"\
|
205
205
|
"results: #{ress}\n"\
|
@@ -251,7 +251,7 @@ class Marty::DataGrid < Marty::Base
|
|
251
251
|
# "name" => <grid name>
|
252
252
|
# "data" => <grid's data array>
|
253
253
|
# "metadata" => <grid's metadata (array of hashes)>
|
254
|
-
vhash =
|
254
|
+
vhash = plpg_lookup_grid_distinct(h, dgh, return_grid_data, distinct)
|
255
255
|
|
256
256
|
return vhash if vhash['result'].nil? || !dgh['data_type']
|
257
257
|
|
data/lib/marty/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.6.
|
4
|
+
version: 2.6.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arman Bostani
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2019-05-
|
17
|
+
date: 2019-05-13 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: pg
|
@@ -343,9 +343,6 @@ files:
|
|
343
343
|
- config/database.yml.travis
|
344
344
|
- config/locales/en.yml
|
345
345
|
- config/routes.rb
|
346
|
-
- db/js/errinfo_v1.js
|
347
|
-
- db/js/lookup_grid_distinct_v1.js
|
348
|
-
- db/js/query_grid_dir_v1.js
|
349
346
|
- db/migrate/001_create_marty_scripts.rb
|
350
347
|
- db/migrate/003_create_marty_users.rb
|
351
348
|
- db/migrate/004_create_marty_roles.rb
|
@@ -381,13 +378,13 @@ files:
|
|
381
378
|
- db/migrate/302_add_api_configs_validate_result.rb
|
382
379
|
- db/migrate/303_create_marty_logs.rb
|
383
380
|
- db/migrate/304_drop_marty_api_logs.rb
|
384
|
-
- db/migrate/400_create_dg_plv8_v1_fns.rb
|
385
381
|
- db/migrate/410_jsonb_promise_result.rb
|
386
382
|
- db/migrate/411_create_vw_promises.rb
|
387
383
|
- db/migrate/500_add_api_class_to_marty_api_config.rb
|
388
384
|
- db/migrate/501_create_dg_plpgsql_v1_fns.rb
|
389
385
|
- db/migrate/502_add_promise_type_enum.rb
|
390
386
|
- db/migrate/503_add_promise_type_to_promises.rb
|
387
|
+
- db/migrate/504_remove_plv8_extension.rb
|
391
388
|
- db/seeds.rb
|
392
389
|
- db/sql/lookup_grid_distinct_v1.sql
|
393
390
|
- db/sql/query_grid_dir_v1.sql
|
data/db/js/errinfo_v1.js
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
// PARAM: err JSONB
|
2
|
-
// RETURN: JSONB
|
3
|
-
var locre = /at.*[ (]([a-z][a-z0-9_]*[:][0-9]+)[:][0-9]+/i;
|
4
|
-
var stack = err.stack;
|
5
|
-
var res = '';
|
6
|
-
if (stack) {
|
7
|
-
var lines = stack.split('\\n');
|
8
|
-
for (i=0, len=lines.length; i<len; ++i) {
|
9
|
-
m = locre.exec(lines[i]);
|
10
|
-
if (m) {
|
11
|
-
res += m[1];
|
12
|
-
}
|
13
|
-
}
|
14
|
-
return { "error": res + " " + err.message };
|
15
|
-
}
|
16
|
-
else return { "error": err };
|
@@ -1,64 +0,0 @@
|
|
1
|
-
// PARAM: h JSONB
|
2
|
-
// PARAM: row_info JSONB
|
3
|
-
// PARAM: return_grid_data boolean default false
|
4
|
-
// PARAM: dis boolean default false
|
5
|
-
// RETURN: JSONB
|
6
|
-
var sqls = []
|
7
|
-
var ress = []
|
8
|
-
try {
|
9
|
-
var query_dir = plv8.find_function('query_grid_dir');
|
10
|
-
var errinfo = plv8.find_function('errinfo');
|
11
|
-
var ih = {};
|
12
|
-
var sql = 'SELECT metadata, lenient, name, group_id, data FROM marty_data_grids WHERE id = $1'
|
13
|
-
var dg = plv8.execute(sql, [row_info['id']])[0];
|
14
|
-
var res;
|
15
|
-
['h','v'].forEach(function(dir) {
|
16
|
-
var infos = dg["metadata"].filter(function(md) { return md["dir"] == dir; });
|
17
|
-
if (infos.length == 0)
|
18
|
-
{
|
19
|
-
ih[dir] = [0]
|
20
|
-
return
|
21
|
-
}
|
22
|
-
a = query_dir(h, infos, row_info);
|
23
|
-
sqls.push(a);
|
24
|
-
ih[dir] = []
|
25
|
-
if (a) {
|
26
|
-
res = plv8.execute(a[0], a[1]);
|
27
|
-
ress.push(res);
|
28
|
-
for (var j = 0; j < res.length; j++)
|
29
|
-
{
|
30
|
-
ih[dir].push(res[j]["index"])
|
31
|
-
}
|
32
|
-
}
|
33
|
-
if (dis && ih[dir].length > 1) {
|
34
|
-
throw Error("matches > 1");
|
35
|
-
}
|
36
|
-
});
|
37
|
-
if ((ih["v"].length == 0 || ih["h"].length == 0) &&
|
38
|
-
!dg['lenient'] && !return_grid_data) {
|
39
|
-
throw Error("Data Grid lookup failed");
|
40
|
-
}
|
41
|
-
|
42
|
-
vi = ih["v"].length > 0 ? Math.min.apply(9999, ih["v"]) : null
|
43
|
-
hi = ih["h"].length > 0 ? Math.min.apply(9999, ih["h"]) : null
|
44
|
-
|
45
|
-
var result = null;
|
46
|
-
if (vi!==null && hi!==null) {
|
47
|
-
result = dg["data"][vi][hi];
|
48
|
-
}
|
49
|
-
return { "result" : result,
|
50
|
-
"name" : dg["name"],
|
51
|
-
"data" : return_grid_data ? dg["data"] : null,
|
52
|
-
"metadata" : return_grid_data ? dg["metadata"] : null
|
53
|
-
};
|
54
|
-
} catch (err) {
|
55
|
-
ei = errinfo(err);
|
56
|
-
|
57
|
-
ei["error_extra"] = {}
|
58
|
-
ei["error_extra"]["sql"] = sqls;
|
59
|
-
ei["error_extra"]["results"] = ress;
|
60
|
-
ei["error_extra"]["params"] = h;
|
61
|
-
ei["error_extra"]["dg"] = dg;
|
62
|
-
|
63
|
-
return ei;
|
64
|
-
}
|
data/db/js/query_grid_dir_v1.js
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
// PARAM: h JSONB
|
2
|
-
// PARAM: infos JSONB[]
|
3
|
-
// PARAM: row_info JSONB
|
4
|
-
// RETURN: JSONB
|
5
|
-
var getfilter = function(type, idx) {
|
6
|
-
switch(type) {
|
7
|
-
case "boolean":
|
8
|
-
return "key = $" + idx + " OR ";
|
9
|
-
case "numrange":
|
10
|
-
return "key @> $" + idx + "::numeric OR ";
|
11
|
-
case "int4range":
|
12
|
-
return "key @> $" + idx + "::integer OR ";
|
13
|
-
case "integer":
|
14
|
-
return "key @> ARRAY[$" + idx + "::integer] OR ";
|
15
|
-
default:
|
16
|
-
return "key @> ARRAY[$" + idx + "::text] OR ";
|
17
|
-
}
|
18
|
-
}
|
19
|
-
|
20
|
-
var temp = [];
|
21
|
-
var args = [];
|
22
|
-
|
23
|
-
var sql;
|
24
|
-
for (var sqlidx=1, i = 0; i < infos.length; i++) {
|
25
|
-
var type = infos[i]["type"];
|
26
|
-
var attr = infos[i]["attr"];
|
27
|
-
var v = h[attr];
|
28
|
-
if (!h.hasOwnProperty(attr)) {
|
29
|
-
//throw Error("missing attr " + attr)
|
30
|
-
continue;
|
31
|
-
}
|
32
|
-
switch (type) {
|
33
|
-
case 'boolean':
|
34
|
-
case "numrange":
|
35
|
-
case "int4range":
|
36
|
-
case "integer":
|
37
|
-
tab = "marty_grid_index_" + type + "s";
|
38
|
-
break;
|
39
|
-
default:
|
40
|
-
tab = 'marty_grid_index_strings';
|
41
|
-
};
|
42
|
-
|
43
|
-
sql = "SELECT DISTINCT index from " + tab +
|
44
|
-
" WHERE data_grid_id = $" + sqlidx++ +
|
45
|
-
" AND created_dt = $" + sqlidx++ +
|
46
|
-
" AND attr = $" + sqlidx++ + ' ';
|
47
|
-
|
48
|
-
args.push(row_info["group_id"]);
|
49
|
-
args.push(row_info["created_dt"]);
|
50
|
-
args.push(attr);
|
51
|
-
|
52
|
-
if (v!==null) {
|
53
|
-
filt = getfilter(type, sqlidx++);
|
54
|
-
args.push(v);
|
55
|
-
} else filt = ''
|
56
|
-
sql += ' AND (' + filt + "key is NULL) ";
|
57
|
-
|
58
|
-
temp.push(sql);
|
59
|
-
}
|
60
|
-
if (temp ==[]) return null;
|
61
|
-
return [temp.join(" INTERSECT "), args];
|
@@ -1,12 +0,0 @@
|
|
1
|
-
class CreateDgPlv8V1Fns < ActiveRecord::Migration[4.2]
|
2
|
-
def change
|
3
|
-
connection.execute <<-SQL
|
4
|
-
-- required to utilize plv8 extension
|
5
|
-
CREATE EXTENSION IF NOT EXISTS plv8;
|
6
|
-
SQL
|
7
|
-
marty_path = Gem.loaded_specs["marty"].full_gem_path
|
8
|
-
Dir.glob("#{marty_path}/db/js/*_v1.js") do |f|
|
9
|
-
connection.execute(Marty::Migrations.get_plv8_migration(f))
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|