presto-client 0.4.15 → 0.4.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/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
|