presto-client 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MjgzOWE1ZjExOWQzMWUxZmFiZTgwODcyYzMyZTMyNzcyZDkyYWI4Nw==
5
- data.tar.gz: !binary |-
6
- NmU2YzJlZDBmN2ZmYzAxNzJhMmY4N2I1NGMyNGE5N2U4MzQzYzkxYg==
2
+ SHA1:
3
+ metadata.gz: c6de2a573aa133bee0d1d9401b019c1740152625
4
+ data.tar.gz: f956e6bbf6bdb2692b2da104aaccb67a0fcb01e8
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- N2U2ZTNkOWVjZmEyZWZjOGVhMTA4M2FhYWU2YTBkZGY1ZDE5Yjg0YTU4Njc3
10
- ZWMzOWU2NjQzODViYjhiOGFkZGY0MmY4YjI1ZTk4MmY3ZmE5NmM1ZDQyZjAz
11
- MjY1Mjc2MGVlN2M2ZDE5OWI2YzIxNzQwMGU3OTE0MGQ2M2FhY2M=
12
- data.tar.gz: !binary |-
13
- OTAzNjk1ZDEyNDc0NTljZjNkMWM0ZGJkYzk1N2JmOTRmZDcwZGQ5MTQ2YWQw
14
- MjQ5NDA3MTc0MDZjNjJkMGIxNWNmYWU5ZGFiYTY0NTk4MzkxNTEyMWRmYTdh
15
- OTAxYzJiNTNiNDFkYjQ5MGUxNGVkMDY1ZmRiZjQ4M2RiN2QyMzA=
6
+ metadata.gz: 08efdcb4b4da96bfeeb0f52886c8290645233ff58dde635ff8a82a14ce0b13e57879612ca413ea4a5333b7e174519fafe0720d4204a58a357d23fa22b8750d70
7
+ data.tar.gz: 2fcdfcf3f3ad2f627b6a2577864f61c7d0f2d9c0801d5d5bd2286f95da8a3c3f976f9028b5bf6ea01bedf9f3cc18c1e5bfaac780a14ef08157dca2191a509708
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ end
12
12
 
13
13
  task :default => [:spec, :build]
14
14
 
15
- GEN_MODELS_VERSION = "0.99"
15
+ GEN_MODELS_VERSION = "0.113"
16
16
 
17
17
  task :modelgen do
18
18
  unless Dir.exists?("presto-#{GEN_MODELS_VERSION}")
@@ -77,6 +77,9 @@ module Presto::Client
77
77
  class PlanFragmentId < String
78
78
  end
79
79
 
80
+ class MemoryPoolId < String
81
+ end
82
+
80
83
  class ConnectorSession < Hash
81
84
  def initialize(hash)
82
85
  super()
@@ -167,6 +170,22 @@ module Presto::Client
167
170
  end
168
171
  end
169
172
 
173
+ # A missing JsonCreator in Presto
174
+ class << PageBufferInfo =
175
+ Base.new(:partition, :buffered_pages, :queued_pages, :buffered_bytes, :pages_added)
176
+ def decode(hash)
177
+ obj = allocate
178
+ obj.send(:initialize_struct,
179
+ hash["partition"],
180
+ hash["bufferedPages"],
181
+ hash["queuedPages"],
182
+ hash["bufferedBytes"],
183
+ hash["pagesAdded"],
184
+ )
185
+ obj
186
+ end
187
+ end
188
+
170
189
  ##
171
190
  # Those model classes are automatically generated
172
191
  #
@@ -192,7 +211,7 @@ module Presto::Client
192
211
  end
193
212
 
194
213
  class << BufferInfo =
195
- Base.new(:buffer_id, :finished, :buffered_pages, :pages_sent)
214
+ Base.new(:buffer_id, :finished, :buffered_pages, :pages_sent, :page_buffer_info)
196
215
  def decode(hash)
197
216
  obj = allocate
198
217
  obj.send(:initialize_struct,
@@ -200,44 +219,70 @@ module Presto::Client
200
219
  hash["finished"],
201
220
  hash["bufferedPages"],
202
221
  hash["pagesSent"],
222
+ hash["pageBufferInfo"] && PageBufferInfo.decode(hash["pageBufferInfo"]),
203
223
  )
204
224
  obj
205
225
  end
206
226
  end
207
227
 
208
- class << ClientTypeSignature =
209
- Base.new(:raw_type, :type_arguments, :literal_arguments)
228
+ class << ClientColumn =
229
+ Base.new(:name, :type, :type_signature)
210
230
  def decode(hash)
211
231
  obj = allocate
212
232
  obj.send(:initialize_struct,
213
- hash["rawType"],
214
- hash["typeArguments"] && hash["typeArguments"].map {|h| ClientTypeSignature.decode(h) },
215
- hash["literalArguments"],
233
+ hash["name"],
234
+ hash["type"],
235
+ hash["typeSignature"] && ClientTypeSignature.decode(hash["typeSignature"]),
216
236
  )
217
237
  obj
218
238
  end
219
239
  end
220
240
 
221
- class << Column =
222
- Base.new(:name, :type, :type_signature)
241
+ class << ClientStageStats =
242
+ Base.new(:stage_id, :state, :done, :nodes, :total_splits, :queued_splits, :running_splits, :completed_splits, :user_time_millis, :cpu_time_millis, :wall_time_millis, :processed_rows, :processed_bytes, :sub_stages)
223
243
  def decode(hash)
224
244
  obj = allocate
225
245
  obj.send(:initialize_struct,
226
- hash["name"],
227
- hash["type"],
228
- hash["typeSignature"] && ClientTypeSignature.decode(hash["typeSignature"]),
246
+ hash["stageId"],
247
+ hash["state"],
248
+ hash["done"],
249
+ hash["nodes"],
250
+ hash["totalSplits"],
251
+ hash["queuedSplits"],
252
+ hash["runningSplits"],
253
+ hash["completedSplits"],
254
+ hash["userTimeMillis"],
255
+ hash["cpuTimeMillis"],
256
+ hash["wallTimeMillis"],
257
+ hash["processedRows"],
258
+ hash["processedBytes"],
259
+ hash["subStages"] && hash["subStages"].map {|h| ClientStageStats.decode(h) },
229
260
  )
230
261
  obj
231
262
  end
232
263
  end
233
264
 
234
- class << ColumnHandle =
235
- Base.new(:connector_id, :connector_handle)
265
+ class << ClientTypeSignature =
266
+ Base.new(:raw_type, :type_arguments, :literal_arguments)
236
267
  def decode(hash)
237
268
  obj = allocate
238
269
  obj.send(:initialize_struct,
239
- hash["connectorId"],
240
- hash["connectorHandle"],
270
+ hash["rawType"],
271
+ hash["typeArguments"] && hash["typeArguments"].map {|h| ClientTypeSignature.decode(h) },
272
+ hash["literalArguments"],
273
+ )
274
+ obj
275
+ end
276
+ end
277
+
278
+ class << Column =
279
+ Base.new(:name, :type, :domain)
280
+ def decode(hash)
281
+ obj = allocate
282
+ obj.send(:initialize_struct,
283
+ hash["name"],
284
+ hash["type"],
285
+ hash["domain"] && SimpleDomain.decode(hash["domain"]),
241
286
  )
242
287
  obj
243
288
  end
@@ -258,7 +303,7 @@ module Presto::Client
258
303
  end
259
304
 
260
305
  class << DriverStats =
261
- Base.new(:create_time, :start_time, :end_time, :queued_time, :elapsed_time, :memory_reservation, :total_scheduled_time, :total_cpu_time, :total_user_time, :total_blocked_time, :raw_input_data_size, :raw_input_positions, :raw_input_read_time, :processed_input_data_size, :processed_input_positions, :output_data_size, :output_positions, :operator_stats)
306
+ Base.new(:create_time, :start_time, :end_time, :queued_time, :elapsed_time, :memory_reservation, :total_scheduled_time, :total_cpu_time, :total_user_time, :total_blocked_time, :fully_blocked, :blocked_reasons, :raw_input_data_size, :raw_input_positions, :raw_input_read_time, :processed_input_data_size, :processed_input_positions, :output_data_size, :output_positions, :operator_stats)
262
307
  def decode(hash)
263
308
  obj = allocate
264
309
  obj.send(:initialize_struct,
@@ -272,6 +317,8 @@ module Presto::Client
272
317
  hash["totalCpuTime"],
273
318
  hash["totalUserTime"],
274
319
  hash["totalBlockedTime"],
320
+ hash["fullyBlocked"],
321
+ hash["blockedReasons"] && hash["blockedReasons"].map {|h| h.downcase.to_sym },
275
322
  hash["rawInputDataSize"],
276
323
  hash["rawInputPositions"],
277
324
  hash["rawInputReadTime"],
@@ -411,7 +458,8 @@ module Presto::Client
411
458
  hash["tableHandle"] && TableHandle.decode(hash["tableHandle"]),
412
459
  hash["lookupSymbols"],
413
460
  hash["outputSymbols"],
414
- hash["assignments"] && Hash[hash["assignments"].to_a.map! {|k,v| [k, ColumnHandle.decode(v)] }],
461
+ hash["assignments"],
462
+ hash["effectiveTupleDomain"],
415
463
  )
416
464
  obj
417
465
  end
@@ -489,7 +537,7 @@ module Presto::Client
489
537
  end
490
538
 
491
539
  class << OperatorStats =
492
- Base.new(:operator_id, :operator_type, :add_input_calls, :add_input_wall, :add_input_cpu, :add_input_user, :input_data_size, :input_positions, :get_output_calls, :get_output_wall, :get_output_cpu, :get_output_user, :output_data_size, :output_positions, :blocked_wall, :finish_calls, :finish_wall, :finish_cpu, :finish_user, :memory_reservation, :info)
540
+ Base.new(:operator_id, :operator_type, :add_input_calls, :add_input_wall, :add_input_cpu, :add_input_user, :input_data_size, :input_positions, :get_output_calls, :get_output_wall, :get_output_cpu, :get_output_user, :output_data_size, :output_positions, :blocked_wall, :finish_calls, :finish_wall, :finish_cpu, :finish_user, :memory_reservation, :blocked_reason, :info)
493
541
  def decode(hash)
494
542
  obj = allocate
495
543
  obj.send(:initialize_struct,
@@ -513,6 +561,7 @@ module Presto::Client
513
561
  hash["finishCpu"],
514
562
  hash["finishUser"],
515
563
  hash["memoryReservation"],
564
+ hash["blockedReason"] && BlockedReason.decode(hash["blockedReason"]),
516
565
  hash["info"],
517
566
  )
518
567
  obj
@@ -546,7 +595,7 @@ module Presto::Client
546
595
  end
547
596
 
548
597
  class << PipelineStats =
549
- Base.new(:input_pipeline, :output_pipeline, :total_drivers, :queued_drivers, :queued_partitioned_drivers, :running_drivers, :running_partitioned_drivers, :completed_drivers, :memory_reservation, :queued_time, :elapsed_time, :total_scheduled_time, :total_cpu_time, :total_user_time, :total_blocked_time, :raw_input_data_size, :raw_input_positions, :processed_input_data_size, :processed_input_positions, :output_data_size, :output_positions, :operator_summaries, :drivers)
598
+ Base.new(:input_pipeline, :output_pipeline, :total_drivers, :queued_drivers, :queued_partitioned_drivers, :running_drivers, :running_partitioned_drivers, :completed_drivers, :memory_reservation, :queued_time, :elapsed_time, :total_scheduled_time, :total_cpu_time, :total_user_time, :total_blocked_time, :fully_blocked, :blocked_reasons, :raw_input_data_size, :raw_input_positions, :processed_input_data_size, :processed_input_positions, :output_data_size, :output_positions, :operator_summaries, :drivers)
550
599
  def decode(hash)
551
600
  obj = allocate
552
601
  obj.send(:initialize_struct,
@@ -565,6 +614,8 @@ module Presto::Client
565
614
  hash["totalCpuTime"],
566
615
  hash["totalUserTime"],
567
616
  hash["totalBlockedTime"],
617
+ hash["fullyBlocked"],
618
+ hash["blockedReasons"] && hash["blockedReasons"].map {|h| h.downcase.to_sym },
568
619
  hash["rawInputDataSize"],
569
620
  hash["rawInputPositions"],
570
621
  hash["processedInputDataSize"],
@@ -579,7 +630,7 @@ module Presto::Client
579
630
  end
580
631
 
581
632
  class << PlanFragment =
582
- Base.new(:id, :root, :symbols, :output_layout, :distribution, :partitioned_source, :output_partitioning, :partition_by, :hash)
633
+ Base.new(:id, :root, :symbols, :output_layout, :distribution, :partitioned_source, :output_partitioning, :partition_by, :null_partition_policy, :hash)
583
634
  def decode(hash)
584
635
  obj = allocate
585
636
  obj.send(:initialize_struct,
@@ -591,6 +642,7 @@ module Presto::Client
591
642
  hash["partitionedSource"] && PlanNodeId.new(hash["partitionedSource"]),
592
643
  hash["outputPartitioning"] && hash["outputPartitioning"].downcase.to_sym,
593
644
  hash["partitionBy"],
645
+ hash["nullPartitionPolicy"] && NullPartitioning.decode(hash["nullPartitionPolicy"]),
594
646
  hash["hash"],
595
647
  )
596
648
  obj
@@ -611,13 +663,15 @@ module Presto::Client
611
663
  end
612
664
 
613
665
  class << QueryError =
614
- Base.new(:message, :sql_state, :error_code, :error_location, :failure_info)
666
+ Base.new(:message, :sql_state, :error_code, :error_name, :error_type, :error_location, :failure_info)
615
667
  def decode(hash)
616
668
  obj = allocate
617
669
  obj.send(:initialize_struct,
618
670
  hash["message"],
619
671
  hash["sqlState"],
620
672
  hash["errorCode"],
673
+ hash["errorName"],
674
+ hash["errorType"],
621
675
  hash["errorLocation"] && ErrorLocation.decode(hash["errorLocation"]),
622
676
  hash["failureInfo"] && FailureInfo.decode(hash["failureInfo"]),
623
677
  )
@@ -626,13 +680,14 @@ module Presto::Client
626
680
  end
627
681
 
628
682
  class << QueryInfo =
629
- Base.new(:query_id, :session, :state, :scheduled, :self, :field_names, :query, :query_stats, :set_session_properties, :reset_session_properties, :update_type, :output_stage, :failure_info, :error_code, :inputs)
683
+ Base.new(:query_id, :session, :state, :memory_pool, :scheduled, :self, :field_names, :query, :query_stats, :set_session_properties, :reset_session_properties, :update_type, :output_stage, :failure_info, :error_code, :inputs)
630
684
  def decode(hash)
631
685
  obj = allocate
632
686
  obj.send(:initialize_struct,
633
687
  hash["queryId"] && QueryId.new(hash["queryId"]),
634
- hash["session"] && Session.decode(hash["session"]),
688
+ hash["session"] && SessionRepresentation.decode(hash["session"]),
635
689
  hash["state"] && hash["state"].downcase.to_sym,
690
+ hash["memoryPool"] && MemoryPoolId.new(hash["memoryPool"]),
636
691
  hash["scheduled"],
637
692
  hash["self"],
638
693
  hash["fieldNames"],
@@ -659,7 +714,7 @@ module Presto::Client
659
714
  hash["infoUri"],
660
715
  hash["partialCancelUri"],
661
716
  hash["nextUri"],
662
- hash["columns"] && hash["columns"].map {|h| Column.decode(h) },
717
+ hash["columns"] && hash["columns"].map {|h| ClientColumn.decode(h) },
663
718
  hash["data"],
664
719
  hash["stats"] && StatementStats.decode(hash["stats"]),
665
720
  hash["error"] && QueryError.decode(hash["error"]),
@@ -671,7 +726,7 @@ module Presto::Client
671
726
  end
672
727
 
673
728
  class << QueryStats =
674
- Base.new(:create_time, :execution_start_time, :last_heartbeat, :end_time, :elapsed_time, :queued_time, :analysis_time, :distributed_planning_time, :total_planning_time, :total_tasks, :running_tasks, :completed_tasks, :total_drivers, :queued_drivers, :running_drivers, :completed_drivers, :total_memory_reservation, :total_scheduled_time, :total_cpu_time, :total_user_time, :total_blocked_time, :raw_input_data_size, :raw_input_positions, :processed_input_data_size, :processed_input_positions, :output_data_size, :output_positions)
729
+ Base.new(:create_time, :execution_start_time, :last_heartbeat, :end_time, :elapsed_time, :queued_time, :analysis_time, :distributed_planning_time, :total_planning_time, :total_tasks, :running_tasks, :completed_tasks, :total_drivers, :queued_drivers, :running_drivers, :completed_drivers, :total_memory_reservation, :peak_memory_reservation, :total_scheduled_time, :total_cpu_time, :total_user_time, :total_blocked_time, :fully_blocked, :blocked_reasons, :raw_input_data_size, :raw_input_positions, :processed_input_data_size, :processed_input_positions, :output_data_size, :output_positions)
675
730
  def decode(hash)
676
731
  obj = allocate
677
732
  obj.send(:initialize_struct,
@@ -692,10 +747,13 @@ module Presto::Client
692
747
  hash["runningDrivers"],
693
748
  hash["completedDrivers"],
694
749
  hash["totalMemoryReservation"],
750
+ hash["peakMemoryReservation"],
695
751
  hash["totalScheduledTime"],
696
752
  hash["totalCpuTime"],
697
753
  hash["totalUserTime"],
698
754
  hash["totalBlockedTime"],
755
+ hash["fullyBlocked"],
756
+ hash["blockedReasons"] && hash["blockedReasons"].map {|h| h.downcase.to_sym },
699
757
  hash["rawInputDataSize"],
700
758
  hash["rawInputPositions"],
701
759
  hash["processedInputDataSize"],
@@ -754,7 +812,7 @@ module Presto::Client
754
812
  end
755
813
  end
756
814
 
757
- class << Session =
815
+ class << SessionRepresentation =
758
816
  Base.new(:user, :source, :catalog, :schema, :time_zone_key, :locale, :remote_user_address, :user_agent, :start_time, :system_properties, :catalog_properties)
759
817
  def decode(hash)
760
818
  obj = allocate
@@ -776,13 +834,17 @@ module Presto::Client
776
834
  end
777
835
 
778
836
  class << SharedBufferInfo =
779
- Base.new(:state, :master_sequence_id, :pages_added, :buffers)
837
+ Base.new(:state, :can_add_buffers, :can_add_pages, :total_buffered_bytes, :total_buffered_pages, :total_queued_pages, :total_pages_sent, :buffers)
780
838
  def decode(hash)
781
839
  obj = allocate
782
840
  obj.send(:initialize_struct,
783
841
  hash["state"] && hash["state"].downcase.to_sym,
784
- hash["masterSequenceId"],
785
- hash["pagesAdded"],
842
+ hash["canAddBuffers"],
843
+ hash["canAddPages"],
844
+ hash["totalBufferedBytes"],
845
+ hash["totalBufferedPages"],
846
+ hash["totalQueuedPages"],
847
+ hash["totalPagesSent"],
786
848
  hash["buffers"] && hash["buffers"].map {|h| BufferInfo.decode(h) },
787
849
  )
788
850
  obj
@@ -805,6 +867,42 @@ module Presto::Client
805
867
  end
806
868
  end
807
869
 
870
+ class << SimpleDomain =
871
+ Base.new(:null_allowed, :ranges)
872
+ def decode(hash)
873
+ obj = allocate
874
+ obj.send(:initialize_struct,
875
+ hash["nullAllowed"],
876
+ hash["ranges"] && hash["ranges"].map {|h| SimpleRange.decode(h) },
877
+ )
878
+ obj
879
+ end
880
+ end
881
+
882
+ class << SimpleMarker =
883
+ Base.new(:inclusive, :value)
884
+ def decode(hash)
885
+ obj = allocate
886
+ obj.send(:initialize_struct,
887
+ hash["inclusive"],
888
+ hash["value"],
889
+ )
890
+ obj
891
+ end
892
+ end
893
+
894
+ class << SimpleRange =
895
+ Base.new(:low, :high)
896
+ def decode(hash)
897
+ obj = allocate
898
+ obj.send(:initialize_struct,
899
+ hash["low"] && SimpleMarker.decode(hash["low"]),
900
+ hash["high"] && SimpleMarker.decode(hash["high"]),
901
+ )
902
+ obj
903
+ end
904
+ end
905
+
808
906
  class << SortNode =
809
907
  Base.new(:id, :source, :order_by, :orderings)
810
908
  def decode(hash)
@@ -820,7 +918,7 @@ module Presto::Client
820
918
  end
821
919
 
822
920
  class << StageInfo =
823
- Base.new(:stage_id, :state, :self, :plan, :types, :stage_stats, :tasks, :sub_stages, :failures)
921
+ Base.new(:stage_id, :state, :self, :plan, :types, :stage_stats, :tasks, :sub_stages, :failure_cause)
824
922
  def decode(hash)
825
923
  obj = allocate
826
924
  obj.send(:initialize_struct,
@@ -832,31 +930,41 @@ module Presto::Client
832
930
  hash["stageStats"] && StageStats.decode(hash["stageStats"]),
833
931
  hash["tasks"] && hash["tasks"].map {|h| TaskInfo.decode(h) },
834
932
  hash["subStages"] && hash["subStages"].map {|h| StageInfo.decode(h) },
835
- hash["failures"] && hash["failures"].map {|h| ExecutionFailureInfo.decode(h) },
933
+ hash["failureCause"] && ExecutionFailureInfo.decode(hash["failureCause"]),
836
934
  )
837
935
  obj
838
936
  end
839
937
  end
840
938
 
841
939
  class << StageStats =
842
- Base.new(:stage_id, :state, :done, :nodes, :total_splits, :queued_splits, :running_splits, :completed_splits, :user_time_millis, :cpu_time_millis, :wall_time_millis, :processed_rows, :processed_bytes, :sub_stages)
940
+ Base.new(:scheduling_complete, :get_split_distribution, :schedule_task_distribution, :add_split_distribution, :total_tasks, :running_tasks, :completed_tasks, :total_drivers, :queued_drivers, :running_drivers, :completed_drivers, :total_memory_reservation, :total_scheduled_time, :total_cpu_time, :total_user_time, :total_blocked_time, :fully_blocked, :blocked_reasons, :raw_input_data_size, :raw_input_positions, :processed_input_data_size, :processed_input_positions, :output_data_size, :output_positions)
843
941
  def decode(hash)
844
942
  obj = allocate
845
943
  obj.send(:initialize_struct,
846
- hash["stageId"],
847
- hash["state"],
848
- hash["done"],
849
- hash["nodes"],
850
- hash["totalSplits"],
851
- hash["queuedSplits"],
852
- hash["runningSplits"],
853
- hash["completedSplits"],
854
- hash["userTimeMillis"],
855
- hash["cpuTimeMillis"],
856
- hash["wallTimeMillis"],
857
- hash["processedRows"],
858
- hash["processedBytes"],
859
- hash["subStages"] && hash["subStages"].map {|h| StageStats.decode(h) },
944
+ hash["schedulingComplete"],
945
+ hash["getSplitDistribution"] && DistributionSnapshot.decode(hash["getSplitDistribution"]),
946
+ hash["scheduleTaskDistribution"] && DistributionSnapshot.decode(hash["scheduleTaskDistribution"]),
947
+ hash["addSplitDistribution"] && DistributionSnapshot.decode(hash["addSplitDistribution"]),
948
+ hash["totalTasks"],
949
+ hash["runningTasks"],
950
+ hash["completedTasks"],
951
+ hash["totalDrivers"],
952
+ hash["queuedDrivers"],
953
+ hash["runningDrivers"],
954
+ hash["completedDrivers"],
955
+ hash["totalMemoryReservation"],
956
+ hash["totalScheduledTime"],
957
+ hash["totalCpuTime"],
958
+ hash["totalUserTime"],
959
+ hash["totalBlockedTime"],
960
+ hash["fullyBlocked"],
961
+ hash["blockedReasons"] && hash["blockedReasons"].map {|h| h.downcase.to_sym },
962
+ hash["rawInputDataSize"],
963
+ hash["rawInputPositions"],
964
+ hash["processedInputDataSize"],
965
+ hash["processedInputPositions"],
966
+ hash["outputDataSize"],
967
+ hash["outputPositions"],
860
968
  )
861
969
  obj
862
970
  end
@@ -879,7 +987,7 @@ module Presto::Client
879
987
  hash["wallTimeMillis"],
880
988
  hash["processedRows"],
881
989
  hash["processedBytes"],
882
- hash["rootStage"] && StageStats.decode(hash["rootStage"]),
990
+ hash["rootStage"] && ClientStageStats.decode(hash["rootStage"]),
883
991
  )
884
992
  obj
885
993
  end
@@ -911,15 +1019,29 @@ module Presto::Client
911
1019
  end
912
1020
  end
913
1021
 
1022
+ class << TableLayoutHandle =
1023
+ Base.new(:connector_id, :connector_handle)
1024
+ def decode(hash)
1025
+ obj = allocate
1026
+ obj.send(:initialize_struct,
1027
+ hash["connectorId"],
1028
+ hash["connectorHandle"],
1029
+ )
1030
+ obj
1031
+ end
1032
+ end
1033
+
914
1034
  class << TableScanNode =
915
- Base.new(:id, :table, :output_symbols, :assignments, :original_constraint)
1035
+ Base.new(:id, :table, :output_symbols, :assignments, :layout, :current_constraint, :original_constraint)
916
1036
  def decode(hash)
917
1037
  obj = allocate
918
1038
  obj.send(:initialize_struct,
919
1039
  hash["id"] && PlanNodeId.new(hash["id"]),
920
1040
  hash["table"] && TableHandle.decode(hash["table"]),
921
1041
  hash["outputSymbols"],
922
- hash["assignments"] && Hash[hash["assignments"].to_a.map! {|k,v| [k, ColumnHandle.decode(v)] }],
1042
+ hash["assignments"],
1043
+ hash["layout"] && TableLayoutHandle.decode(hash["layout"]),
1044
+ hash["currentConstraint"],
923
1045
  hash["originalConstraint"],
924
1046
  )
925
1047
  obj
@@ -964,7 +1086,7 @@ module Presto::Client
964
1086
  end
965
1087
 
966
1088
  class << TaskStats =
967
- Base.new(:create_time, :first_start_time, :last_start_time, :end_time, :elapsed_time, :queued_time, :total_drivers, :queued_drivers, :queued_partitioned_drivers, :running_drivers, :running_partitioned_drivers, :completed_drivers, :memory_reservation, :total_scheduled_time, :total_cpu_time, :total_user_time, :total_blocked_time, :raw_input_data_size, :raw_input_positions, :processed_input_data_size, :processed_input_positions, :output_data_size, :output_positions, :pipelines)
1089
+ Base.new(:create_time, :first_start_time, :last_start_time, :end_time, :elapsed_time, :queued_time, :total_drivers, :queued_drivers, :queued_partitioned_drivers, :running_drivers, :running_partitioned_drivers, :completed_drivers, :memory_reservation, :total_scheduled_time, :total_cpu_time, :total_user_time, :total_blocked_time, :fully_blocked, :blocked_reasons, :raw_input_data_size, :raw_input_positions, :processed_input_data_size, :processed_input_positions, :output_data_size, :output_positions, :pipelines)
968
1090
  def decode(hash)
969
1091
  obj = allocate
970
1092
  obj.send(:initialize_struct,
@@ -985,6 +1107,8 @@ module Presto::Client
985
1107
  hash["totalCpuTime"],
986
1108
  hash["totalUserTime"],
987
1109
  hash["totalBlockedTime"],
1110
+ hash["fullyBlocked"],
1111
+ hash["blockedReasons"] && hash["blockedReasons"].map {|h| h.downcase.to_sym },
988
1112
  hash["rawInputDataSize"],
989
1113
  hash["rawInputPositions"],
990
1114
  hash["processedInputDataSize"],
@@ -1041,7 +1165,7 @@ module Presto::Client
1041
1165
  end
1042
1166
 
1043
1167
  class << WindowNode =
1044
- Base.new(:id, :source, :partition_by, :order_by, :orderings, :frame, :window_functions, :signatures, :hash_symbol)
1168
+ Base.new(:id, :source, :partition_by, :order_by, :orderings, :frame, :window_functions, :signatures, :hash_symbol, :pre_partitioned_inputs, :pre_sorted_order_prefix)
1045
1169
  def decode(hash)
1046
1170
  obj = allocate
1047
1171
  obj.send(:initialize_struct,
@@ -1054,6 +1178,8 @@ module Presto::Client
1054
1178
  hash["windowFunctions"],
1055
1179
  hash["signatures"] && Hash[hash["signatures"].to_a.map! {|k,v| [k, Signature.decode(v)] }],
1056
1180
  hash["hashSymbol"],
1181
+ hash["prePartitionedInputs"],
1182
+ hash["preSortedOrderPrefix"],
1057
1183
  )
1058
1184
  obj
1059
1185
  end
@@ -15,6 +15,6 @@
15
15
  #
16
16
  module Presto
17
17
  module Client
18
- VERSION = "0.4.5"
18
+ VERSION = "0.4.6"
19
19
  end
20
20
  end
data/modelgen/modelgen.rb CHANGED
@@ -12,11 +12,11 @@ erb = ERB.new(File.read(template_path))
12
12
 
13
13
  source_path = source_dir
14
14
 
15
- predefined_simple_classes = %w[QueryId StageId TaskId PlanNodeId PlanFragmentId ConnectorSession]
16
- predefined_models = %w[DistributionSnapshot PlanNode EquiJoinClause WriterTarget]
15
+ predefined_simple_classes = %w[QueryId StageId TaskId PlanNodeId PlanFragmentId MemoryPoolId ConnectorSession]
16
+ predefined_models = %w[DistributionSnapshot PlanNode EquiJoinClause WriterTarget PageBufferInfo]
17
17
 
18
- assume_primitive = %w[Object Type Long Symbol URI Duration DataSize DateTime ConnectorTableHandle ConnectorOutputTableHandle ConnectorIndexHandle ConnectorColumnHandle ConnectorInsertTableHandle Expression FunctionCall TimeZoneKey Locale TypeSignature Frame]
19
- enum_types = %w[QueryState StageState TaskState QueueState PlanDistribution OutputPartitioning Step SortOrder BufferState]
18
+ assume_primitive = %w[Object Type Long Symbol URI Duration DataSize DateTime ColumnHandle ConnectorTableHandle ConnectorOutputTableHandle ConnectorIndexHandle ConnectorColumnHandle ConnectorInsertTableHandle ConnectorTableLayoutHandle Expression FunctionCall TimeZoneKey Locale TypeSignature Frame TupleDomain<ColumnHandle> SerializableNativeValue]
19
+ enum_types = %w[QueryState StageState TaskState QueueState PlanDistribution OutputPartitioning Step SortOrder BufferState NullPartitioning BlockedReason]
20
20
 
21
21
  root_models = %w[QueryResults QueryInfo] + %w[
22
22
  OutputNode
@@ -42,9 +42,25 @@ TableWriterNode
42
42
  TableCommitNode
43
43
  ] + %w[InsertTableHandle OutputTableHandle]
44
44
 
45
+ name_mapping = Hash[*%w[
46
+ StatementStats StageStats ClientStageStats
47
+ ClientStageStats StageStats ClientStageStats
48
+ QueryResults Column ClientColumn
49
+ ].each_slice(3).map { |x, y, z| [[x,y], z] }.flatten(1)]
50
+
51
+ path_mapping = Hash[*%w[
52
+ ClientColumn presto-client/src/main/java/com/facebook/presto/client/Column.java
53
+ ClientStageStats presto-client/src/main/java/com/facebook/presto/client/StageStats.java
54
+ Column presto-main/src/main/java/com/facebook/presto/execution/Column.java
55
+ QueryStats presto-main/src/main/java/com/facebook/presto/execution/QueryStats.java
56
+ StageStats presto-main/src/main/java/com/facebook/presto/execution/StageStats.java
57
+ ].map.with_index { |v,i| i % 2 == 0 ? v : (source_path + "/" + v) }]
58
+
45
59
  analyzer = PrestoModels::ModelAnalyzer.new(
46
60
  source_path,
47
- skip_models: predefined_models + predefined_simple_classes + assume_primitive + enum_types
61
+ skip_models: predefined_models + predefined_simple_classes + assume_primitive + enum_types,
62
+ path_mapping: path_mapping,
63
+ name_mapping: name_mapping
48
64
  )
49
65
  analyzer.analyze(root_models)
50
66
  models = analyzer.models
data/modelgen/models.rb CHANGED
@@ -77,6 +77,9 @@ module Presto::Client
77
77
  class PlanFragmentId < String
78
78
  end
79
79
 
80
+ class MemoryPoolId < String
81
+ end
82
+
80
83
  class ConnectorSession < Hash
81
84
  def initialize(hash)
82
85
  super()
@@ -167,6 +170,22 @@ module Presto::Client
167
170
  end
168
171
  end
169
172
 
173
+ # A missing JsonCreator in Presto
174
+ class << PageBufferInfo =
175
+ Base.new(:partition, :buffered_pages, :queued_pages, :buffered_bytes, :pages_added)
176
+ def decode(hash)
177
+ obj = allocate
178
+ obj.send(:initialize_struct,
179
+ hash["partition"],
180
+ hash["bufferedPages"],
181
+ hash["queuedPages"],
182
+ hash["bufferedBytes"],
183
+ hash["pagesAdded"],
184
+ )
185
+ obj
186
+ end
187
+ end
188
+
170
189
  ##
171
190
  # Those model classes are automatically generated
172
191
  #
@@ -25,6 +25,8 @@ module PrestoModels
25
25
  def initialize(source_path, options={})
26
26
  @source_path = source_path
27
27
  @ignore_types = PRIMITIVE_TYPES + (options[:skip_models] || [])
28
+ @path_mapping = options[:path_mapping] || {}
29
+ @name_mapping = options[:name_mapping] || {}
28
30
  @models = {}
29
31
  @skipped_models = []
30
32
  end
@@ -46,15 +48,15 @@ module PrestoModels
46
48
  PROPERTY_PATTERN = /@JsonProperty\(\"(\w+)\"\)\s+(@Nullable\s+)?([\w\<\>\,\s]+)\s+(\w+)/
47
49
  CREATOR_PATTERN = /@JsonCreator[\w\s]+\((?:\s*#{PROPERTY_PATTERN}\s*,?)+\)/
48
50
 
49
- def analyze_model(model_name)
51
+ def analyze_model(model_name, parent_model = nil)
50
52
  return if @models[model_name] || @ignore_types.include?(model_name)
51
53
 
52
- path = find_class_file(model_name)
54
+ path = find_class_file(model_name, parent_model)
53
55
  java = File.read(path)
54
56
 
55
57
  m = CREATOR_PATTERN.match(java)
56
58
  unless m
57
- raise ModelAnalysisError, "Can't find JsonCreator of a model class #{model_name}"
59
+ raise ModelAnalysisError, "Can't find JsonCreator of a model class #{model_name} of #{parent_model} at #{path}"
58
60
  end
59
61
 
60
62
  fields = m[0].scan(PROPERTY_PATTERN).map do |key,nullable,type,field|
@@ -76,6 +78,8 @@ module PrestoModels
76
78
  else
77
79
  raise ModelAnalysisError, "Unsupported type #{type} in model #{model_name}"
78
80
  end
81
+ base_type = @name_mapping[[model_name, base_type]] || base_type
82
+ map_value_base_type = @name_mapping[[model_name, map_value_base_type]] || map_value_base_type
79
83
  Field.new(key, !!nullable, array, map, type, base_type, map_value_base_type)
80
84
  end
81
85
 
@@ -83,8 +87,8 @@ module PrestoModels
83
87
 
84
88
  # recursive call
85
89
  fields.each do |field|
86
- analyze_model(field.base_type)
87
- analyze_model(field.map_value_base_type) if field.map_value_base_type
90
+ analyze_model(field.base_type, model_name)
91
+ analyze_model(field.map_value_base_type, model_name) if field.map_value_base_type
88
92
  end
89
93
 
90
94
  rescue => e
@@ -92,14 +96,20 @@ module PrestoModels
92
96
  @skipped_models << model_name
93
97
  end
94
98
 
95
- def find_class_file(model_name)
99
+ def find_class_file(model_name, parent_model)
100
+ return @path_mapping[model_name] if @path_mapping.has_key? model_name
101
+
96
102
  @source_files ||= Find.find(@source_path).to_a
97
103
  pattern = /\/#{model_name}.java$/
98
- matched = @source_files.find {|path| path =~ pattern }
99
- unless matched
104
+ matched = @source_files.find_all {|path| path =~ pattern }
105
+ if matched.empty?
100
106
  raise ModelAnalysisError, "Model class #{model_name} is not found"
101
107
  end
102
- return matched
108
+ if matched.size == 1
109
+ return matched.first
110
+ else
111
+ raise ModelAnalysisError, "Model class #{model_name} of #{parent_model} found multiple match #{matched}"
112
+ end
103
113
  end
104
114
  end
105
115
 
metadata CHANGED
@@ -1,89 +1,89 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: presto-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sadayuki Furuhashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-01 00:00:00.000000000 Z
11
+ date: 2015-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.8.8
20
- - - <
20
+ - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: 0.10.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ! '>='
27
+ - - ">="
28
28
  - !ruby/object:Gem::Version
29
29
  version: 0.8.8
30
- - - <
30
+ - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: 0.10.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: multi_json
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ~>
37
+ - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: '1.0'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ~>
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '1.0'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ! '>='
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: 0.9.2
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - ! '>='
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: 0.9.2
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rspec
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - ~>
65
+ - - "~>"
66
66
  - !ruby/object:Gem::Version
67
67
  version: 2.13.0
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ~>
72
+ - - "~>"
73
73
  - !ruby/object:Gem::Version
74
74
  version: 2.13.0
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: webmock
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - ~>
79
+ - - "~>"
80
80
  - !ruby/object:Gem::Version
81
81
  version: 1.16.1
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - ~>
86
+ - - "~>"
87
87
  - !ruby/object:Gem::Version
88
88
  version: 1.16.1
89
89
  description: Presto client library
@@ -93,7 +93,7 @@ executables: []
93
93
  extensions: []
94
94
  extra_rdoc_files: []
95
95
  files:
96
- - .gitignore
96
+ - ".gitignore"
97
97
  - ChangeLog
98
98
  - Gemfile
99
99
  - README.md
@@ -122,21 +122,20 @@ require_paths:
122
122
  - lib
123
123
  required_ruby_version: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - ! '>='
125
+ - - ">="
126
126
  - !ruby/object:Gem::Version
127
127
  version: 1.9.1
128
128
  required_rubygems_version: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - ! '>='
130
+ - - ">="
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0'
133
133
  requirements: []
134
134
  rubyforge_project:
135
- rubygems_version: 2.2.2
135
+ rubygems_version: 2.4.5
136
136
  signing_key:
137
137
  specification_version: 4
138
138
  summary: Presto client library
139
139
  test_files:
140
140
  - spec/spec_helper.rb
141
141
  - spec/statement_client_spec.rb
142
- has_rdoc: false