pacer-orient 2.1.1-java → 2.1.2-java
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/lib/pacer-orient/encoder.rb +5 -5
- data/lib/pacer-orient/graph.rb +105 -10
- data/lib/pacer-orient/property.rb +21 -0
- data/lib/pacer-orient/sql_filter.rb +55 -0
- data/lib/pacer-orient/version.rb +2 -2
- data/lib/{pacer-orient-2.1.1-standalone.jar → pacer-orient-2.1.2-standalone.jar} +0 -0
- data/pom.xml +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a412d30bbf1e14575ea9d6bb5640370b16777c7c
|
|
4
|
+
data.tar.gz: 619fcd6eb5f3b707089be17635629cbb7a8392a0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 95a24e286b6ccd78c0101cc843fb059a95e11e3ce4dbf88e27a5f5240bd35bb4847e5a20936f9c6ff17d9415f07ebec558b64f972e807e6d2ac21aa4df56834f
|
|
7
|
+
data.tar.gz: bcd6f2b791474497e2d170a4f9c284824f98fa273269503a63976781782e05ac1f068074043329206da4187c44344de788c16e8e72ef6646f8c48bc606d2a67b
|
data/lib/pacer-orient/encoder.rb
CHANGED
|
@@ -19,19 +19,19 @@ module Pacer::Orient
|
|
|
19
19
|
if value.is_a? Bignum
|
|
20
20
|
Marshal.dump(value).to_java_bytes
|
|
21
21
|
else
|
|
22
|
-
value
|
|
22
|
+
value
|
|
23
23
|
end
|
|
24
24
|
when true, false
|
|
25
|
-
value
|
|
25
|
+
value
|
|
26
26
|
when JavaDate
|
|
27
27
|
value
|
|
28
28
|
when Time
|
|
29
|
-
value
|
|
29
|
+
value
|
|
30
30
|
when DateTime
|
|
31
|
-
value.to_time
|
|
31
|
+
value.to_time
|
|
32
32
|
when Date
|
|
33
33
|
t = value.to_time
|
|
34
|
-
(t + Time.zone_offset(t.zone))
|
|
34
|
+
(t + Time.zone_offset(t.zone))
|
|
35
35
|
when Set
|
|
36
36
|
value.map { |x| encode_property(x) }.to_hashset
|
|
37
37
|
when Hash
|
data/lib/pacer-orient/graph.rb
CHANGED
|
@@ -5,6 +5,7 @@ require 'pacer-orient/property'
|
|
|
5
5
|
require 'pacer-orient/encoder'
|
|
6
6
|
require 'pacer-orient/record_id'
|
|
7
7
|
require 'pacer-orient/factory_container'
|
|
8
|
+
require 'pacer-orient/sql_filter'
|
|
8
9
|
|
|
9
10
|
module Pacer
|
|
10
11
|
module Orient
|
|
@@ -25,6 +26,10 @@ module Pacer
|
|
|
25
26
|
:float => OType::FLOAT,
|
|
26
27
|
:double => OType::DOUBLE, # use this one
|
|
27
28
|
:decimal => OType::DECIMAL, # use this one
|
|
29
|
+
#If encoding dates to binary
|
|
30
|
+
#:date => OType::BINARY,
|
|
31
|
+
#:datetime => OType::BINARY,
|
|
32
|
+
#:date_time => OType::BINARY,
|
|
28
33
|
:date => OType::DATE, # use this one
|
|
29
34
|
:datetime => OType::DATETIME, # use this one
|
|
30
35
|
:date_time => OType::DATETIME,
|
|
@@ -50,6 +55,7 @@ module Pacer
|
|
|
50
55
|
:range_fulltext => OClass::INDEX_TYPE::FULLTEXT,
|
|
51
56
|
:range_full_text => OClass::INDEX_TYPE::FULLTEXT,
|
|
52
57
|
:range_notunique => OClass::INDEX_TYPE::NOTUNIQUE,
|
|
58
|
+
:range_nonunique => OClass::INDEX_TYPE::NOTUNIQUE,
|
|
53
59
|
:range_not_unique => OClass::INDEX_TYPE::NOTUNIQUE,
|
|
54
60
|
:range_unique => OClass::INDEX_TYPE::UNIQUE,
|
|
55
61
|
:proxy => OClass::INDEX_TYPE::PROXY,
|
|
@@ -57,11 +63,24 @@ module Pacer
|
|
|
57
63
|
:fulltext => OClass::INDEX_TYPE::FULLTEXT_HASH_INDEX,
|
|
58
64
|
:full_text => OClass::INDEX_TYPE::FULLTEXT_HASH_INDEX,
|
|
59
65
|
:notunique => OClass::INDEX_TYPE::NOTUNIQUE_HASH_INDEX,
|
|
66
|
+
:nonunique => OClass::INDEX_TYPE::NOTUNIQUE_HASH_INDEX,
|
|
60
67
|
:not_unique => OClass::INDEX_TYPE::NOTUNIQUE_HASH_INDEX,
|
|
61
68
|
:spatial => OClass::INDEX_TYPE::SPATIAL,
|
|
62
69
|
:unique => OClass::INDEX_TYPE::UNIQUE_HASH_INDEX
|
|
63
70
|
}
|
|
64
71
|
|
|
72
|
+
ITYPE_REVERSE = {
|
|
73
|
+
'DICTIONARY' => { range: true, unique: false, type: :range_dictionary } ,
|
|
74
|
+
'DICTIONARY_HASH_INDEX' => { range: false, unique: false, type: :dictionary } ,
|
|
75
|
+
'FULLTEXT' => { range: true, unique: false, type: :range_fulltext } ,
|
|
76
|
+
'FULLTEXT_HASH_INDEX' => { range: false, unique: false, type: :fulltext } ,
|
|
77
|
+
'NOTUNIQUE' => { range: true, unique: false, type: :range_notunique } ,
|
|
78
|
+
'NOTUNIQUE_HASH_INDEX' => { range: false, unique: false, type: :notunique } ,
|
|
79
|
+
'PROXY' => { range: false, unique: false, type: :proxy } ,
|
|
80
|
+
'SPATIAL' => { range: false, unique: false, type: :spatial } ,
|
|
81
|
+
'UNIQUE' => { range: true, unique: true, type: :range_unique } ,
|
|
82
|
+
'UNIQUE_HASH_INDEX' => { range: false, unique: true, type: :unique } ,
|
|
83
|
+
}
|
|
65
84
|
|
|
66
85
|
def orient_graph
|
|
67
86
|
blueprints_graph.raw_graph
|
|
@@ -122,13 +141,11 @@ module Pacer
|
|
|
122
141
|
blueprints_graph.useClassForVertexLabel = b
|
|
123
142
|
end
|
|
124
143
|
|
|
125
|
-
def sql(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
end
|
|
131
|
-
sql_command(sql, args).iterator.to_route(based_on: self.v(extensions))
|
|
144
|
+
def sql(sql = nil, args = nil, opts = {})
|
|
145
|
+
opts = { back: self, element_type: :vertex }.merge opts
|
|
146
|
+
chain_route(opts.merge(sql: sql,
|
|
147
|
+
query_args: args,
|
|
148
|
+
filter: Pacer::Filter::SqlFilter))
|
|
132
149
|
end
|
|
133
150
|
|
|
134
151
|
def sql_e(extensions, sql = nil, args)
|
|
@@ -140,11 +157,16 @@ module Pacer
|
|
|
140
157
|
sql_command(sql, args).iterator.to_route(based_on: self.e(extensions))
|
|
141
158
|
end
|
|
142
159
|
|
|
143
|
-
def sql_command(sql, args)
|
|
144
|
-
|
|
160
|
+
def sql_command(sql, args = nil)
|
|
161
|
+
if args and not args.frozen?
|
|
145
162
|
args = args.map { |a| encoder.encode_property(a) }
|
|
146
163
|
end
|
|
147
|
-
blueprints_graph.command(OCommandSQL.new(sql))
|
|
164
|
+
command = blueprints_graph.command(OCommandSQL.new(sql))
|
|
165
|
+
if args
|
|
166
|
+
command.execute(*args)
|
|
167
|
+
else
|
|
168
|
+
command.execute
|
|
169
|
+
end
|
|
148
170
|
end
|
|
149
171
|
|
|
150
172
|
# Find or create a vertex or edge class
|
|
@@ -237,6 +259,79 @@ module Pacer
|
|
|
237
259
|
end
|
|
238
260
|
end
|
|
239
261
|
end
|
|
262
|
+
|
|
263
|
+
def sql_range(k, v, params)
|
|
264
|
+
params.push v.min
|
|
265
|
+
params.push v.last
|
|
266
|
+
"#{k} BETWEEN ? and ?"
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
# Only consider a property indexed if it can look up that type
|
|
270
|
+
def index_properties(orient_type, filters)
|
|
271
|
+
filters.properties.select do |k, v|
|
|
272
|
+
if v
|
|
273
|
+
p = orient_type.property k
|
|
274
|
+
if p and p.indexed?
|
|
275
|
+
if v.is_a? Range or v.class.name == 'RangeSet'
|
|
276
|
+
p.range_index?
|
|
277
|
+
else
|
|
278
|
+
true
|
|
279
|
+
end
|
|
280
|
+
elsif v.is_a? Range
|
|
281
|
+
true
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
end
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
def build_query(orient_type, filters)
|
|
288
|
+
indexed = index_properties orient_type, filters
|
|
289
|
+
if indexed.any?
|
|
290
|
+
params = []
|
|
291
|
+
conds = indexed.map do |k, v|
|
|
292
|
+
if v.is_a? Range
|
|
293
|
+
sql_range(k, v, params)
|
|
294
|
+
elsif v.class.name == 'RangeSet'
|
|
295
|
+
s = v.ranges.map do |r|
|
|
296
|
+
sql_range(k, r, params)
|
|
297
|
+
end.join " OR "
|
|
298
|
+
"(#{s})"
|
|
299
|
+
elsif v.is_a? Set
|
|
300
|
+
params.push v.to_a
|
|
301
|
+
"#{k} IN ?"
|
|
302
|
+
else
|
|
303
|
+
params.push v
|
|
304
|
+
"#{k} = ?"
|
|
305
|
+
end
|
|
306
|
+
end.compact.join(" AND ")
|
|
307
|
+
["SELECT FROM #{orient_type.name} WHERE #{conds}", params, indexed]
|
|
308
|
+
else
|
|
309
|
+
nil
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
def indexed_route(element_type, filters, block)
|
|
314
|
+
if search_manual_indices
|
|
315
|
+
super
|
|
316
|
+
else
|
|
317
|
+
filters.graph = self
|
|
318
|
+
filters.use_lookup!
|
|
319
|
+
query = build_query(orient_type(nil, element_type), filters)
|
|
320
|
+
if query
|
|
321
|
+
route = sql query[0], query[1], element_type: element_type, extensions: filters.extensions, wrapper: filters.wrapper
|
|
322
|
+
indexed = query.pop
|
|
323
|
+
filters.remove_property_keys indexed.map { |x| x.first }
|
|
324
|
+
if filters.any?
|
|
325
|
+
Pacer::Route.property_filter(route, filters, block)
|
|
326
|
+
else
|
|
327
|
+
route
|
|
328
|
+
end
|
|
329
|
+
elsif filters.route_modules.any?
|
|
330
|
+
mod = filters.route_modules.shift
|
|
331
|
+
Pacer::Route.property_filter(mod.route(self), filters, block)
|
|
332
|
+
end
|
|
333
|
+
end
|
|
334
|
+
end
|
|
240
335
|
end
|
|
241
336
|
end
|
|
242
337
|
end
|
|
@@ -42,6 +42,27 @@ module Pacer::Orient
|
|
|
42
42
|
nil
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
+
def range_index?
|
|
46
|
+
if i = index
|
|
47
|
+
t = Graph::ITYPE_REVERSE[i.getType]
|
|
48
|
+
t[:range] if t
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def unique_index?
|
|
53
|
+
if i = index
|
|
54
|
+
t = Graph::ITYPE_REVERSE[i.getType]
|
|
55
|
+
t[:unique] if t
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def index_type
|
|
60
|
+
if i = index
|
|
61
|
+
t = Graph::ITYPE_REVERSE[i.getType]
|
|
62
|
+
t[:type] if t
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
45
66
|
[ :set_name, :set_not_null, :set_collate,
|
|
46
67
|
:set_mandatory, :set_readonly, :set_min, :set_max,
|
|
47
68
|
:set_regexp, :set_custom, :remove_custom, :clear_custom
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module Pacer
|
|
2
|
+
module Filter
|
|
3
|
+
module SqlFilter
|
|
4
|
+
attr_accessor :sql, :select, :orient_type, :where, :query_args, :order_by, :limit, :offset, :timeout, :parallel
|
|
5
|
+
|
|
6
|
+
protected
|
|
7
|
+
|
|
8
|
+
def orient_type_name
|
|
9
|
+
t = graph.orient_type(orient_type, element_type)
|
|
10
|
+
if t
|
|
11
|
+
t.name
|
|
12
|
+
else
|
|
13
|
+
fail Pacer::ClientError.new "Unknown orient type for #{ element_type }: #{ orient_type }"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def query
|
|
18
|
+
if sql
|
|
19
|
+
s = ""
|
|
20
|
+
s << sql
|
|
21
|
+
else
|
|
22
|
+
s = "SELECT "
|
|
23
|
+
case select
|
|
24
|
+
when String
|
|
25
|
+
s << select
|
|
26
|
+
when Array
|
|
27
|
+
s << select.join(", ")
|
|
28
|
+
end
|
|
29
|
+
s << " FROM #{ orient_type } WHERE "
|
|
30
|
+
s << where
|
|
31
|
+
s << "ORDER_BY " if order_by
|
|
32
|
+
case order_by
|
|
33
|
+
when String
|
|
34
|
+
s << order_by
|
|
35
|
+
when Array
|
|
36
|
+
s << order_by.join(", ")
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
s << " SKIP #{ offset }" if offset
|
|
40
|
+
s << " LIMIT #{ limit }" if limit
|
|
41
|
+
s << " TIMEOUT #{ timeout }" if timeout
|
|
42
|
+
s << " PARALLEL" if parallel
|
|
43
|
+
s
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def source_iterator
|
|
47
|
+
graph.sql_command(query, query_args).iterator
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def inspect_string
|
|
51
|
+
"SQL '#{query}' #{query_args}"
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
data/lib/pacer-orient/version.rb
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
module Pacer
|
|
2
2
|
module Orient
|
|
3
|
-
VERSION = "2.1.
|
|
3
|
+
VERSION = "2.1.2"
|
|
4
4
|
JAR = "pacer-orient-#{ VERSION }-standalone.jar"
|
|
5
5
|
JAR_PATH = "lib/#{ JAR }"
|
|
6
6
|
ORIENT_VERSION = "1.7.8"
|
|
7
7
|
PIPES_VERSION = "2.5.0"
|
|
8
|
-
PACER_REQ = ">= 1.5.
|
|
8
|
+
PACER_REQ = ">= 1.5.3"
|
|
9
9
|
end
|
|
10
10
|
end
|
|
Binary file
|
data/pom.xml
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<!-- NOTE: the following properties are automatically updated based on the values in lib/pacer-orient/version.rb -->
|
|
9
9
|
<properties>
|
|
10
10
|
<orient.version>1.7.8</orient.version>
|
|
11
|
-
<gem.version>2.1.
|
|
11
|
+
<gem.version>2.1.2</gem.version>
|
|
12
12
|
<pipes.version>2.5.0</pipes.version>
|
|
13
13
|
</properties>
|
|
14
14
|
<!-- NOTE: the following properties are automatically updated based on the values in lib/pacer-orient/version.rb -->
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pacer-orient
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.1.
|
|
4
|
+
version: 2.1.2
|
|
5
5
|
platform: java
|
|
6
6
|
authors:
|
|
7
7
|
- Darrick Wiebe
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-09-
|
|
11
|
+
date: 2014-09-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: pacer
|
|
@@ -16,12 +16,12 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - '>='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 1.5.
|
|
19
|
+
version: 1.5.3
|
|
20
20
|
requirement: !ruby/object:Gem::Requirement
|
|
21
21
|
requirements:
|
|
22
22
|
- - '>='
|
|
23
23
|
- !ruby/object:Gem::Version
|
|
24
|
-
version: 1.5.
|
|
24
|
+
version: 1.5.3
|
|
25
25
|
prerelease: false
|
|
26
26
|
type: :runtime
|
|
27
27
|
description: Orient jars and related code for Pacer
|
|
@@ -43,11 +43,12 @@ files:
|
|
|
43
43
|
- lib/pacer-orient/property.rb
|
|
44
44
|
- lib/pacer-orient/record_id.rb
|
|
45
45
|
- lib/pacer-orient/rspec.rb
|
|
46
|
+
- lib/pacer-orient/sql_filter.rb
|
|
46
47
|
- lib/pacer-orient/version.rb
|
|
47
48
|
- pacer-orient.gemspec
|
|
48
49
|
- pom.xml
|
|
49
50
|
- pom/standalone.xml
|
|
50
|
-
- lib/pacer-orient-2.1.
|
|
51
|
+
- lib/pacer-orient-2.1.2-standalone.jar
|
|
51
52
|
homepage: http://orientechnologies.com
|
|
52
53
|
licenses: []
|
|
53
54
|
metadata: {}
|