Class: Polars::QueryOptFlags

Inherits:
Object
  • Object
show all
Defined in:
lib/polars/query_opt_flags.rb

Overview

Note:

This functionality is considered unstable. It may be changed at any point without it being considered a breaking change.

The set of the optimizations considered during query optimization.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(predicate_pushdown: nil, projection_pushdown: nil, simplify_expression: nil, slice_pushdown: nil, comm_subplan_elim: nil, comm_subexpr_elim: nil, cluster_with_columns: nil, collapse_joins: nil, check_order_observe: nil, fast_projection: nil) ⇒ QueryOptFlags



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/polars/query_opt_flags.rb', line 11

def initialize(
  predicate_pushdown: nil,
  projection_pushdown: nil,
  simplify_expression: nil,
  slice_pushdown: nil,
  comm_subplan_elim: nil,
  comm_subexpr_elim: nil,
  cluster_with_columns: nil,
  collapse_joins: nil,
  check_order_observe: nil,
  fast_projection: nil
)
  self._rboptflags = RbOptFlags.default
  update(
    predicate_pushdown: predicate_pushdown,
    projection_pushdown: projection_pushdown,
    simplify_expression: simplify_expression,
    slice_pushdown: slice_pushdown,
    comm_subplan_elim: comm_subplan_elim,
    comm_subexpr_elim: comm_subexpr_elim,
    cluster_with_columns: cluster_with_columns,
    collapse_joins: collapse_joins,
    check_order_observe: check_order_observe,
    fast_projection: fast_projection
  )
end

Class Method Details

._eagerObject

Create new empty set off optimizations.



120
121
122
123
124
125
126
# File 'lib/polars/query_opt_flags.rb', line 120

def self._eager
  optflags = QueryOptFlags.new
  optflags.no_optimizations
  optflags._rboptflags.eager = true
  optflags.simplify_expression = true
  optflags
end

.none(predicate_pushdown: nil, projection_pushdown: nil, simplify_expression: nil, slice_pushdown: nil, comm_subplan_elim: nil, comm_subexpr_elim: nil, cluster_with_columns: nil, collapse_joins: nil, check_order_observe: nil, fast_projection: nil) ⇒ Object

Create new empty set off optimizations.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/polars/query_opt_flags.rb', line 39

def self.none(
  predicate_pushdown: nil,
  projection_pushdown: nil,
  simplify_expression: nil,
  slice_pushdown: nil,
  comm_subplan_elim: nil,
  comm_subexpr_elim: nil,
  cluster_with_columns: nil,
  collapse_joins: nil,
  check_order_observe: nil,
  fast_projection: nil
)
  optflags = QueryOptFlags.new
  optflags.no_optimizations
  optflags.update(
    predicate_pushdown: predicate_pushdown,
    projection_pushdown: projection_pushdown,
    simplify_expression: simplify_expression,
    slice_pushdown: slice_pushdown,
    comm_subplan_elim: comm_subplan_elim,
    comm_subexpr_elim: comm_subexpr_elim,
    cluster_with_columns: cluster_with_columns,
    collapse_joins: collapse_joins,
    check_order_observe: check_order_observe,
    fast_projection: fast_projection
  )
end

Instance Method Details

#check_order_observeObject

Do not maintain order if the order would not be observed.



197
198
199
# File 'lib/polars/query_opt_flags.rb', line 197

def check_order_observe
  _rboptflags.check_order_observe
end

#check_order_observe=(value) ⇒ Object



201
202
203
# File 'lib/polars/query_opt_flags.rb', line 201

def check_order_observe=(value)
  _rboptflags.check_order_observe = value
end

#cluster_with_columnsObject

Cluster sequential with_columns calls to independent calls.



152
153
154
# File 'lib/polars/query_opt_flags.rb', line 152

def cluster_with_columns
  _rboptflags.cluster_with_columns
end

#cluster_with_columns=(value) ⇒ Object



156
157
158
# File 'lib/polars/query_opt_flags.rb', line 156

def cluster_with_columns=(value)
  _rboptflags.cluster_with_columns = value
end

#comm_subexpr_elimObject

Elide duplicate expressions and caches their outputs.



188
189
190
# File 'lib/polars/query_opt_flags.rb', line 188

def comm_subexpr_elim
  _rboptflags.comm_subexpr_elim
end

#comm_subexpr_elim=(value) ⇒ Object



192
193
194
# File 'lib/polars/query_opt_flags.rb', line 192

def comm_subexpr_elim=(value)
  _rboptflags.comm_subexpr_elim = value
end

#comm_subplan_elimObject

Elide duplicate plans and caches their outputs.



179
180
181
# File 'lib/polars/query_opt_flags.rb', line 179

def comm_subplan_elim
  _rboptflags.comm_subplan_elim
end

#comm_subplan_elim=(value) ⇒ Object



183
184
185
# File 'lib/polars/query_opt_flags.rb', line 183

def comm_subplan_elim=(value)
  _rboptflags.comm_subplan_elim = value
end

#fast_projectionObject

Replace simple projections with a faster inlined projection that skips the expression engine.



206
207
208
# File 'lib/polars/query_opt_flags.rb', line 206

def fast_projection
  _rboptflags.fast_projection
end

#fast_projection=(value) ⇒ Object



210
211
212
# File 'lib/polars/query_opt_flags.rb', line 210

def fast_projection=(value)
  _rboptflags.fast_projection = value
end

#no_optimizationsObject

Remove selected optimizations.



129
130
131
# File 'lib/polars/query_opt_flags.rb', line 129

def no_optimizations
  _rboptflags.no_optimizations
end

#predicate_pushdownObject

Apply predicates/filters as early as possible.



143
144
145
# File 'lib/polars/query_opt_flags.rb', line 143

def predicate_pushdown
  _rboptflags.predicate_pushdown
end

#predicate_pushdown=(value) ⇒ Object



147
148
149
# File 'lib/polars/query_opt_flags.rb', line 147

def predicate_pushdown=(value)
  _rboptflags.predicate_pushdown = value
end

#projection_pushdownObject

Only read columns that are used later in the query.



134
135
136
# File 'lib/polars/query_opt_flags.rb', line 134

def projection_pushdown
  _rboptflags.projection_pushdown
end

#projection_pushdown=(value) ⇒ Object



138
139
140
# File 'lib/polars/query_opt_flags.rb', line 138

def projection_pushdown=(value)
  _rboptflags.projection_pushdown = value
end

#simplify_expressionObject

Run many expression optimization rules until fixed point.



161
162
163
# File 'lib/polars/query_opt_flags.rb', line 161

def simplify_expression
  _rboptflags.simplify_expression
end

#simplify_expression=(value) ⇒ Object



165
166
167
# File 'lib/polars/query_opt_flags.rb', line 165

def simplify_expression=(value)
  _rboptflags.simplify_expression = value
end

#slice_pushdownObject

Pushdown slices/limits.



170
171
172
# File 'lib/polars/query_opt_flags.rb', line 170

def slice_pushdown
  _rboptflags.slice_pushdown
end

#slice_pushdown=(value) ⇒ Object



174
175
176
# File 'lib/polars/query_opt_flags.rb', line 174

def slice_pushdown=(value)
  _rboptflags.slice_pushdown = value
end

#to_sObject Also known as: inspect



214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
# File 'lib/polars/query_opt_flags.rb', line 214

def to_s
  "    QueryOptFlags {\n        type_coercion: \#{_rboptflags.type_coercion}\n        type_check: \#{_rboptflags.type_check}\n\n        predicate_pushdown: \#{predicate_pushdown}\n        projection_pushdown: \#{projection_pushdown}\n        simplify_expression: \#{simplify_expression}\n        slice_pushdown: \#{slice_pushdown}\n        comm_subplan_elim: \#{comm_subplan_elim}\n        comm_subexpr_elim: \#{comm_subexpr_elim}\n        cluster_with_columns: \#{cluster_with_columns}\n        check_order_observe: \#{check_order_observe}\n        fast_projection: \#{fast_projection}\n\n        eager: \#{_rboptflags.eager}\n        streaming: \#{_rboptflags.streaming}\n    }\n  STR\nend\n"

#update(predicate_pushdown: nil, projection_pushdown: nil, simplify_expression: nil, slice_pushdown: nil, comm_subplan_elim: nil, comm_subexpr_elim: nil, cluster_with_columns: nil, collapse_joins: nil, check_order_observe: nil, fast_projection: nil) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/polars/query_opt_flags.rb', line 67

def update(
  predicate_pushdown: nil,
  projection_pushdown: nil,
  simplify_expression: nil,
  slice_pushdown: nil,
  comm_subplan_elim: nil,
  comm_subexpr_elim: nil,
  cluster_with_columns: nil,
  collapse_joins: nil,
  check_order_observe: nil,
  fast_projection: nil
)
  if !predicate_pushdown.nil?
    self.predicate_pushdown = predicate_pushdown
  end
  if !projection_pushdown.nil?
    self.projection_pushdown = projection_pushdown
  end
  if !simplify_expression.nil?
    self.simplify_expression = simplify_expression
  end
  if !slice_pushdown.nil?
    self.slice_pushdown = slice_pushdown
  end
  if !comm_subplan_elim.nil?
    self.comm_subplan_elim = comm_subplan_elim
  end
  if !comm_subexpr_elim.nil?
    self.comm_subexpr_elim = comm_subexpr_elim
  end
  if !cluster_with_columns.nil?
    self.cluster_with_columns = cluster_with_columns
  end
  if !collapse_joins.nil?
    Utils.issue_deprecation_warning(
      "the `collapse_joins` parameter for `QueryOptFlags` is deprecated. " +
      "Use `predicate_pushdown` instead."
    )
    if !collapse_joins
      self.predicate_pushdown = false
    end
  end
  if !check_order_observe.nil?
    self.check_order_observe = check_order_observe
  end
  if !fast_projection.nil?
    self.fast_projection = fast_projection
  end

  self
end