presto-client 0.4.15 → 0.4.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog +4 -0
- data/Rakefile +1 -1
- data/lib/presto/client/models.rb +254 -73
- data/lib/presto/client/version.rb +1 -1
- data/modelgen/modelgen.rb +7 -3
- data/modelgen/models.rb +25 -8
- data/modelgen/presto_models.rb +5 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c24fbba9d7c847c89172174c795ee15f0a904390
|
4
|
+
data.tar.gz: 79c640e5a3c73c96d2b302954bca4246f2831106
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b53c68da6dac166ffeffa33f4b4b02b0fea9b8febdecd4dfa7233a88ef1ff48434ad18db3255b111bc27c4b3402bf62fca41a9ddfa570e2f33cbaeea706b8b25
|
7
|
+
data.tar.gz: 83e0759cbf3cee85e8c8899307f2c813ecfacd225e7a83c587260bd4d21ff5dbd54af4b641206b2c11d2441763bb98224dff1aa98f8b593894ab86b878a54bb1
|
data/ChangeLog
CHANGED
data/Rakefile
CHANGED
data/lib/presto/client/models.rb
CHANGED
@@ -108,7 +108,11 @@ module Presto::Client
|
|
108
108
|
when "unnest" then UnnestNode
|
109
109
|
when "exchange" then ExchangeNode
|
110
110
|
when "union" then UnionNode
|
111
|
+
when "intersect" then IntersectNode
|
111
112
|
when "scalar" then EnforceSingleRowNode
|
113
|
+
when "groupid" then GroupIdNode
|
114
|
+
when "explainAnalyze" then ExplainAnalyzeNode
|
115
|
+
when "apply" then ApplyNode
|
112
116
|
end
|
113
117
|
if model_class
|
114
118
|
node = model_class.decode(hash)
|
@@ -201,21 +205,34 @@ module Presto::Client
|
|
201
205
|
end
|
202
206
|
end
|
203
207
|
|
208
|
+
# Inner classes
|
209
|
+
class << Specification =
|
210
|
+
Base.new(:partition_by, :order_by, :orderings, :frame, :pages_added)
|
211
|
+
def decode(hash)
|
212
|
+
unless hash.is_a?(Hash)
|
213
|
+
raise TypeError, "Can't convert #{hash.class} to Hash"
|
214
|
+
end
|
215
|
+
obj = allocate
|
216
|
+
obj.send(:initialize_struct,
|
217
|
+
hash["partitionBy"],
|
218
|
+
hash["orderBy"],
|
219
|
+
hash["orderings"],
|
220
|
+
hash["frame"],
|
221
|
+
)
|
222
|
+
obj
|
223
|
+
end
|
224
|
+
end
|
204
225
|
|
205
|
-
|
206
|
-
|
207
|
-
Base.new(:partition, :buffered_pages, :queued_pages, :buffered_bytes, :pages_added)
|
226
|
+
class << ArgumentBinding =
|
227
|
+
Base.new(:column, :constant)
|
208
228
|
def decode(hash)
|
209
229
|
unless hash.is_a?(Hash)
|
210
230
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
211
231
|
end
|
212
232
|
obj = allocate
|
213
233
|
obj.send(:initialize_struct,
|
214
|
-
hash["
|
215
|
-
hash["
|
216
|
-
hash["queuedPages"],
|
217
|
-
hash["bufferedBytes"],
|
218
|
-
hash["pagesAdded"],
|
234
|
+
hash["column"],
|
235
|
+
hash["constant"]
|
219
236
|
)
|
220
237
|
obj
|
221
238
|
end
|
@@ -226,7 +243,7 @@ module Presto::Client
|
|
226
243
|
#
|
227
244
|
|
228
245
|
class << AggregationNode =
|
229
|
-
Base.new(:id, :source, :group_by, :aggregations, :functions, :masks, :step, :sample_weight, :confidence, :hash_symbol)
|
246
|
+
Base.new(:id, :source, :group_by, :aggregations, :functions, :masks, :grouping_sets, :step, :sample_weight, :confidence, :hash_symbol)
|
230
247
|
def decode(hash)
|
231
248
|
unless hash.is_a?(Hash)
|
232
249
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -239,6 +256,7 @@ module Presto::Client
|
|
239
256
|
hash["aggregations"],
|
240
257
|
hash["functions"] && Hash[hash["functions"].to_a.map! {|k,v| [k, Signature.decode(v)] }],
|
241
258
|
hash["masks"],
|
259
|
+
hash["groupingSets"],
|
242
260
|
hash["step"] && hash["step"].downcase.to_sym,
|
243
261
|
hash["sampleWeight"],
|
244
262
|
hash["confidence"],
|
@@ -248,6 +266,23 @@ module Presto::Client
|
|
248
266
|
end
|
249
267
|
end
|
250
268
|
|
269
|
+
class << ApplyNode =
|
270
|
+
Base.new(:id, :input, :subquery, :correlation)
|
271
|
+
def decode(hash)
|
272
|
+
unless hash.is_a?(Hash)
|
273
|
+
raise TypeError, "Can't convert #{hash.class} to Hash"
|
274
|
+
end
|
275
|
+
obj = allocate
|
276
|
+
obj.send(:initialize_struct,
|
277
|
+
hash["id"],
|
278
|
+
hash["input"] && PlanNode.decode(hash["input"]),
|
279
|
+
hash["subquery"] && PlanNode.decode(hash["subquery"]),
|
280
|
+
hash["correlation"],
|
281
|
+
)
|
282
|
+
obj
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
251
286
|
class << BufferInfo =
|
252
287
|
Base.new(:buffer_id, :finished, :buffered_pages, :pages_sent, :page_buffer_info)
|
253
288
|
def decode(hash)
|
@@ -256,7 +291,7 @@ module Presto::Client
|
|
256
291
|
end
|
257
292
|
obj = allocate
|
258
293
|
obj.send(:initialize_struct,
|
259
|
-
hash["bufferId"]
|
294
|
+
hash["bufferId"],
|
260
295
|
hash["finished"],
|
261
296
|
hash["bufferedPages"],
|
262
297
|
hash["pagesSent"],
|
@@ -375,7 +410,7 @@ module Presto::Client
|
|
375
410
|
end
|
376
411
|
|
377
412
|
class << DistinctLimitNode =
|
378
|
-
Base.new(:id, :source, :limit, :hash_symbol)
|
413
|
+
Base.new(:id, :source, :limit, :partial, :hash_symbol)
|
379
414
|
def decode(hash)
|
380
415
|
unless hash.is_a?(Hash)
|
381
416
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -385,6 +420,7 @@ module Presto::Client
|
|
385
420
|
hash["id"],
|
386
421
|
hash["source"] && PlanNode.decode(hash["source"]),
|
387
422
|
hash["limit"],
|
423
|
+
hash["partial"],
|
388
424
|
hash["hashSymbol"],
|
389
425
|
)
|
390
426
|
obj
|
@@ -441,7 +477,7 @@ module Presto::Client
|
|
441
477
|
end
|
442
478
|
|
443
479
|
class << ErrorCode =
|
444
|
-
Base.new(:code, :name)
|
480
|
+
Base.new(:code, :name, :type)
|
445
481
|
def decode(hash)
|
446
482
|
unless hash.is_a?(Hash)
|
447
483
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -450,6 +486,7 @@ module Presto::Client
|
|
450
486
|
obj.send(:initialize_struct,
|
451
487
|
hash["code"],
|
452
488
|
hash["name"],
|
489
|
+
hash["type"] && hash["type"].downcase.to_sym,
|
453
490
|
)
|
454
491
|
obj
|
455
492
|
end
|
@@ -471,7 +508,7 @@ module Presto::Client
|
|
471
508
|
end
|
472
509
|
|
473
510
|
class << ExchangeNode =
|
474
|
-
Base.new(:id, :type, :
|
511
|
+
Base.new(:id, :type, :scope, :partitioning_scheme, :sources, :inputs)
|
475
512
|
def decode(hash)
|
476
513
|
unless hash.is_a?(Hash)
|
477
514
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -480,9 +517,9 @@ module Presto::Client
|
|
480
517
|
obj.send(:initialize_struct,
|
481
518
|
hash["id"],
|
482
519
|
hash["type"],
|
483
|
-
hash["
|
520
|
+
hash["scope"] && hash["scope"].downcase.to_sym,
|
521
|
+
hash["partitioningScheme"] && PartitioningScheme.decode(hash["partitioningScheme"]),
|
484
522
|
hash["sources"] && hash["sources"].map {|h| PlanNode.decode(h) },
|
485
|
-
hash["outputs"],
|
486
523
|
hash["inputs"],
|
487
524
|
)
|
488
525
|
obj
|
@@ -509,6 +546,22 @@ module Presto::Client
|
|
509
546
|
end
|
510
547
|
end
|
511
548
|
|
549
|
+
class << ExplainAnalyzeNode =
|
550
|
+
Base.new(:id, :source, :output_symbol)
|
551
|
+
def decode(hash)
|
552
|
+
unless hash.is_a?(Hash)
|
553
|
+
raise TypeError, "Can't convert #{hash.class} to Hash"
|
554
|
+
end
|
555
|
+
obj = allocate
|
556
|
+
obj.send(:initialize_struct,
|
557
|
+
hash["id"],
|
558
|
+
hash["source"] && PlanNode.decode(hash["source"]),
|
559
|
+
hash["outputSymbol"],
|
560
|
+
)
|
561
|
+
obj
|
562
|
+
end
|
563
|
+
end
|
564
|
+
|
512
565
|
class << FailureInfo =
|
513
566
|
Base.new(:type, :message, :cause, :suppressed, :stack, :error_location)
|
514
567
|
def decode(hash)
|
@@ -544,6 +597,24 @@ module Presto::Client
|
|
544
597
|
end
|
545
598
|
end
|
546
599
|
|
600
|
+
class << GroupIdNode =
|
601
|
+
Base.new(:id, :source, :grouping_sets, :identity_mappings, :group_id_symbol)
|
602
|
+
def decode(hash)
|
603
|
+
unless hash.is_a?(Hash)
|
604
|
+
raise TypeError, "Can't convert #{hash.class} to Hash"
|
605
|
+
end
|
606
|
+
obj = allocate
|
607
|
+
obj.send(:initialize_struct,
|
608
|
+
hash["id"],
|
609
|
+
hash["source"] && PlanNode.decode(hash["source"]),
|
610
|
+
hash["groupingSets"],
|
611
|
+
hash["identityMappings"],
|
612
|
+
hash["groupIdSymbol"],
|
613
|
+
)
|
614
|
+
obj
|
615
|
+
end
|
616
|
+
end
|
617
|
+
|
547
618
|
class << IndexHandle =
|
548
619
|
Base.new(:connector_id, :transaction_handle, :connector_handle)
|
549
620
|
def decode(hash)
|
@@ -633,8 +704,25 @@ module Presto::Client
|
|
633
704
|
end
|
634
705
|
end
|
635
706
|
|
707
|
+
class << IntersectNode =
|
708
|
+
Base.new(:id, :sources, :output_to_inputs, :outputs)
|
709
|
+
def decode(hash)
|
710
|
+
unless hash.is_a?(Hash)
|
711
|
+
raise TypeError, "Can't convert #{hash.class} to Hash"
|
712
|
+
end
|
713
|
+
obj = allocate
|
714
|
+
obj.send(:initialize_struct,
|
715
|
+
hash["id"],
|
716
|
+
hash["sources"] && hash["sources"].map {|h| PlanNode.decode(h) },
|
717
|
+
hash["outputToInputs"],
|
718
|
+
hash["outputs"],
|
719
|
+
)
|
720
|
+
obj
|
721
|
+
end
|
722
|
+
end
|
723
|
+
|
636
724
|
class << JoinNode =
|
637
|
-
Base.new(:id, :type, :left, :right, :criteria, :left_hash_symbol, :right_hash_symbol)
|
725
|
+
Base.new(:id, :type, :left, :right, :criteria, :filter, :left_hash_symbol, :right_hash_symbol)
|
638
726
|
def decode(hash)
|
639
727
|
unless hash.is_a?(Hash)
|
640
728
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -646,6 +734,7 @@ module Presto::Client
|
|
646
734
|
hash["left"] && PlanNode.decode(hash["left"]),
|
647
735
|
hash["right"] && PlanNode.decode(hash["right"]),
|
648
736
|
hash["criteria"] && hash["criteria"].map {|h| EquiJoinClause.decode(h) },
|
737
|
+
hash["filter"],
|
649
738
|
hash["leftHashSymbol"],
|
650
739
|
hash["rightHashSymbol"],
|
651
740
|
)
|
@@ -654,7 +743,7 @@ module Presto::Client
|
|
654
743
|
end
|
655
744
|
|
656
745
|
class << LimitNode =
|
657
|
-
Base.new(:id, :source, :count)
|
746
|
+
Base.new(:id, :source, :count, :partial)
|
658
747
|
def decode(hash)
|
659
748
|
unless hash.is_a?(Hash)
|
660
749
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -664,6 +753,22 @@ module Presto::Client
|
|
664
753
|
hash["id"],
|
665
754
|
hash["source"] && PlanNode.decode(hash["source"]),
|
666
755
|
hash["count"],
|
756
|
+
hash["partial"],
|
757
|
+
)
|
758
|
+
obj
|
759
|
+
end
|
760
|
+
end
|
761
|
+
|
762
|
+
class << LongVariableConstraint =
|
763
|
+
Base.new(:name, :expression)
|
764
|
+
def decode(hash)
|
765
|
+
unless hash.is_a?(Hash)
|
766
|
+
raise TypeError, "Can't convert #{hash.class} to Hash"
|
767
|
+
end
|
768
|
+
obj = allocate
|
769
|
+
obj.send(:initialize_struct,
|
770
|
+
hash["name"],
|
771
|
+
hash["expression"],
|
667
772
|
)
|
668
773
|
obj
|
669
774
|
end
|
@@ -741,6 +846,28 @@ module Presto::Client
|
|
741
846
|
end
|
742
847
|
end
|
743
848
|
|
849
|
+
class << OutputBufferInfo =
|
850
|
+
Base.new(:type, :state, :can_add_buffers, :can_add_pages, :total_buffered_bytes, :total_buffered_pages, :total_rows_sent, :total_pages_sent, :buffers)
|
851
|
+
def decode(hash)
|
852
|
+
unless hash.is_a?(Hash)
|
853
|
+
raise TypeError, "Can't convert #{hash.class} to Hash"
|
854
|
+
end
|
855
|
+
obj = allocate
|
856
|
+
obj.send(:initialize_struct,
|
857
|
+
hash["type"],
|
858
|
+
hash["state"] && hash["state"].downcase.to_sym,
|
859
|
+
hash["canAddBuffers"],
|
860
|
+
hash["canAddPages"],
|
861
|
+
hash["totalBufferedBytes"],
|
862
|
+
hash["totalBufferedPages"],
|
863
|
+
hash["totalRowsSent"],
|
864
|
+
hash["totalPagesSent"],
|
865
|
+
hash["buffers"] && hash["buffers"].map {|h| BufferInfo.decode(h) },
|
866
|
+
)
|
867
|
+
obj
|
868
|
+
end
|
869
|
+
end
|
870
|
+
|
744
871
|
class << OutputNode =
|
745
872
|
Base.new(:id, :source, :columns, :outputs)
|
746
873
|
def decode(hash)
|
@@ -774,32 +901,84 @@ module Presto::Client
|
|
774
901
|
end
|
775
902
|
end
|
776
903
|
|
777
|
-
class <<
|
778
|
-
Base.new(:
|
904
|
+
class << PageBufferInfo =
|
905
|
+
Base.new(:partition, :buffered_pages, :buffered_bytes, :rows_added, :pages_added)
|
906
|
+
def decode(hash)
|
907
|
+
unless hash.is_a?(Hash)
|
908
|
+
raise TypeError, "Can't convert #{hash.class} to Hash"
|
909
|
+
end
|
910
|
+
obj = allocate
|
911
|
+
obj.send(:initialize_struct,
|
912
|
+
hash["partition"],
|
913
|
+
hash["bufferedPages"],
|
914
|
+
hash["bufferedBytes"],
|
915
|
+
hash["rowsAdded"],
|
916
|
+
hash["pagesAdded"],
|
917
|
+
)
|
918
|
+
obj
|
919
|
+
end
|
920
|
+
end
|
921
|
+
|
922
|
+
class << Partitioning =
|
923
|
+
Base.new(:handle, :arguments)
|
924
|
+
def decode(hash)
|
925
|
+
unless hash.is_a?(Hash)
|
926
|
+
raise TypeError, "Can't convert #{hash.class} to Hash"
|
927
|
+
end
|
928
|
+
obj = allocate
|
929
|
+
obj.send(:initialize_struct,
|
930
|
+
hash["handle"] && PartitioningHandle.decode(hash["handle"]),
|
931
|
+
hash["arguments"] && hash["arguments"].map {|h| ArgumentBinding.decode(h) },
|
932
|
+
)
|
933
|
+
obj
|
934
|
+
end
|
935
|
+
end
|
936
|
+
|
937
|
+
class << PartitioningHandle =
|
938
|
+
Base.new(:connector_id, :transaction_handle, :connector_handle)
|
939
|
+
def decode(hash)
|
940
|
+
unless hash.is_a?(Hash)
|
941
|
+
raise TypeError, "Can't convert #{hash.class} to Hash"
|
942
|
+
end
|
943
|
+
obj = allocate
|
944
|
+
obj.send(:initialize_struct,
|
945
|
+
hash["connectorId"],
|
946
|
+
hash["transactionHandle"],
|
947
|
+
hash["connectorHandle"],
|
948
|
+
)
|
949
|
+
obj
|
950
|
+
end
|
951
|
+
end
|
952
|
+
|
953
|
+
class << PartitioningScheme =
|
954
|
+
Base.new(:partitioning, :output_layout, :hash_column, :replicate_nulls, :bucket_to_partition)
|
779
955
|
def decode(hash)
|
780
956
|
unless hash.is_a?(Hash)
|
781
957
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
782
958
|
end
|
783
959
|
obj = allocate
|
784
960
|
obj.send(:initialize_struct,
|
785
|
-
hash["
|
786
|
-
hash["
|
961
|
+
hash["partitioning"] && Partitioning.decode(hash["partitioning"]),
|
962
|
+
hash["outputLayout"],
|
787
963
|
hash["hashColumn"],
|
788
964
|
hash["replicateNulls"],
|
789
|
-
hash["
|
965
|
+
hash["bucketToPartition"],
|
790
966
|
)
|
791
967
|
obj
|
792
968
|
end
|
793
969
|
end
|
794
970
|
|
795
971
|
class << PipelineStats =
|
796
|
-
Base.new(:input_pipeline, :output_pipeline, :total_drivers, :queued_drivers, :queued_partitioned_drivers, :running_drivers, :running_partitioned_drivers, :completed_drivers, :memory_reservation, :system_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)
|
972
|
+
Base.new(:first_start_time, :last_start_time, :last_end_time, :input_pipeline, :output_pipeline, :total_drivers, :queued_drivers, :queued_partitioned_drivers, :running_drivers, :running_partitioned_drivers, :completed_drivers, :memory_reservation, :system_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)
|
797
973
|
def decode(hash)
|
798
974
|
unless hash.is_a?(Hash)
|
799
975
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
800
976
|
end
|
801
977
|
obj = allocate
|
802
978
|
obj.send(:initialize_struct,
|
979
|
+
hash["firstStartTime"],
|
980
|
+
hash["lastStartTime"],
|
981
|
+
hash["lastEndTime"],
|
803
982
|
hash["inputPipeline"],
|
804
983
|
hash["outputPipeline"],
|
805
984
|
hash["totalDrivers"],
|
@@ -832,7 +1011,7 @@ module Presto::Client
|
|
832
1011
|
end
|
833
1012
|
|
834
1013
|
class << PlanFragment =
|
835
|
-
Base.new(:id, :root, :symbols, :
|
1014
|
+
Base.new(:id, :root, :symbols, :partitioning, :partitioned_sources, :partitioning_scheme)
|
836
1015
|
def decode(hash)
|
837
1016
|
unless hash.is_a?(Hash)
|
838
1017
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -842,10 +1021,9 @@ module Presto::Client
|
|
842
1021
|
hash["id"],
|
843
1022
|
hash["root"] && PlanNode.decode(hash["root"]),
|
844
1023
|
hash["symbols"],
|
845
|
-
hash["
|
846
|
-
hash["
|
847
|
-
hash["
|
848
|
-
hash["partitionFunction"] && PartitionFunctionBinding.decode(hash["partitionFunction"]),
|
1024
|
+
hash["partitioning"] && PartitioningHandle.decode(hash["partitioning"]),
|
1025
|
+
hash["partitionedSources"],
|
1026
|
+
hash["partitioningScheme"] && PartitioningScheme.decode(hash["partitioningScheme"]),
|
849
1027
|
)
|
850
1028
|
obj
|
851
1029
|
end
|
@@ -888,7 +1066,7 @@ module Presto::Client
|
|
888
1066
|
end
|
889
1067
|
|
890
1068
|
class << QueryInfo =
|
891
|
-
Base.new(:query_id, :session, :state, :memory_pool, :scheduled, :self, :field_names, :query, :query_stats, :set_session_properties, :reset_session_properties, :started_transaction_id, :clear_transaction_id, :update_type, :output_stage, :failure_info, :error_code, :inputs)
|
1069
|
+
Base.new(:query_id, :session, :state, :memory_pool, :scheduled, :self, :field_names, :query, :query_stats, :set_session_properties, :reset_session_properties, :added_prepared_statements, :deallocated_prepared_statements, :started_transaction_id, :clear_transaction_id, :update_type, :output_stage, :failure_info, :error_code, :inputs)
|
892
1070
|
def decode(hash)
|
893
1071
|
unless hash.is_a?(Hash)
|
894
1072
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -906,6 +1084,8 @@ module Presto::Client
|
|
906
1084
|
hash["queryStats"] && QueryStats.decode(hash["queryStats"]),
|
907
1085
|
hash["setSessionProperties"],
|
908
1086
|
hash["resetSessionProperties"],
|
1087
|
+
hash["addedPreparedStatements"],
|
1088
|
+
hash["deallocatedPreparedStatements"],
|
909
1089
|
hash["startedTransactionId"],
|
910
1090
|
hash["clearTransactionId"],
|
911
1091
|
hash["updateType"],
|
@@ -1062,7 +1242,7 @@ module Presto::Client
|
|
1062
1242
|
end
|
1063
1243
|
|
1064
1244
|
class << SessionRepresentation =
|
1065
|
-
Base.new(:query_id, :transaction_id, :client_transaction_support, :user, :principal, :source, :catalog, :schema, :time_zone_key, :locale, :remote_user_address, :user_agent, :start_time, :system_properties, :catalog_properties)
|
1245
|
+
Base.new(:query_id, :transaction_id, :client_transaction_support, :user, :principal, :source, :catalog, :schema, :time_zone_key, :locale, :remote_user_address, :user_agent, :start_time, :system_properties, :catalog_properties, :prepared_statements)
|
1066
1246
|
def decode(hash)
|
1067
1247
|
unless hash.is_a?(Hash)
|
1068
1248
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -1084,34 +1264,14 @@ module Presto::Client
|
|
1084
1264
|
hash["startTime"],
|
1085
1265
|
hash["systemProperties"],
|
1086
1266
|
hash["catalogProperties"],
|
1087
|
-
|
1088
|
-
obj
|
1089
|
-
end
|
1090
|
-
end
|
1091
|
-
|
1092
|
-
class << SharedBufferInfo =
|
1093
|
-
Base.new(:state, :can_add_buffers, :can_add_pages, :total_buffered_bytes, :total_buffered_pages, :total_queued_pages, :total_pages_sent, :buffers)
|
1094
|
-
def decode(hash)
|
1095
|
-
unless hash.is_a?(Hash)
|
1096
|
-
raise TypeError, "Can't convert #{hash.class} to Hash"
|
1097
|
-
end
|
1098
|
-
obj = allocate
|
1099
|
-
obj.send(:initialize_struct,
|
1100
|
-
hash["state"] && hash["state"].downcase.to_sym,
|
1101
|
-
hash["canAddBuffers"],
|
1102
|
-
hash["canAddPages"],
|
1103
|
-
hash["totalBufferedBytes"],
|
1104
|
-
hash["totalBufferedPages"],
|
1105
|
-
hash["totalQueuedPages"],
|
1106
|
-
hash["totalPagesSent"],
|
1107
|
-
hash["buffers"] && hash["buffers"].map {|h| BufferInfo.decode(h) },
|
1267
|
+
hash["preparedStatements"],
|
1108
1268
|
)
|
1109
1269
|
obj
|
1110
1270
|
end
|
1111
1271
|
end
|
1112
1272
|
|
1113
1273
|
class << Signature =
|
1114
|
-
Base.new(:name, :kind, :
|
1274
|
+
Base.new(:name, :kind, :type_variable_constraints, :long_variable_constraints, :return_type, :argument_types, :variable_arity)
|
1115
1275
|
def decode(hash)
|
1116
1276
|
unless hash.is_a?(Hash)
|
1117
1277
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -1120,7 +1280,8 @@ module Presto::Client
|
|
1120
1280
|
obj.send(:initialize_struct,
|
1121
1281
|
hash["name"],
|
1122
1282
|
hash["kind"] && hash["kind"].downcase.to_sym,
|
1123
|
-
hash["
|
1283
|
+
hash["typeVariableConstraints"] && hash["typeVariableConstraints"].map {|h| TypeVariableConstraint.decode(h) },
|
1284
|
+
hash["longVariableConstraints"] && hash["longVariableConstraints"].map {|h| LongVariableConstraint.decode(h) },
|
1124
1285
|
hash["returnType"],
|
1125
1286
|
hash["argumentTypes"],
|
1126
1287
|
hash["variableArity"],
|
@@ -1169,7 +1330,7 @@ module Presto::Client
|
|
1169
1330
|
end
|
1170
1331
|
|
1171
1332
|
class << StageStats =
|
1172
|
-
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, :cumulative_memory, :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)
|
1333
|
+
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, :cumulative_memory, :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)
|
1173
1334
|
def decode(hash)
|
1174
1335
|
unless hash.is_a?(Hash)
|
1175
1336
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -1189,6 +1350,7 @@ module Presto::Client
|
|
1189
1350
|
hash["completedDrivers"],
|
1190
1351
|
hash["cumulativeMemory"],
|
1191
1352
|
hash["totalMemoryReservation"],
|
1353
|
+
hash["peakMemoryReservation"],
|
1192
1354
|
hash["totalScheduledTime"],
|
1193
1355
|
hash["totalCpuTime"],
|
1194
1356
|
hash["totalUserTime"],
|
@@ -1207,7 +1369,7 @@ module Presto::Client
|
|
1207
1369
|
end
|
1208
1370
|
|
1209
1371
|
class << StatementStats =
|
1210
|
-
Base.new(:state, :scheduled, :nodes, :total_splits, :queued_splits, :running_splits, :completed_splits, :user_time_millis, :cpu_time_millis, :wall_time_millis, :processed_rows, :processed_bytes, :root_stage)
|
1372
|
+
Base.new(:state, :queued, :scheduled, :nodes, :total_splits, :queued_splits, :running_splits, :completed_splits, :user_time_millis, :cpu_time_millis, :wall_time_millis, :processed_rows, :processed_bytes, :root_stage)
|
1211
1373
|
def decode(hash)
|
1212
1374
|
unless hash.is_a?(Hash)
|
1213
1375
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -1215,6 +1377,7 @@ module Presto::Client
|
|
1215
1377
|
obj = allocate
|
1216
1378
|
obj.send(:initialize_struct,
|
1217
1379
|
hash["state"],
|
1380
|
+
hash["queued"],
|
1218
1381
|
hash["scheduled"],
|
1219
1382
|
hash["nodes"],
|
1220
1383
|
hash["totalSplits"],
|
@@ -1301,7 +1464,7 @@ module Presto::Client
|
|
1301
1464
|
end
|
1302
1465
|
|
1303
1466
|
class << TableWriterNode =
|
1304
|
-
Base.new(:id, :source, :target, :columns, :column_names, :outputs, :sample_weight_symbol)
|
1467
|
+
Base.new(:id, :source, :target, :columns, :column_names, :outputs, :sample_weight_symbol, :partitioning_scheme)
|
1305
1468
|
def decode(hash)
|
1306
1469
|
unless hash.is_a?(Hash)
|
1307
1470
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -1315,36 +1478,33 @@ module Presto::Client
|
|
1315
1478
|
hash["columnNames"],
|
1316
1479
|
hash["outputs"],
|
1317
1480
|
hash["sampleWeightSymbol"],
|
1481
|
+
hash["partitioningScheme"] && PartitioningScheme.decode(hash["partitioningScheme"]),
|
1318
1482
|
)
|
1319
1483
|
obj
|
1320
1484
|
end
|
1321
1485
|
end
|
1322
1486
|
|
1323
1487
|
class << TaskInfo =
|
1324
|
-
Base.new(:
|
1488
|
+
Base.new(:task_status, :last_heartbeat, :output_buffers, :no_more_splits, :stats, :needs_plan)
|
1325
1489
|
def decode(hash)
|
1326
1490
|
unless hash.is_a?(Hash)
|
1327
1491
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
1328
1492
|
end
|
1329
1493
|
obj = allocate
|
1330
1494
|
obj.send(:initialize_struct,
|
1331
|
-
hash["
|
1332
|
-
hash["taskInstanceId"],
|
1333
|
-
hash["version"],
|
1334
|
-
hash["state"] && hash["state"].downcase.to_sym,
|
1335
|
-
hash["self"],
|
1495
|
+
hash["taskStatus"] && TaskStatus.decode(hash["taskStatus"]),
|
1336
1496
|
hash["lastHeartbeat"],
|
1337
|
-
hash["outputBuffers"] &&
|
1497
|
+
hash["outputBuffers"] && OutputBufferInfo.decode(hash["outputBuffers"]),
|
1338
1498
|
hash["noMoreSplits"],
|
1339
1499
|
hash["stats"] && TaskStats.decode(hash["stats"]),
|
1340
|
-
hash["
|
1500
|
+
hash["needsPlan"],
|
1341
1501
|
)
|
1342
1502
|
obj
|
1343
1503
|
end
|
1344
1504
|
end
|
1345
1505
|
|
1346
1506
|
class << TaskStats =
|
1347
|
-
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, :cumulative_memory, :memory_reservation, :system_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)
|
1507
|
+
Base.new(:create_time, :first_start_time, :last_start_time, :last_end_time, :end_time, :elapsed_time, :queued_time, :total_drivers, :queued_drivers, :queued_partitioned_drivers, :running_drivers, :running_partitioned_drivers, :completed_drivers, :cumulative_memory, :memory_reservation, :system_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)
|
1348
1508
|
def decode(hash)
|
1349
1509
|
unless hash.is_a?(Hash)
|
1350
1510
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -1354,6 +1514,7 @@ module Presto::Client
|
|
1354
1514
|
hash["createTime"],
|
1355
1515
|
hash["firstStartTime"],
|
1356
1516
|
hash["lastStartTime"],
|
1517
|
+
hash["lastEndTime"],
|
1357
1518
|
hash["endTime"],
|
1358
1519
|
hash["elapsedTime"],
|
1359
1520
|
hash["queuedTime"],
|
@@ -1384,6 +1545,28 @@ module Presto::Client
|
|
1384
1545
|
end
|
1385
1546
|
end
|
1386
1547
|
|
1548
|
+
class << TaskStatus =
|
1549
|
+
Base.new(:task_id, :task_instance_id, :version, :state, :self, :failures, :queued_partitioned_drivers, :running_partitioned_drivers, :memory_reservation)
|
1550
|
+
def decode(hash)
|
1551
|
+
unless hash.is_a?(Hash)
|
1552
|
+
raise TypeError, "Can't convert #{hash.class} to Hash"
|
1553
|
+
end
|
1554
|
+
obj = allocate
|
1555
|
+
obj.send(:initialize_struct,
|
1556
|
+
hash["taskId"] && TaskId.new(hash["taskId"]),
|
1557
|
+
hash["taskInstanceId"],
|
1558
|
+
hash["version"],
|
1559
|
+
hash["state"] && hash["state"].downcase.to_sym,
|
1560
|
+
hash["self"],
|
1561
|
+
hash["failures"] && hash["failures"].map {|h| ExecutionFailureInfo.decode(h) },
|
1562
|
+
hash["queuedPartitionedDrivers"],
|
1563
|
+
hash["runningPartitionedDrivers"],
|
1564
|
+
hash["memoryReservation"],
|
1565
|
+
)
|
1566
|
+
obj
|
1567
|
+
end
|
1568
|
+
end
|
1569
|
+
|
1387
1570
|
class << TopNNode =
|
1388
1571
|
Base.new(:id, :source, :count, :order_by, :orderings, :partial)
|
1389
1572
|
def decode(hash)
|
@@ -1425,7 +1608,7 @@ module Presto::Client
|
|
1425
1608
|
end
|
1426
1609
|
end
|
1427
1610
|
|
1428
|
-
class <<
|
1611
|
+
class << TypeVariableConstraint =
|
1429
1612
|
Base.new(:name, :comparable_required, :orderable_required, :variadic_bound)
|
1430
1613
|
def decode(hash)
|
1431
1614
|
unless hash.is_a?(Hash)
|
@@ -1443,7 +1626,7 @@ module Presto::Client
|
|
1443
1626
|
end
|
1444
1627
|
|
1445
1628
|
class << UnionNode =
|
1446
|
-
Base.new(:id, :sources, :
|
1629
|
+
Base.new(:id, :sources, :output_to_inputs, :outputs)
|
1447
1630
|
def decode(hash)
|
1448
1631
|
unless hash.is_a?(Hash)
|
1449
1632
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -1452,7 +1635,8 @@ module Presto::Client
|
|
1452
1635
|
obj.send(:initialize_struct,
|
1453
1636
|
hash["id"],
|
1454
1637
|
hash["sources"] && hash["sources"].map {|h| PlanNode.decode(h) },
|
1455
|
-
hash["
|
1638
|
+
hash["outputToInputs"],
|
1639
|
+
hash["outputs"],
|
1456
1640
|
)
|
1457
1641
|
obj
|
1458
1642
|
end
|
@@ -1493,7 +1677,7 @@ module Presto::Client
|
|
1493
1677
|
end
|
1494
1678
|
|
1495
1679
|
class << WindowNode =
|
1496
|
-
Base.new(:id, :source, :
|
1680
|
+
Base.new(:id, :source, :specification, :window_functions, :signatures, :hash_symbol, :pre_partitioned_inputs, :pre_sorted_order_prefix)
|
1497
1681
|
def decode(hash)
|
1498
1682
|
unless hash.is_a?(Hash)
|
1499
1683
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
@@ -1502,10 +1686,7 @@ module Presto::Client
|
|
1502
1686
|
obj.send(:initialize_struct,
|
1503
1687
|
hash["id"],
|
1504
1688
|
hash["source"] && PlanNode.decode(hash["source"]),
|
1505
|
-
hash["
|
1506
|
-
hash["orderBy"],
|
1507
|
-
hash["orderings"] && Hash[hash["orderings"].to_a.map! {|k,v| [k, v.downcase.to_sym] }],
|
1508
|
-
hash["frame"],
|
1689
|
+
hash["specification"] && Specification.decode(hash["specification"]),
|
1509
1690
|
hash["windowFunctions"],
|
1510
1691
|
hash["signatures"] && Hash[hash["signatures"].to_a.map! {|k,v| [k, Signature.decode(v)] }],
|
1511
1692
|
hash["hashSymbol"],
|
data/modelgen/modelgen.rb
CHANGED
@@ -13,10 +13,10 @@ erb = ERB.new(File.read(template_path))
|
|
13
13
|
source_path = source_dir
|
14
14
|
|
15
15
|
predefined_simple_classes = %w[StageId TaskId ConnectorSession]
|
16
|
-
predefined_models = %w[DistributionSnapshot PlanNode EquiJoinClause WriterTarget
|
16
|
+
predefined_models = %w[DistributionSnapshot PlanNode EquiJoinClause WriterTarget DeleteHandle Specification ArgumentBinding]
|
17
17
|
|
18
|
-
assume_primitive = %w[Object Type Long Symbol QueryId PlanNodeId PlanFragmentId MemoryPoolId TransactionId URI Duration DataSize DateTime ColumnHandle ConnectorTableHandle ConnectorOutputTableHandle ConnectorIndexHandle ConnectorColumnHandle ConnectorInsertTableHandle ConnectorTableLayoutHandle Expression FunctionCall TimeZoneKey Locale TypeSignature Frame TupleDomain<ColumnHandle> SerializableNativeValue ConnectorTransactionHandle]
|
19
|
-
enum_types = %w[QueryState StageState TaskState QueueState PlanDistribution OutputPartitioning Step SortOrder BufferState NullPartitioning BlockedReason ParameterKind FunctionKind PartitionFunctionHandle]
|
18
|
+
assume_primitive = %w[Object Type Long Symbol QueryId PlanNodeId PlanFragmentId MemoryPoolId TransactionId URI Duration DataSize DateTime ColumnHandle ConnectorTableHandle ConnectorOutputTableHandle ConnectorIndexHandle ConnectorColumnHandle ConnectorInsertTableHandle ConnectorTableLayoutHandle Expression FunctionCall TimeZoneKey Locale TypeSignature Frame TupleDomain<ColumnHandle> SerializableNativeValue ConnectorTransactionHandle OutputBufferId ConnectorPartitioningHandle NullableValue]
|
19
|
+
enum_types = %w[QueryState StageState TaskState QueueState PlanDistribution OutputPartitioning Step SortOrder BufferState NullPartitioning BlockedReason ParameterKind FunctionKind PartitionFunctionHandle Scope ErrorType]
|
20
20
|
|
21
21
|
root_models = %w[QueryResults QueryInfo] + %w[
|
22
22
|
OutputNode
|
@@ -46,7 +46,11 @@ TableFinishNode
|
|
46
46
|
UnnestNode
|
47
47
|
ExchangeNode
|
48
48
|
UnionNode
|
49
|
+
IntersectNode
|
49
50
|
EnforceSingleRowNode
|
51
|
+
GroupIdNode
|
52
|
+
ExplainAnalyzeNode
|
53
|
+
ApplyNode
|
50
54
|
] + %w[InsertTableHandle OutputTableHandle TableHandle]
|
51
55
|
|
52
56
|
name_mapping = Hash[*%w[
|
data/modelgen/models.rb
CHANGED
@@ -108,7 +108,11 @@ module Presto::Client
|
|
108
108
|
when "unnest" then UnnestNode
|
109
109
|
when "exchange" then ExchangeNode
|
110
110
|
when "union" then UnionNode
|
111
|
+
when "intersect" then IntersectNode
|
111
112
|
when "scalar" then EnforceSingleRowNode
|
113
|
+
when "groupid" then GroupIdNode
|
114
|
+
when "explainAnalyze" then ExplainAnalyzeNode
|
115
|
+
when "apply" then ApplyNode
|
112
116
|
end
|
113
117
|
if model_class
|
114
118
|
node = model_class.decode(hash)
|
@@ -201,21 +205,34 @@ module Presto::Client
|
|
201
205
|
end
|
202
206
|
end
|
203
207
|
|
208
|
+
# Inner classes
|
209
|
+
class << Specification =
|
210
|
+
Base.new(:partition_by, :order_by, :orderings, :frame, :pages_added)
|
211
|
+
def decode(hash)
|
212
|
+
unless hash.is_a?(Hash)
|
213
|
+
raise TypeError, "Can't convert #{hash.class} to Hash"
|
214
|
+
end
|
215
|
+
obj = allocate
|
216
|
+
obj.send(:initialize_struct,
|
217
|
+
hash["partitionBy"],
|
218
|
+
hash["orderBy"],
|
219
|
+
hash["orderings"],
|
220
|
+
hash["frame"],
|
221
|
+
)
|
222
|
+
obj
|
223
|
+
end
|
224
|
+
end
|
204
225
|
|
205
|
-
|
206
|
-
|
207
|
-
Base.new(:partition, :buffered_pages, :queued_pages, :buffered_bytes, :pages_added)
|
226
|
+
class << ArgumentBinding =
|
227
|
+
Base.new(:column, :constant)
|
208
228
|
def decode(hash)
|
209
229
|
unless hash.is_a?(Hash)
|
210
230
|
raise TypeError, "Can't convert #{hash.class} to Hash"
|
211
231
|
end
|
212
232
|
obj = allocate
|
213
233
|
obj.send(:initialize_struct,
|
214
|
-
hash["
|
215
|
-
hash["
|
216
|
-
hash["queuedPages"],
|
217
|
-
hash["bufferedBytes"],
|
218
|
-
hash["pagesAdded"],
|
234
|
+
hash["column"],
|
235
|
+
hash["constant"]
|
219
236
|
)
|
220
237
|
obj
|
221
238
|
end
|
data/modelgen/presto_models.rb
CHANGED
@@ -4,6 +4,7 @@ module PrestoModels
|
|
4
4
|
require 'stringio'
|
5
5
|
|
6
6
|
PRIMITIVE_TYPES = %w[String boolean long int short byte double float Integer]
|
7
|
+
ARRAY_PRIMITIVE_TYPES = PRIMITIVE_TYPES.map { |t| "#{t}[]" }
|
7
8
|
|
8
9
|
class Model < Struct.new(:name, :fields)
|
9
10
|
end
|
@@ -24,7 +25,7 @@ module PrestoModels
|
|
24
25
|
class ModelAnalyzer
|
25
26
|
def initialize(source_path, options={})
|
26
27
|
@source_path = source_path
|
27
|
-
@ignore_types = PRIMITIVE_TYPES + (options[:skip_models] || [])
|
28
|
+
@ignore_types = PRIMITIVE_TYPES + ARRAY_PRIMITIVE_TYPES + (options[:skip_models] || [])
|
28
29
|
@path_mapping = options[:path_mapping] || {}
|
29
30
|
@name_mapping = options[:name_mapping] || {}
|
30
31
|
@models = {}
|
@@ -45,7 +46,7 @@ module PrestoModels
|
|
45
46
|
|
46
47
|
private
|
47
48
|
|
48
|
-
PROPERTY_PATTERN = /@JsonProperty\(\"(\w+)\"\)\s+(@Nullable\s+)?([\w
|
49
|
+
PROPERTY_PATTERN = /@JsonProperty\(\"(\w+)\"\)\s+(@Nullable\s+)?([\w\<\>\[\]\,\s]+)\s+(\w+)/
|
49
50
|
CREATOR_PATTERN = /@JsonCreator[\w\s]+\((?:\s*#{PROPERTY_PATTERN}\s*,?)+\)/
|
50
51
|
|
51
52
|
def analyze_model(model_name, parent_model = nil)
|
@@ -70,7 +71,7 @@ module PrestoModels
|
|
70
71
|
base_type = m[1]
|
71
72
|
map_value_base_type = m[2]
|
72
73
|
map = true
|
73
|
-
elsif m = /Optional<(\w+)>/.match(type)
|
74
|
+
elsif m = /Optional<([\w\[\]]+)>/.match(type)
|
74
75
|
base_type = m[1]
|
75
76
|
nullable = true
|
76
77
|
elsif m = /OptionalInt/.match(type)
|
@@ -122,7 +123,7 @@ module PrestoModels
|
|
122
123
|
@base_indent_count = options[:base_indent_count] || 0
|
123
124
|
@struct_class = options[:struct_class] || 'Struct'
|
124
125
|
@special_struct_initialize_method = options[:special_struct_initialize_method]
|
125
|
-
@primitive_types = PRIMITIVE_TYPES + (options[:primitive_types] || [])
|
126
|
+
@primitive_types = PRIMITIVE_TYPES + ARRAY_PRIMITIVE_TYPES + (options[:primitive_types] || [])
|
126
127
|
@skip_types = options[:skip_types] || []
|
127
128
|
@simple_classes = options[:simple_classes]
|
128
129
|
@enum_types = options[:enum_types]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: presto-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sadayuki Furuhashi
|
@@ -148,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
148
|
version: '0'
|
149
149
|
requirements: []
|
150
150
|
rubyforge_project:
|
151
|
-
rubygems_version: 2.
|
151
|
+
rubygems_version: 2.5.1
|
152
152
|
signing_key:
|
153
153
|
specification_version: 4
|
154
154
|
summary: Presto client library
|