rethinkdb 1.12.0.2 → 1.13.0.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.
Files changed (8) hide show
  1. checksums.yaml +4 -4
  2. data/lib/func.rb +19 -19
  3. data/lib/net.rb +96 -87
  4. data/lib/ql2.pb.rb +219 -323
  5. data/lib/rethinkdb.rb +3 -43
  6. data/lib/rpp.rb +108 -73
  7. data/lib/shim.rb +75 -189
  8. metadata +4 -32
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4fe537734bd0c2f1ad88fddf9b1d8204f526e2aa
4
- data.tar.gz: 0eeff69befb30b5ca9d1ab97274a78668bd252e5
3
+ metadata.gz: 5777270a3f099a47a14f191c5da7bdd9c1b10dc8
4
+ data.tar.gz: de263295afd0c0e85e05c8b2f89ff371f9339014
5
5
  SHA512:
6
- metadata.gz: 1e6749992400f655ab567c1d9e705ef1deee584561e76197e03ba65b694eeba21d1ed7bac2ec82c7ecdd89a6b38af9f341f7be92457f8c82c0bdf84c018cce2b
7
- data.tar.gz: 6e3a0605724f1e36f1160c0c26b1f76bf5cb452d7c7dd5cb0f25fa4364818c3707e55d7ee6350f25035a8233f2761d90e8d076efece7c078b0b52dca4fc0d211
6
+ metadata.gz: 68982ecf1adac91ef225ed495ad2447f5b8e089a6a6313e68e1f8f986e8bd0130b82a5eedb82cc411bdc6534ebba6dc96846e40b2ba6ccfedfef0a3b01340ea3
7
+ data.tar.gz: 6fdfea2322bccdc0ac59b13b940d4a0fca748157d016d1077e4ab130ac0eb03eb04fc98162387e46b0da6dc57cb5f6b3672d63adf75e4b92d5cc959a86ae61a2
@@ -1,8 +1,9 @@
1
1
  module RethinkDB
2
2
  class RQL
3
+ @@gensym_mutex = Mutex.new
3
4
  @@gensym_cnt = 0
4
5
  def new_func(&b)
5
- args = (0...b.arity).map{@@gensym_cnt += 1}
6
+ args = @@gensym_mutex.synchronize{(0...b.arity).map{@@gensym_cnt += 1}}
6
7
  body = b.call(*(args.map{|i| RQL.new.var i}))
7
8
  RQL.new.func(args, body)
8
9
  end
@@ -33,7 +34,9 @@ module RethinkDB
33
34
  :orderby => -1,
34
35
  :group => -1,
35
36
  :iso8601 => -1,
36
- :index_create => -1
37
+ :index_create => -1,
38
+ :random => -1,
39
+ :http => 1
37
40
  }
38
41
  @@method_aliases = {
39
42
  :lt => :<,
@@ -53,7 +56,6 @@ module RethinkDB
53
56
  :javascript => :js,
54
57
  :typeof => :type_of
55
58
  }
56
- @@allow_json = {:INSERT => true}
57
59
 
58
60
  termtypes = Term::TermType.constants.map{ |c| c.to_sym }
59
61
  termtypes.each {|termtype|
@@ -86,17 +88,13 @@ module RethinkDB
86
88
  optargs = a.delete_at(opt_offset) if a[opt_offset].class == Hash
87
89
  end
88
90
 
89
- args = (@body ? [self] : []) + a + (b ? [new_func(&b)] : [])
90
-
91
- t = Term.new
92
- t.type = Term::TermType.const_get(termtype)
93
- t.args = args.map{|x| RQL.new.expr(x, :allow_json => @@allow_json[termtype]).to_pb}
94
- t.optargs = (optargs || {}).map {|k,v|
95
- ap = Term::AssocPair.new
96
- ap.key = k.to_s
97
- ap.val = RQL.new.expr(v, :allow_json => @@allow_json[termtype]).to_pb
98
- ap
99
- }
91
+ args = ((@body != RQL) ? [self] : []) + a + (b ? [new_func(&b)] : [])
92
+
93
+ t = [Term::TermType.const_get(termtype),
94
+ args.map {|x| RQL.new.expr(x).to_pb},
95
+ *((optargs && optargs != {}) ?
96
+ [Hash[optargs.map {|k,v| [k.to_s, RQL.new.expr(v).to_pb]}]] :
97
+ [])]
100
98
  return RQL.new(t, bitop)
101
99
  }
102
100
 
@@ -108,7 +106,7 @@ module RethinkDB
108
106
  }
109
107
 
110
108
  def connect(*args, &b)
111
- unbound_if @body
109
+ unbound_if @body != RQL
112
110
  c = Connection.new(*args)
113
111
  b ? begin b.call(c) ensure c.close end : c
114
112
  end
@@ -133,19 +131,21 @@ module RethinkDB
133
131
  you want a query that does equality comparison.
134
132
 
135
133
  If you need to see whether two queries are the same, compare
136
- their protobufs like: `query1.to_pb == query2.to_pb`."
134
+ the raw qeuries like: `query1.to_pb == query2.to_pb`."
137
135
  end
138
136
 
139
137
  def do(*args, &b)
140
- a = (@body ? [self] : []) + args.dup
138
+ a = ((@body != RQL) ? [self] : []) + args.dup
141
139
  if a == [] && !b
142
140
  raise RqlDriverError, "Expected 1 or more argument(s) but found 0."
143
141
  end
144
- RQL.new.funcall(*((b ? [new_func(&b)] : [a.pop]) + a))
142
+ funcall_args = (b ? [new_func(&b)] : [a.pop]) + a
143
+ # PP.pp funcall_args
144
+ RQL.new.funcall(*funcall_args)
145
145
  end
146
146
 
147
147
  def row
148
- unbound_if @body
148
+ unbound_if(@body != RQL)
149
149
  raise NoMethodError, ("Sorry, r.row is not available in the ruby driver. " +
150
150
  "Use blocks instead.")
151
151
  end
data/lib/net.rb CHANGED
@@ -1,19 +1,8 @@
1
- # Copyright 2010-2012 RethinkDB, all rights reserved.
2
1
  require 'socket'
3
2
  require 'thread'
4
3
  require 'timeout'
5
4
 
6
- # $f = File.open("fuzz_seed.rb", "w")
7
-
8
5
  module RethinkDB
9
- def self.new_query(type, token)
10
- q = Query.new
11
- q.type = type
12
- q.accepts_r_json = true
13
- q.token = token
14
- return q
15
- end
16
-
17
6
  module Faux_Abort
18
7
  class Abort
19
8
  end
@@ -23,8 +12,7 @@ module RethinkDB
23
12
  @@default_conn = nil
24
13
  def self.set_default_conn c; @@default_conn = c; end
25
14
  def run(c=@@default_conn, opts=nil, &b)
26
- # $f.puts "("+RPP::pp(@body)+"),"
27
- unbound_if !@body
15
+ unbound_if(@body == RQL)
28
16
  c, opts = @@default_conn, c if opts.nil? && !c.kind_of?(RethinkDB::Connection)
29
17
  opts = {} if opts.nil?
30
18
  opts = {opts => true} if opts.class != Hash
@@ -75,6 +63,7 @@ module RethinkDB
75
63
  @conn = connection
76
64
  @opts = opts
77
65
  @token = token
66
+ fetch_batch
78
67
  end
79
68
 
80
69
  def each (&block) # :nodoc:
@@ -84,11 +73,12 @@ module RethinkDB
84
73
  while true
85
74
  @results.each(&block)
86
75
  return self if !@more
87
- q = RethinkDB::new_query(Query::QueryType::CONTINUE, @token)
88
- res = @conn.run_internal q
76
+ res = @conn.wait(@token)
89
77
  @results = Shim.response_to_native(res, @msg, @opts)
90
- if res.type == Response::ResponseType::SUCCESS_SEQUENCE
78
+ if res['t'] == Response::ResponseType::SUCCESS_SEQUENCE
91
79
  @more = false
80
+ else
81
+ fetch_batch
92
82
  end
93
83
  end
94
84
  end
@@ -96,14 +86,19 @@ module RethinkDB
96
86
  def close
97
87
  if @more
98
88
  @more = false
99
- q = RethinkDB::new_query(Query::QueryType::STOP, @token)
100
- res = @conn.run_internal q
101
- if res.type != Response::ResponseType::SUCCESS_SEQUENCE || res.response != []
89
+ q = [Query::QueryType::STOP]
90
+ res = @conn.run_internal(q, @opts, @token)
91
+ if res['t'] != Response::ResponseType::SUCCESS_SEQUENCE || res.response != []
102
92
  raise RqlRuntimeError, "Server sent malformed STOP response #{PP.pp(res, "")}"
103
93
  end
104
94
  return true
105
95
  end
106
96
  end
97
+
98
+ def fetch_batch
99
+ @conn.set_opts(@token, @opts)
100
+ @conn.dispatch([Query::QueryType::CONTINUE], @token)
101
+ end
107
102
  end
108
103
 
109
104
  class Connection
@@ -134,48 +129,53 @@ module RethinkDB
134
129
  attr_reader :default_db, :conn_id
135
130
 
136
131
  @@token_cnt = 0
137
- def run_internal(q, noreply=false)
138
- dispatch q
139
- noreply ? nil : wait(q.token)
132
+ def set_opts(token, opts)
133
+ @mutex.synchronize{@opts[token] = opts}
134
+ end
135
+ def run_internal(q, opts, token)
136
+ set_opts(token, opts)
137
+ noreply = opts[:noreply]
138
+
139
+ dispatch(q, token)
140
+ noreply ? nil : wait(token)
140
141
  end
141
142
  def run(msg, opts, &b)
142
143
  reconnect(:noreply_wait => false) if @auto_reconnect && (!@socket || !@listener)
143
144
  raise RqlRuntimeError, "Error: Connection Closed." if !@socket || !@listener
144
- q = RethinkDB::new_query(Query::QueryType::START, @@token_cnt += 1)
145
- q.query = msg
146
145
 
146
+ global_optargs = {}
147
147
  all_opts = @default_opts.merge(opts)
148
148
  if all_opts.keys.include?(:noreply)
149
149
  all_opts[:noreply] = !!all_opts[:noreply]
150
150
  end
151
- all_opts.each {|k,v|
152
- ap = Query::AssocPair.new
153
- ap.key = k.to_s
154
- if v.class == RQL
155
- ap.val = v.to_pb
156
- else
157
- ap.val = RQL.new.expr(v).to_pb
158
- end
159
- q.global_optargs << ap
160
- }
161
151
 
162
- res = run_internal(q, all_opts[:noreply])
152
+ token = (@@token_cnt += 1)
153
+ q = [Query::QueryType::START,
154
+ msg,
155
+ Hash[all_opts.map {|k,v|
156
+ [k.to_s, (v.class == RQL ? v.to_pb : RQL.new.expr(v).to_pb)]
157
+ }]]
158
+
159
+ res = run_internal(q, all_opts, token)
163
160
  return res if !res
164
- if res.type == Response::ResponseType::SUCCESS_PARTIAL
161
+ if res['t'] == Response::ResponseType::SUCCESS_PARTIAL ||
162
+ res['t'] == Response::ResponseType::SUCCESS_FEED
165
163
  value = Cursor.new(Shim.response_to_native(res, msg, opts),
166
- msg, self, opts, q.token, true)
167
- elsif res.type == Response::ResponseType::SUCCESS_SEQUENCE
164
+ msg, self, opts, token, true)
165
+ elsif res['t'] == Response::ResponseType::SUCCESS_SEQUENCE
168
166
  value = Cursor.new(Shim.response_to_native(res, msg, opts),
169
- msg, self, opts, q.token, false)
167
+ msg, self, opts, token, false)
170
168
  else
171
169
  value = Shim.response_to_native(res, msg, opts)
172
170
  end
173
171
 
174
- if res.respond_to? :has_profile? and res.has_profile?
175
- real_val = {"profile" => Shim.datum_to_native(res.profile(), opts),
176
- "value" => value}
172
+ if res['p']
173
+ real_val = {
174
+ "profile" => res['p'],
175
+ "value" => value
176
+ }
177
177
  else
178
- real_val = value
178
+ real_val = value
179
179
  end
180
180
 
181
181
  if b
@@ -193,12 +193,11 @@ module RethinkDB
193
193
  @socket.write(packet)
194
194
  end
195
195
 
196
- def dispatch msg
197
- # PP.pp msg if $DEBUG
198
- payload = msg.serialize_to_string
199
- # File.open('sexp_payloads.txt', 'a') {|f| f.write(payload.inspect+"\n")}
200
- send([payload.length].pack('L<') + payload)
201
- return msg.token
196
+ def dispatch(msg, token)
197
+ payload = Shim.dump_json(msg).force_encoding('BINARY')
198
+ prefix = [token, payload.bytesize].pack('Q<L<')
199
+ send(prefix + payload)
200
+ return token
202
201
  end
203
202
 
204
203
  def wait token
@@ -231,7 +230,8 @@ module RethinkDB
231
230
  end
232
231
 
233
232
  @@last = nil
234
- @@magic_number = VersionDummy::Version::V0_2
233
+ @@magic_number = VersionDummy::Version::V0_3
234
+ @@wire_protocol = VersionDummy::Protocol::JSON
235
235
 
236
236
  def debug_socket; @socket; end
237
237
 
@@ -249,9 +249,10 @@ module RethinkDB
249
249
  self.noreply_wait() if opts[:noreply_wait]
250
250
 
251
251
  stop_listener
252
- @socket.close if @socket
252
+ @socket.close rescue nil if @socket
253
253
  @socket = TCPSocket.open(@host, @port)
254
254
  @waiters = {}
255
+ @opts = {}
255
256
  @data = {}
256
257
  @mutex = Mutex.new
257
258
  @conn_id += 1
@@ -277,9 +278,9 @@ module RethinkDB
277
278
 
278
279
  def noreply_wait
279
280
  raise RqlRuntimeError, "Error: Connection Closed." if !@socket || !@listener
280
- q = RethinkDB::new_query(Query::QueryType::NOREPLY_WAIT, @@token_cnt += 1)
281
- res = run_internal(q)
282
- if res.type != Response::ResponseType::WAIT_COMPLETE
281
+ q = [Query::QueryType::NOREPLY_WAIT]
282
+ res = run_internal(q, {noreply: false}, @@token_cnt += 1)
283
+ if res['t'] != Response::ResponseType::WAIT_COMPLETE
283
284
  raise RqlRuntimeError, "Unexpected response to noreply_wait: " + PP.pp(res, "")
284
285
  end
285
286
  nil
@@ -298,6 +299,21 @@ module RethinkDB
298
299
  end
299
300
  end
300
301
 
302
+ def note_data(token, data) # Synchronize around this!
303
+ @data[token] = data
304
+ @opts.delete(token)
305
+ @waiters.delete(token).signal if @waiters[token]
306
+ end
307
+
308
+ def note_error(token, e) # Synchronize around this!
309
+ data = {
310
+ 't' => 16,
311
+ 'r' => [e.inspect],
312
+ 'b' => []
313
+ }
314
+ note_data(token, data)
315
+ end
316
+
301
317
  def start_listener
302
318
  class << @socket
303
319
  def maybe_timeout(sec=nil, &b)
@@ -316,6 +332,7 @@ module RethinkDB
316
332
  @socket.write([@@magic_number].pack('L<'))
317
333
 
318
334
  @socket.write([@auth_key.size].pack('L<') + @auth_key)
335
+ @socket.write([@@wire_protocol].pack('L<'))
319
336
  response = ""
320
337
  while response[-1..-1] != "\0"
321
338
  response += @socket.read_exn(1, 20)
@@ -327,44 +344,36 @@ module RethinkDB
327
344
 
328
345
  stop_listener if @listener
329
346
  @listener = Thread.new {
330
- loop {
347
+ while true
331
348
  begin
349
+ token = -1
350
+ token = @socket.read_exn(8).unpack('q<')[0]
332
351
  response_length = @socket.read_exn(4).unpack('L<')[0]
333
352
  response = @socket.read_exn(response_length)
334
- rescue RqlRuntimeError => e
335
- @mutex.synchronize {
336
- @listener = nil
337
- @waiters.each {|kv| kv[1].signal}
338
- }
339
- Thread.current.terminate
340
- abort("unreachable")
341
- end
342
- #TODO: Recovery
343
- begin
344
- protob = Response.parse(response)
345
- rescue
346
- raise RqlRuntimeError, "Bad Protobuf #{response}, server is buggy."
347
- end
348
- if protob.token == -1
349
- @mutex.synchronize {
350
- @waiters.keys.each {|k|
351
- @data[k] = protob
352
- if @waiters[k]
353
- cond = @waiters.delete k
354
- cond.signal
355
- end
353
+ begin
354
+ data = Shim.load_json(response, @opts[token])
355
+ rescue Exception => e
356
+ raise RqlRuntimeError, "Bad response, server is buggy.\n" +
357
+ "#{e.inspect}\n" + response
358
+ end
359
+ if token == -1
360
+ @mutex.synchronize{@waiters.keys.each{|k| note_data(k, data)}}
361
+ else
362
+ @mutex.synchronize{note_data(token, data)}
363
+ end
364
+ rescue Exception => e
365
+ if token == -1
366
+ @mutex.synchronize {
367
+ @listener = nil
368
+ @waiters.keys.each{|k| note_error(k, e)}
356
369
  }
357
- }
358
- else
359
- @mutex.synchronize {
360
- @data[protob.token] = protob
361
- if @waiters[protob.token]
362
- cond = @waiters.delete protob.token
363
- cond.signal
364
- end
365
- }
370
+ Thread.current.terminate
371
+ abort("unreachable")
372
+ else
373
+ @mutex.synchronize{note_error(token, e)}
374
+ end
366
375
  end
367
- }
376
+ end
368
377
  }
369
378
  end
370
379
  end
@@ -1,324 +1,220 @@
1
- #!/usr/bin/env ruby
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
-
4
- require 'protocol_buffers'
5
-
6
- # forward declarations
7
- class VersionDummy < ::ProtocolBuffers::Message; end
8
- class Query < ::ProtocolBuffers::Message; end
9
- class Frame < ::ProtocolBuffers::Message; end
10
- class Backtrace < ::ProtocolBuffers::Message; end
11
- class Response < ::ProtocolBuffers::Message; end
12
- class Datum < ::ProtocolBuffers::Message; end
13
- class Term < ::ProtocolBuffers::Message; end
14
-
15
- class VersionDummy < ::ProtocolBuffers::Message
16
- # forward declarations
17
-
18
- # enums
19
- module Version
20
- include ::ProtocolBuffers::Enum
21
-
22
- set_fully_qualified_name "VersionDummy.Version"
23
-
24
- V0_1 = 1063369270
25
- V0_2 = 1915781601
26
- end
27
-
28
- set_fully_qualified_name "VersionDummy"
29
-
30
- end
31
-
32
- class Query < ::ProtocolBuffers::Message
33
- # forward declarations
34
- class AssocPair < ::ProtocolBuffers::Message; end
35
-
36
- # enums
37
- module QueryType
38
- include ::ProtocolBuffers::Enum
39
-
40
- set_fully_qualified_name "Query.QueryType"
41
-
42
- START = 1
43
- CONTINUE = 2
44
- STOP = 3
45
- NOREPLY_WAIT = 4
46
- end
47
-
48
- set_fully_qualified_name "Query"
49
-
50
- # nested messages
51
- class AssocPair < ::ProtocolBuffers::Message
52
- set_fully_qualified_name "Query.AssocPair"
53
-
54
- optional :string, :key, 1
55
- optional ::Term, :val, 2
56
- end
57
-
58
- optional ::Query::QueryType, :type, 1
59
- optional ::Term, :query, 2
60
- optional :int64, :token, 3
61
- optional :bool, :OBSOLETE_noreply, 4, :default => false
62
- optional :bool, :accepts_r_json, 5, :default => false
63
- repeated ::Query::AssocPair, :global_optargs, 6
64
- end
65
-
66
- class Frame < ::ProtocolBuffers::Message
67
- # forward declarations
68
-
69
- # enums
70
- module FrameType
71
- include ::ProtocolBuffers::Enum
72
-
73
- set_fully_qualified_name "Frame.FrameType"
74
-
75
- POS = 1
76
- OPT = 2
77
- end
78
-
79
- set_fully_qualified_name "Frame"
80
-
81
- optional ::Frame::FrameType, :type, 1
82
- optional :int64, :pos, 2
83
- optional :string, :opt, 3
84
- end
85
-
86
- class Backtrace < ::ProtocolBuffers::Message
87
- set_fully_qualified_name "Backtrace"
88
-
89
- repeated ::Frame, :frames, 1
1
+ # DO NOT EDIT
2
+ # Autogenerated by convert_protofile
3
+
4
+ module RethinkDB
5
+ module VersionDummy
6
+ module Version
7
+ V0_1 = 1063369270
8
+ V0_2 = 1915781601
9
+ V0_3 = 1601562686
10
+ end
11
+
12
+ module Protocol
13
+ PROTOBUF = 656407617
14
+ JSON = 2120839367
15
+ end
16
+ end
17
+
18
+ module Query
19
+ module QueryType
20
+ START = 1
21
+ CONTINUE = 2
22
+ STOP = 3
23
+ NOREPLY_WAIT = 4
24
+ end
25
+
26
+ module AssocPair
27
+ end
28
+ end
29
+
30
+ module Frame
31
+ module FrameType
32
+ POS = 1
33
+ OPT = 2
34
+ end
35
+ end
36
+
37
+ module Backtrace
38
+ end
39
+
40
+ module Response
41
+ module ResponseType
42
+ SUCCESS_ATOM = 1
43
+ SUCCESS_SEQUENCE = 2
44
+ SUCCESS_PARTIAL = 3
45
+ SUCCESS_FEED = 5
46
+ WAIT_COMPLETE = 4
47
+ CLIENT_ERROR = 16
48
+ COMPILE_ERROR = 17
49
+ RUNTIME_ERROR = 18
50
+ end
51
+ end
52
+
53
+ module Datum
54
+ module DatumType
55
+ R_NULL = 1
56
+ R_BOOL = 2
57
+ R_NUM = 3
58
+ R_STR = 4
59
+ R_ARRAY = 5
60
+ R_OBJECT = 6
61
+ R_JSON = 7
62
+ end
63
+
64
+ module AssocPair
65
+ end
66
+ end
67
+
68
+ module Term
69
+ module TermType
70
+ DATUM = 1
71
+ MAKE_ARRAY = 2
72
+ MAKE_OBJ = 3
73
+ VAR = 10
74
+ JAVASCRIPT = 11
75
+ HTTP = 153
76
+ ERROR = 12
77
+ IMPLICIT_VAR = 13
78
+ DB = 14
79
+ TABLE = 15
80
+ GET = 16
81
+ GET_ALL = 78
82
+ EQ = 17
83
+ NE = 18
84
+ LT = 19
85
+ LE = 20
86
+ GT = 21
87
+ GE = 22
88
+ NOT = 23
89
+ ADD = 24
90
+ SUB = 25
91
+ MUL = 26
92
+ DIV = 27
93
+ MOD = 28
94
+ APPEND = 29
95
+ PREPEND = 80
96
+ DIFFERENCE = 95
97
+ SET_INSERT = 88
98
+ SET_INTERSECTION = 89
99
+ SET_UNION = 90
100
+ SET_DIFFERENCE = 91
101
+ SLICE = 30
102
+ SKIP = 70
103
+ LIMIT = 71
104
+ INDEXES_OF = 87
105
+ CONTAINS = 93
106
+ GET_FIELD = 31
107
+ KEYS = 94
108
+ OBJECT = 143
109
+ HAS_FIELDS = 32
110
+ WITH_FIELDS = 96
111
+ PLUCK = 33
112
+ WITHOUT = 34
113
+ MERGE = 35
114
+ BETWEEN = 36
115
+ REDUCE = 37
116
+ MAP = 38
117
+ FILTER = 39
118
+ CONCATMAP = 40
119
+ ORDERBY = 41
120
+ DISTINCT = 42
121
+ COUNT = 43
122
+ IS_EMPTY = 86
123
+ UNION = 44
124
+ NTH = 45
125
+ INNER_JOIN = 48
126
+ OUTER_JOIN = 49
127
+ EQ_JOIN = 50
128
+ ZIP = 72
129
+ INSERT_AT = 82
130
+ DELETE_AT = 83
131
+ CHANGE_AT = 84
132
+ SPLICE_AT = 85
133
+ COERCE_TO = 51
134
+ TYPEOF = 52
135
+ UPDATE = 53
136
+ DELETE = 54
137
+ REPLACE = 55
138
+ INSERT = 56
139
+ DB_CREATE = 57
140
+ DB_DROP = 58
141
+ DB_LIST = 59
142
+ TABLE_CREATE = 60
143
+ TABLE_DROP = 61
144
+ TABLE_LIST = 62
145
+ SYNC = 138
146
+ INDEX_CREATE = 75
147
+ INDEX_DROP = 76
148
+ INDEX_LIST = 77
149
+ INDEX_STATUS = 139
150
+ INDEX_WAIT = 140
151
+ FUNCALL = 64
152
+ BRANCH = 65
153
+ ANY = 66
154
+ ALL = 67
155
+ FOREACH = 68
156
+ FUNC = 69
157
+ ASC = 73
158
+ DESC = 74
159
+ INFO = 79
160
+ MATCH = 97
161
+ UPCASE = 141
162
+ DOWNCASE = 142
163
+ SAMPLE = 81
164
+ DEFAULT = 92
165
+ JSON = 98
166
+ ISO8601 = 99
167
+ TO_ISO8601 = 100
168
+ EPOCH_TIME = 101
169
+ TO_EPOCH_TIME = 102
170
+ NOW = 103
171
+ IN_TIMEZONE = 104
172
+ DURING = 105
173
+ DATE = 106
174
+ TIME_OF_DAY = 126
175
+ TIMEZONE = 127
176
+ YEAR = 128
177
+ MONTH = 129
178
+ DAY = 130
179
+ DAY_OF_WEEK = 131
180
+ DAY_OF_YEAR = 132
181
+ HOURS = 133
182
+ MINUTES = 134
183
+ SECONDS = 135
184
+ TIME = 136
185
+ MONDAY = 107
186
+ TUESDAY = 108
187
+ WEDNESDAY = 109
188
+ THURSDAY = 110
189
+ FRIDAY = 111
190
+ SATURDAY = 112
191
+ SUNDAY = 113
192
+ JANUARY = 114
193
+ FEBRUARY = 115
194
+ MARCH = 116
195
+ APRIL = 117
196
+ MAY = 118
197
+ JUNE = 119
198
+ JULY = 120
199
+ AUGUST = 121
200
+ SEPTEMBER = 122
201
+ OCTOBER = 123
202
+ NOVEMBER = 124
203
+ DECEMBER = 125
204
+ LITERAL = 137
205
+ GROUP = 144
206
+ SUM = 145
207
+ AVG = 146
208
+ MIN = 147
209
+ MAX = 148
210
+ SPLIT = 149
211
+ UNGROUP = 150
212
+ RANDOM = 151
213
+ CHANGES = 152
214
+ ARGS = 154
215
+ end
216
+
217
+ module AssocPair
218
+ end
219
+ end
90
220
  end
91
-
92
- class Response < ::ProtocolBuffers::Message
93
- # forward declarations
94
-
95
- # enums
96
- module ResponseType
97
- include ::ProtocolBuffers::Enum
98
-
99
- set_fully_qualified_name "Response.ResponseType"
100
-
101
- SUCCESS_ATOM = 1
102
- SUCCESS_SEQUENCE = 2
103
- SUCCESS_PARTIAL = 3
104
- WAIT_COMPLETE = 4
105
- CLIENT_ERROR = 16
106
- COMPILE_ERROR = 17
107
- RUNTIME_ERROR = 18
108
- end
109
-
110
- set_fully_qualified_name "Response"
111
-
112
- optional ::Response::ResponseType, :type, 1
113
- optional :int64, :token, 2
114
- repeated ::Datum, :response, 3
115
- optional ::Backtrace, :backtrace, 4
116
- optional ::Datum, :profile, 5
117
- end
118
-
119
- class Datum < ::ProtocolBuffers::Message
120
- # forward declarations
121
- class AssocPair < ::ProtocolBuffers::Message; end
122
-
123
- # enums
124
- module DatumType
125
- include ::ProtocolBuffers::Enum
126
-
127
- set_fully_qualified_name "Datum.DatumType"
128
-
129
- R_NULL = 1
130
- R_BOOL = 2
131
- R_NUM = 3
132
- R_STR = 4
133
- R_ARRAY = 5
134
- R_OBJECT = 6
135
- R_JSON = 7
136
- end
137
-
138
- set_fully_qualified_name "Datum"
139
-
140
- # nested messages
141
- class AssocPair < ::ProtocolBuffers::Message
142
- set_fully_qualified_name "Datum.AssocPair"
143
-
144
- optional :string, :key, 1
145
- optional ::Datum, :val, 2
146
- end
147
-
148
- optional ::Datum::DatumType, :type, 1
149
- optional :bool, :r_bool, 2
150
- optional :double, :r_num, 3
151
- optional :string, :r_str, 4
152
- repeated ::Datum, :r_array, 5
153
- repeated ::Datum::AssocPair, :r_object, 6
154
- end
155
-
156
- class Term < ::ProtocolBuffers::Message
157
- # forward declarations
158
- class AssocPair < ::ProtocolBuffers::Message; end
159
-
160
- # enums
161
- module TermType
162
- include ::ProtocolBuffers::Enum
163
-
164
- set_fully_qualified_name "Term.TermType"
165
-
166
- DATUM = 1
167
- MAKE_ARRAY = 2
168
- MAKE_OBJ = 3
169
- VAR = 10
170
- JAVASCRIPT = 11
171
- ERROR = 12
172
- IMPLICIT_VAR = 13
173
- DB = 14
174
- TABLE = 15
175
- GET = 16
176
- GET_ALL = 78
177
- EQ = 17
178
- NE = 18
179
- LT = 19
180
- LE = 20
181
- GT = 21
182
- GE = 22
183
- NOT = 23
184
- ADD = 24
185
- SUB = 25
186
- MUL = 26
187
- DIV = 27
188
- MOD = 28
189
- APPEND = 29
190
- PREPEND = 80
191
- DIFFERENCE = 95
192
- SET_INSERT = 88
193
- SET_INTERSECTION = 89
194
- SET_UNION = 90
195
- SET_DIFFERENCE = 91
196
- SLICE = 30
197
- SKIP = 70
198
- LIMIT = 71
199
- INDEXES_OF = 87
200
- CONTAINS = 93
201
- GET_FIELD = 31
202
- KEYS = 94
203
- OBJECT = 143
204
- HAS_FIELDS = 32
205
- WITH_FIELDS = 96
206
- PLUCK = 33
207
- WITHOUT = 34
208
- MERGE = 35
209
- BETWEEN = 36
210
- REDUCE = 37
211
- MAP = 38
212
- FILTER = 39
213
- CONCATMAP = 40
214
- ORDERBY = 41
215
- DISTINCT = 42
216
- COUNT = 43
217
- IS_EMPTY = 86
218
- UNION = 44
219
- NTH = 45
220
- INNER_JOIN = 48
221
- OUTER_JOIN = 49
222
- EQ_JOIN = 50
223
- ZIP = 72
224
- INSERT_AT = 82
225
- DELETE_AT = 83
226
- CHANGE_AT = 84
227
- SPLICE_AT = 85
228
- COERCE_TO = 51
229
- TYPEOF = 52
230
- UPDATE = 53
231
- DELETE = 54
232
- REPLACE = 55
233
- INSERT = 56
234
- DB_CREATE = 57
235
- DB_DROP = 58
236
- DB_LIST = 59
237
- TABLE_CREATE = 60
238
- TABLE_DROP = 61
239
- TABLE_LIST = 62
240
- SYNC = 138
241
- INDEX_CREATE = 75
242
- INDEX_DROP = 76
243
- INDEX_LIST = 77
244
- INDEX_STATUS = 139
245
- INDEX_WAIT = 140
246
- FUNCALL = 64
247
- BRANCH = 65
248
- ANY = 66
249
- ALL = 67
250
- FOREACH = 68
251
- FUNC = 69
252
- ASC = 73
253
- DESC = 74
254
- INFO = 79
255
- MATCH = 97
256
- UPCASE = 141
257
- DOWNCASE = 142
258
- SAMPLE = 81
259
- DEFAULT = 92
260
- JSON = 98
261
- ISO8601 = 99
262
- TO_ISO8601 = 100
263
- EPOCH_TIME = 101
264
- TO_EPOCH_TIME = 102
265
- NOW = 103
266
- IN_TIMEZONE = 104
267
- DURING = 105
268
- DATE = 106
269
- TIME_OF_DAY = 126
270
- TIMEZONE = 127
271
- YEAR = 128
272
- MONTH = 129
273
- DAY = 130
274
- DAY_OF_WEEK = 131
275
- DAY_OF_YEAR = 132
276
- HOURS = 133
277
- MINUTES = 134
278
- SECONDS = 135
279
- TIME = 136
280
- MONDAY = 107
281
- TUESDAY = 108
282
- WEDNESDAY = 109
283
- THURSDAY = 110
284
- FRIDAY = 111
285
- SATURDAY = 112
286
- SUNDAY = 113
287
- JANUARY = 114
288
- FEBRUARY = 115
289
- MARCH = 116
290
- APRIL = 117
291
- MAY = 118
292
- JUNE = 119
293
- JULY = 120
294
- AUGUST = 121
295
- SEPTEMBER = 122
296
- OCTOBER = 123
297
- NOVEMBER = 124
298
- DECEMBER = 125
299
- LITERAL = 137
300
- GROUP = 144
301
- SUM = 145
302
- AVG = 146
303
- MIN = 147
304
- MAX = 148
305
- SPLIT = 149
306
- UNGROUP = 150
307
- end
308
-
309
- set_fully_qualified_name "Term"
310
-
311
- # nested messages
312
- class AssocPair < ::ProtocolBuffers::Message
313
- set_fully_qualified_name "Term.AssocPair"
314
-
315
- optional :string, :key, 1
316
- optional ::Term, :val, 2
317
- end
318
-
319
- optional ::Term::TermType, :type, 1
320
- optional ::Datum, :datum, 2
321
- repeated ::Term, :args, 3
322
- repeated ::Term::AssocPair, :optargs, 4
323
- end
324
-