YugabyteDB (2.13.1.0-b60, 21121d69985fbf76aa6958d8f04a9bfa936293b5)

Coverage Report

Created: 2022-03-22 16:43

/Users/deen/code/yugabyte-db/src/yb/yql/cql/ql/ptree/pt_expr.h
Line
Count
Source (jump to first uncovered line)
1
//--------------------------------------------------------------------------------------------------
2
// Copyright (c) YugaByte, Inc.
3
//
4
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
// in compliance with the License.  You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software distributed under the License
10
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
// or implied.  See the License for the specific language governing permissions and limitations
12
// under the License.
13
//
14
//
15
// Tree node definitions for expression.
16
//--------------------------------------------------------------------------------------------------
17
18
#ifndef YB_YQL_CQL_QL_PTREE_PT_EXPR_H_
19
#define YB_YQL_CQL_QL_PTREE_PT_EXPR_H_
20
21
#include <boost/optional.hpp>
22
23
#include "yb/common/common_fwd.h"
24
#include "yb/common/ql_datatype.h"
25
#include "yb/common/ql_name.h"
26
27
#include "yb/util/net/net_fwd.h"
28
29
#include "yb/yql/cql/ql/ptree/list_node.h"
30
#include "yb/yql/cql/ql/ptree/ptree_fwd.h"
31
#include "yb/yql/cql/ql/ptree/pt_expr_types.h"
32
#include "yb/yql/cql/ql/ptree/sem_state.h"
33
#include "yb/yql/cql/ql/ptree/tree_node.h"
34
35
namespace yb {
36
37
namespace bfql {
38
enum class TSOpcode : int32_t;
39
}
40
41
namespace util {
42
class Decimal;
43
}
44
45
namespace ql {
46
47
// Because statements own expressions and their headers include expression headers, we forward
48
// declare statement classes here.
49
class PTSelectStmt;
50
class PTDmlStmt;
51
52
//--------------------------------------------------------------------------------------------------
53
// The order of the following enum values are not important.
54
enum class ExprOperator : int {
55
  kNoOp = 0,
56
57
  // Reference to constants, columns, and variables.
58
  kConst = 1,
59
  kAlias = 2,
60
  kRef = 3,
61
  kSubColRef = 4,
62
  kBindVar = 5,
63
  kBcall = 6,
64
65
  // Operators that take one operand.
66
  kUMinus = 7,
67
68
  // Logical operators with one operand.
69
  kLogic1 = 8,
70
71
  // Logical operators with two operands.
72
  kLogic2 = 9,
73
74
  // Relation operators that take no operand.
75
  kRelation0 = 10,
76
77
  // Relation operators that take one operand.
78
  kRelation1 = 11,
79
80
  // Relation operators that take two operands.
81
  kRelation2 = 12,
82
83
  // Relation operators that take three operands.
84
  kRelation3 = 13,
85
86
  // Relation operators that take unspecified number of operands.
87
  kCollection = 14,
88
89
  // Reference to a column with json operators.
90
  kJsonOperatorRef = 15,
91
};
92
93
enum class JsonOperator {
94
  JSON_OBJECT,
95
  JSON_TEXT
96
};
97
98
//--------------------------------------------------------------------------------------------------
99
// Base class for all expressions.
100
class PTExpr : public TreeNode {
101
 public:
102
  //------------------------------------------------------------------------------------------------
103
  // Public types.
104
  typedef MCSharedPtr<PTExpr> SharedPtr;
105
  typedef MCSharedPtr<const PTExpr> SharedPtrConst;
106
107
  //------------------------------------------------------------------------------------------------
108
  // Constructor and destructor.
109
  explicit PTExpr(
110
      MemoryContext *memctx,
111
      YBLocationPtr loc,
112
      ExprOperator op = ExprOperator::kNoOp,
113
      yb::QLOperator ql_op = yb::QLOperator::QL_OP_NOOP,
114
      InternalType internal_type = InternalType::VALUE_NOT_SET,
115
      DataType ql_type_id = DataType::UNKNOWN_DATA);
116
  explicit PTExpr(
117
      MemoryContext *memctx,
118
      YBLocationPtr loc,
119
      ExprOperator op,
120
      yb::QLOperator ql_op,
121
      InternalType internal_type,
122
      const QLTypePtr& ql_type);
123
124
1.18M
  virtual ~PTExpr() = default;
125
126
  // Expression return type in DocDB format.
127
7.90M
  virtual InternalType internal_type() const {
128
7.90M
    return internal_type_;
129
7.90M
  }
130
131
  bool has_valid_internal_type();
132
133
7.67M
  virtual InternalType expected_internal_type() const {
134
7.67M
    return expected_internal_type_;
135
7.67M
  }
136
137
  // Expression return type in QL format.
138
13.6M
  virtual const std::shared_ptr<QLType>& ql_type() const {
139
13.6M
    return ql_type_;
140
13.6M
  }
141
142
  // This is only useful during pre-exec phase.
143
  // Normally you'd want to use CheckExpectedTypeCompatibility instead.
144
313
  virtual void set_expected_internal_type(InternalType expected_internal_type) {
145
313
    expected_internal_type_ = expected_internal_type;
146
313
  }
147
148
  // Expression return result set column type in QL format.
149
  virtual void rscol_type_PB(QLTypePB *pb_type ) const;
150
151
73
  virtual void set_ql_type(const std::shared_ptr<QLType>& ql_type) {
152
73
    ql_type_ = ql_type;
153
73
  }
154
155
  void set_ql_type(DataType type_id);
156
157
  // TODO(neil or mihnea) Remove or replace all ql_type_id API & comments with QLType.
158
  DataType ql_type_id() const;
159
160
  void set_ql_type_id(DataType type_id);
161
162
  bool has_valid_ql_type_id();
163
164
471
  virtual void set_is_in_operand(bool in_operand = true) {
165
471
    is_in_operand_ = in_operand;
166
471
  }
167
168
900
  bool is_in_operand() const {
169
900
    return is_in_operand_;
170
900
  }
171
172
  // Seeks index-columns that referenced by this expression and output mangled colum names.
173
  // NOTE:
174
  // - index-column can be either a column or an expression of the column.
175
  // - Currently, name of a column in an INDEX must be one of the following.
176
  //   * Mangled name of a column of scalar type (not a collection type such as map, jsonb).
177
  //   * Mangled name of a "jsonb->>field" expresion.
178
3.53k
  virtual void CollectReferencedIndexColnames(MCSet<std::string> *col_names) const {
179
3.53k
    if (op1()) {
180
1.72k
      op1()->CollectReferencedIndexColnames(col_names);
181
1.72k
    }
182
3.53k
    if (op2()) {
183
1.72k
      op2()->CollectReferencedIndexColnames(col_names);
184
1.72k
    }
185
3.53k
    if (op3()) {
186
0
      op3()->CollectReferencedIndexColnames(col_names);
187
0
    }
188
3.53k
  }
189
190
  // Return name of expression.
191
  // - Option kUserOriginalName
192
  //     When report data to user, we use the original name that users enterred. In SELECT,
193
  //     each selected expression is assigned a name, and this method is to form the name of an
194
  //     expression using un-mangled column names. For example, when selected expr is a column of a
195
  //     table, QLName() would be the name of that column.
196
  //
197
  // - Option kMangledName
198
  //     When INDEX is created, YugaByte generates column name by mangling the original name from
199
  //     users for the index expression columns.
200
  //
201
  // - Option kMetadataName
202
  //     When loading column descriptor from Catalog::Table and Catalog::IndexTable, we might want
203
  //     to read the name that is kept in the Catalog. Unmangled name for regular column, and
204
  //     mangled name for index-expression column.
205
10
  virtual std::string QLName(QLNameOption option = QLNameOption::kUserOriginalName) const {
206
10
    LOG(INFO) << "Missing QLName for expression("
207
10
              << static_cast<int>(expr_op())
208
10
              << ") that is being selected";
209
10
    return "expr";
210
10
  }
211
212
4.84k
  virtual std::string MangledName() const {
213
4.84k
    return QLName(QLNameOption::kMangledName);
214
4.84k
  }
215
216
  virtual std::string MetadataName() const;
217
218
  // Node type.
219
1.51k
  virtual TreeNodeOpcode opcode() const override {
220
1.51k
    return TreeNodeOpcode::kPTExpr;
221
1.51k
  }
222
223
  // Returns the expression operator.
224
16.6M
  virtual ExprOperator expr_op() const {
225
16.6M
    return op_;
226
16.6M
  }
227
228
237k
  yb::QLOperator ql_op() const {
229
237k
    return ql_op_;
230
237k
  }
231
232
  // Predicate for null.
233
  virtual bool is_null() const;
234
235
  // Returns the operands of an expression.
236
1.80k
  virtual PTExprPtr op1() const {
237
1.80k
    return nullptr;
238
1.80k
  }
239
240
1.80k
  virtual PTExprPtr op2() const {
241
1.80k
    return nullptr;
242
1.80k
  }
243
244
3.53k
  virtual PTExprPtr op3() const {
245
3.53k
    return nullptr;
246
3.53k
  }
247
248
  // Predicate for constant tree node.
249
4.97k
  bool is_constant() const {
250
4.97k
    return ((expr_op() == ExprOperator::kConst) ||
251
4.97k
            
(4.91k
expr_op() == ExprOperator::kUMinus4.91k
&&
op1()->expr_op() == ExprOperator::kConst4.56k
));
252
4.97k
  }
253
254
  // Predicate for values.
255
407
  bool has_no_column_ref() const {
256
407
    return is_constant() ||
257
407
           
expr_op() == ExprOperator::kBindVar345
||
258
407
           
expr_op() == ExprOperator::kCollection264
;
259
407
  }
260
261
8
  virtual bool IsDummyStar() const {
262
8
    return false;
263
8
  }
264
265
  // Predicate for calls to aggregate functions.
266
543k
  virtual bool IsAggregateCall() const {
267
543k
    return false;
268
543k
  }
269
270
  virtual yb::bfql::TSOpcode aggregate_opcode() const;
271
272
  // Predicate for expressions that have no column reference.
273
  // - When an expression does not have ColumnRef, it can be evaluated without reading table data.
274
  // - By default, returns true to indicate so that optimization doesn't take place unless we
275
  //   know for sure ColumnRef is used.
276
  //
277
  // Examples:
278
  // - Constant has no column reference.
279
  // - PTRef always has column-ref.
280
  // - All other epxressions are dependent on whether or not its argument list contains a column.
281
  //   NOW() and COUNT(*) have no reference. The '*' argument is translated to PTStar (DummyStar)
282
  //   because we don't need to read any extra information from DocDB to process the statement for
283
  //   this expression.
284
11.0k
  virtual bool HaveColumnRef() const {
285
11.0k
    return true;
286
11.0k
  }
287
288
  static PTExprPtr CreateConst(MemoryContext *memctx,
289
                                       YBLocationPtr loc,
290
                                       PTBaseTypePtr data_type);
291
292
  // Predicate for updating counter.  Only '+' and '-' expression support counter update.
293
  virtual CHECKED_STATUS CheckCounterUpdateSupport(SemContext *sem_context) const;
294
295
  // All expressions must define this Analyze() function, which does the following steps.
296
  // - Call Analyze() on child treenodes to run semantic analysis on the child nodes. The child
297
  //   nodes will then call their own child nodes and so forth. In short, we traverse the expression
298
  //   parse tree to run semantic analysis on them.
299
  // - Run semantic analysis on this node.
300
  // - The main job of semantics analysis is to run type resolution to find the correct values for
301
  //   ql_type and internal_type_ for expressions.
302
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override = 0;
303
304
  // Check if this expression represents a column in an INDEX table.
305
  bool CheckIndexColumn(SemContext *sem_context);
306
307
  // Check if an operator is allowed in the current context before analyzing it.
308
  virtual CHECKED_STATUS CheckOperator(SemContext *sem_context);
309
310
  // The following functions are called to setup the states before analyzing an operand.
311
  virtual CHECKED_STATUS SetupSemStateForOp1(SemState *sem_state);
312
  virtual CHECKED_STATUS SetupSemStateForOp2(SemState *sem_state);
313
  virtual CHECKED_STATUS SetupSemStateForOp3(SemState *sem_state);
314
315
  // These functions are called by analyze to run type resolution on this expression.
316
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context);
317
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context,
318
                                         PTExprPtr op1);
319
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context,
320
                                         PTExprPtr op1,
321
                                         PTExprPtr op2);
322
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context,
323
                                         PTExprPtr op1,
324
                                         PTExprPtr op2,
325
                                         PTExprPtr op3);
326
327
  // Analyze LHS expression.
328
  virtual CHECKED_STATUS CheckLhsExpr(SemContext *sem_context);
329
330
  // Analyze RHS expression.
331
  virtual CHECKED_STATUS CheckRhsExpr(SemContext *sem_context);
332
333
  // Check if left and right values are compatible.
334
  virtual CHECKED_STATUS CheckInequalityOperands(SemContext *sem_context,
335
                                                 PTExprPtr lhs,
336
                                                 PTExprPtr rhs);
337
  // Check if left and right values are compatible.
338
  virtual CHECKED_STATUS CheckEqualityOperands(SemContext *sem_context,
339
                                               PTExprPtr lhs,
340
                                               PTExprPtr rhs);
341
342
  // Compare this node datatype with the expected type from the parent treenode.
343
  virtual CHECKED_STATUS CheckExpectedTypeCompatibility(SemContext *sem_context);
344
345
  // Access function for descriptor.
346
21.6M
  const ColumnDesc *index_desc() const {
347
21.6M
    return index_desc_;
348
21.6M
  }
349
350
44
  const MCSharedPtr<MCString>& index_name() const {
351
44
    return index_name_;
352
44
  }
353
354
 protected:
355
  // Get the column descriptor for this expression. IndexTable can have expression as its column.
356
  const ColumnDesc *GetColumnDesc(const SemContext *sem_context);
357
358
  // Get the descriptor for a column name.
359
  const ColumnDesc *GetColumnDesc(const SemContext *sem_context, const MCString& col_name) const;
360
361
  // Get the descriptor for a column or expr name from either a DML STMT or a TABLE.
362
  const ColumnDesc *GetColumnDesc(const SemContext *sem_context,
363
                                  const MCString& col_name,
364
                                  PTDmlStmt *stmt) const;
365
366
  ExprOperator op_;
367
  yb::QLOperator ql_op_;
368
  InternalType internal_type_;
369
  QLTypePtr ql_type_;
370
  InternalType expected_internal_type_;
371
  bool is_in_operand_; // Is it right operand of IN / NOT IN operator.
372
373
  // Fields that should be resolved by semantic analysis.
374
  // An expression might be a reference to a column in an INDEX.
375
  const ColumnDesc *index_desc_ = nullptr;
376
  MCSharedPtr<MCString> index_name_;
377
};
378
379
using PTExprListNode = TreeListNode<PTExpr>;
380
381
//--------------------------------------------------------------------------------------------------
382
// Tree Nodes for Collections -- treated as expressions with flexible arity
383
//--------------------------------------------------------------------------------------------------
384
385
class PTCollectionExpr : public PTExpr {
386
 public:
387
  //------------------------------------------------------------------------------------------------
388
  // Public types.
389
  typedef MCSharedPtr<PTCollectionExpr> SharedPtr;
390
  typedef MCSharedPtr<const PTCollectionExpr> SharedPtrConst;
391
392
  //------------------------------------------------------------------------------------------------
393
  // Constructor and destructor.
394
  PTCollectionExpr(MemoryContext* memctx,
395
                   YBLocationPtr loc,
396
                   const QLTypePtr& ql_type);
397
  PTCollectionExpr(MemoryContext* memctx, YBLocationPtr loc, DataType literal_type);
398
399
1.35k
  virtual ~PTCollectionExpr() = default;
400
401
846
  void AddKeyValuePair(PTExprPtr key, PTExprPtr value) {
402
846
    keys_.emplace_back(key);
403
846
    values_.emplace_back(value);
404
846
  }
405
406
2.01k
  void AddElement(PTExprPtr value) {
407
2.01k
    values_.emplace_back(value);
408
2.01k
  }
409
410
  // Fill in udtype_field_values collection, copying values in accordance to UDT field order
411
  CHECKED_STATUS InitializeUDTValues(const QLTypePtr& expected_type,
412
                                     ProcessContextBase* process_context);
413
414
0
  int size() const {
415
0
    return static_cast<int>(values_.size());
416
0
  }
417
418
258
  const MCList<PTExprPtr>& keys() const {
419
258
    return keys_;
420
258
  }
421
422
995
  const MCList<PTExprPtr>& values() const {
423
995
    return values_;
424
995
  }
425
426
197
  const MCVector<PTExprPtr>& udtype_field_values() const {
427
197
    return udtype_field_values_;
428
197
  }
429
430
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override;
431
432
  // Support for shared_ptr.
433
  template<typename... TypeArgs>
434
1.39k
  inline static PTCollectionExpr::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
435
1.39k
    return MCMakeShared<PTCollectionExpr>(memctx, std::forward<TypeArgs>(args)...);
436
1.39k
  }
std::__1::shared_ptr<yb::ql::PTCollectionExpr> yb::ql::PTCollectionExpr::MakeShared<std::__1::shared_ptr<yb::ql::Location>, yb::DataType>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, yb::DataType&&)
Line
Count
Source
434
1.35k
  inline static PTCollectionExpr::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
435
1.35k
    return MCMakeShared<PTCollectionExpr>(memctx, std::forward<TypeArgs>(args)...);
436
1.35k
  }
std::__1::shared_ptr<yb::ql::PTCollectionExpr> yb::ql::PTCollectionExpr::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation> const&, std::__1::shared_ptr<yb::QLType> const&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation> const&, std::__1::shared_ptr<yb::QLType> const&)
Line
Count
Source
434
46
  inline static PTCollectionExpr::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
435
46
    return MCMakeShared<PTCollectionExpr>(memctx, std::forward<TypeArgs>(args)...);
436
46
  }
437
438
 private:
439
  MCList<PTExprPtr> keys_;
440
  MCList<PTExprPtr> values_;
441
442
  // This field will be decorated during analysis if this collection represents a user-defined type
443
  // It contains the field values in the order specified by the type (or nullptr for missing values)
444
  MCVector<PTExprPtr> udtype_field_values_;
445
};
446
447
//--------------------------------------------------------------------------------------------------
448
// Template for expression with no operand (0 input).
449
template<InternalType itype, DataType ytype, class expr_class>
450
class PTExpr0 : public expr_class {
451
 public:
452
  //------------------------------------------------------------------------------------------------
453
  // Public types.
454
  typedef MCSharedPtr<PTExpr0> SharedPtr;
455
  typedef MCSharedPtr<const PTExpr0> SharedPtrConst;
456
457
  //------------------------------------------------------------------------------------------------
458
  // Constructor and destructor.
459
  PTExpr0(MemoryContext *memctx,
460
          YBLocationPtr loc,
461
          ExprOperator op,
462
          yb::QLOperator ql_op)
463
1.01M
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
1.01M
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
1.99k
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
1.99k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)6, (yb::DataType)8, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
16
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
16
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)5, (yb::DataType)7, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
6
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
6
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)2, (yb::DataType)2, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
9
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
9
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)3, (yb::DataType)3, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
21
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
21
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)4, (yb::DataType)4, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
17
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
17
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
181k
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
181k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)9, (yb::DataType)10, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
2
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
2
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)21, (yb::DataType)23, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
1
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
1
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
4.31k
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
4.31k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, yb::ql::PTOperatorExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
664k
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
664k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
1.35k
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
1.35k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
1.03k
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
1.03k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
157k
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
157k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
109
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
109
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)18, (yb::DataType)17, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
1.01k
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
1.01k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)10, (yb::DataType)9, yb::ql::PTExpr>::PTExpr0(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator)
Line
Count
Source
463
3.18k
      : expr_class(memctx, loc, op, ql_op, itype, ytype) {
464
3.18k
  }
465
1.02M
  virtual ~PTExpr0() {
466
1.02M
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
1.97k
  virtual ~PTExpr0() {
466
1.97k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)6, (yb::DataType)8, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
16
  virtual ~PTExpr0() {
466
16
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)5, (yb::DataType)7, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
6
  virtual ~PTExpr0() {
466
6
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)2, (yb::DataType)2, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
9
  virtual ~PTExpr0() {
466
9
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)3, (yb::DataType)3, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
21
  virtual ~PTExpr0() {
466
21
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)4, (yb::DataType)4, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
17
  virtual ~PTExpr0() {
466
17
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
186k
  virtual ~PTExpr0() {
466
186k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)9, (yb::DataType)10, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
2
  virtual ~PTExpr0() {
466
2
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)21, (yb::DataType)23, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
1
  virtual ~PTExpr0() {
466
1
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
4.31k
  virtual ~PTExpr0() {
466
4.31k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, yb::ql::PTOperatorExpr>::~PTExpr0()
Line
Count
Source
465
668k
  virtual ~PTExpr0() {
466
668k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
1.35k
  virtual ~PTExpr0() {
466
1.35k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
1.00k
  virtual ~PTExpr0() {
466
1.00k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
156k
  virtual ~PTExpr0() {
466
156k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::~PTExpr0()
Line
Count
Source
465
103
  virtual ~PTExpr0() {
466
103
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)18, (yb::DataType)17, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
1.01k
  virtual ~PTExpr0() {
466
1.01k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)10, (yb::DataType)9, yb::ql::PTExpr>::~PTExpr0()
Line
Count
Source
465
3.18k
  virtual ~PTExpr0() {
466
3.18k
  }
467
468
  // Shared pointer support.
469
  template<typename... TypeArgs>
470
109
  inline static PTExpr0::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
471
109
    return MCMakeShared<PTExpr0>(memctx, std::forward<TypeArgs>(args)...);
472
109
  }
473
474
1.23M
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
1.23M
    if (this->CheckIndexColumn(sem_context)) {
477
28
      return Status::OK();
478
28
    }
479
480
1.23M
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
1.23M
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
1.23M
    return this->CheckExpectedTypeCompatibility(sem_context);
487
1.23M
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
2.83k
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
2.83k
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
2.83k
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
2.83k
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
2.83k
    return this->CheckExpectedTypeCompatibility(sem_context);
487
2.83k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, yb::ql::PTOperatorExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
778k
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
778k
    if (this->CheckIndexColumn(sem_context)) {
477
28
      return Status::OK();
478
28
    }
479
480
778k
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
778k
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
778k
    return this->CheckExpectedTypeCompatibility(sem_context);
487
778k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)6, (yb::DataType)8, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
54
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
54
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
54
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
54
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
54
    return this->CheckExpectedTypeCompatibility(sem_context);
487
54
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)5, (yb::DataType)7, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
14
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
14
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
14
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
14
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
14
    return this->CheckExpectedTypeCompatibility(sem_context);
487
14
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)2, (yb::DataType)2, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
18
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
18
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
18
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
18
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
18
    return this->CheckExpectedTypeCompatibility(sem_context);
487
18
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)3, (yb::DataType)3, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
64
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
64
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
64
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
64
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
64
    return this->CheckExpectedTypeCompatibility(sem_context);
487
64
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)4, (yb::DataType)4, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
52
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
52
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
52
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
52
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
52
    return this->CheckExpectedTypeCompatibility(sem_context);
487
52
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
285k
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
285k
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
285k
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
285k
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
285k
    return this->CheckExpectedTypeCompatibility(sem_context);
487
285k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)9, (yb::DataType)10, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
6
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
6
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
6
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
6
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
6
    return this->CheckExpectedTypeCompatibility(sem_context);
487
6
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)21, (yb::DataType)23, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
2
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
2
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
2
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
2
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
2
    return this->CheckExpectedTypeCompatibility(sem_context);
487
2
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
4.91k
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
4.91k
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
4.91k
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
4.91k
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
4.91k
    return this->CheckExpectedTypeCompatibility(sem_context);
487
4.91k
  }
Unexecuted instantiation: yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
535
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
535
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
535
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
535
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
535
    return this->CheckExpectedTypeCompatibility(sem_context);
487
535
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
162k
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
162k
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
162k
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
162k
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
162k
    return this->CheckExpectedTypeCompatibility(sem_context);
487
162k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
109
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
109
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
109
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
109
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
109
    return this->CheckExpectedTypeCompatibility(sem_context);
487
109
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)18, (yb::DataType)17, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
1.04k
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
1.04k
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
1.04k
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
1.04k
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
1.04k
    return this->CheckExpectedTypeCompatibility(sem_context);
487
1.04k
  }
yb::ql::PTExpr0<(yb::QLValuePB::ValueCase)10, (yb::DataType)9, yb::ql::PTExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
474
3.22k
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
475
    // Before traversing the expression, check if this whole expression is actually a column.
476
3.22k
    if (this->CheckIndexColumn(sem_context)) {
477
0
      return Status::OK();
478
0
    }
479
480
3.22k
    RETURN_NOT_OK(this->CheckOperator(sem_context));
481
482
    // Analyze this node operator and setup its ql_type and internal_type_.
483
3.22k
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context));
484
485
    // Make sure that this expression has valid data type.
486
3.22k
    return this->CheckExpectedTypeCompatibility(sem_context);
487
3.22k
  }
488
};
489
490
//--------------------------------------------------------------------------------------------------
491
// Template for expression with one operand (1 input).
492
template<InternalType itype, DataType ytype, class expr_class>
493
class PTExpr1 : public expr_class {
494
 public:
495
  //------------------------------------------------------------------------------------------------
496
  // Public types.
497
  typedef MCSharedPtr<PTExpr1> SharedPtr;
498
  typedef MCSharedPtr<const PTExpr1> SharedPtrConst;
499
500
  //------------------------------------------------------------------------------------------------
501
  // Constructor and destructor.
502
  PTExpr1(MemoryContext *memctx,
503
          YBLocationPtr loc,
504
          ExprOperator op,
505
          yb::QLOperator ql_op,
506
          PTExprPtr op1)
507
      : expr_class(memctx, loc, op, ql_op, itype, ytype),
508
4.55k
        op1_(op1) {
509
4.55k
  }
yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, yb::ql::PTOperatorExpr>::PTExpr1(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator, std::__1::shared_ptr<yb::ql::PTExpr>)
Line
Count
Source
508
4.55k
        op1_(op1) {
509
4.55k
  }
Unexecuted instantiation: yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr>::PTExpr1(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator, std::__1::shared_ptr<yb::ql::PTExpr>)
Unexecuted instantiation: yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::PTExpr1(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator, std::__1::shared_ptr<yb::ql::PTExpr>)
510
4.55k
  virtual ~PTExpr1() {
511
4.55k
  }
yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, yb::ql::PTOperatorExpr>::~PTExpr1()
Line
Count
Source
510
4.55k
  virtual ~PTExpr1() {
511
4.55k
  }
Unexecuted instantiation: yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr>::~PTExpr1()
Unexecuted instantiation: yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::~PTExpr1()
512
513
  // Shared pointer support.
514
  template<typename... TypeArgs>
515
4.54k
  inline static PTExpr1::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
516
4.54k
    return MCMakeShared<PTExpr1>(memctx, std::forward<TypeArgs>(args)...);
517
4.54k
  }
std::__1::shared_ptr<yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, yb::ql::PTOperatorExpr> > yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, yb::ql::PTOperatorExpr>::MakeShared<std::__1::shared_ptr<yb::ql::Location>, yb::ql::ExprOperator, yb::QLOperator, std::__1::shared_ptr<yb::ql::PTExpr>&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, yb::ql::ExprOperator&&, yb::QLOperator&&, std::__1::shared_ptr<yb::ql::PTExpr>&)
Line
Count
Source
515
4.54k
  inline static PTExpr1::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
516
4.54k
    return MCMakeShared<PTExpr1>(memctx, std::forward<TypeArgs>(args)...);
517
4.54k
  }
Unexecuted instantiation: std::__1::shared_ptr<yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr> > yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr>::MakeShared<std::__1::shared_ptr<yb::ql::Location>, yb::ql::ExprOperator, yb::QLOperator, std::__1::shared_ptr<yb::ql::PTExpr>&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, yb::ql::ExprOperator&&, yb::QLOperator&&, std::__1::shared_ptr<yb::ql::PTExpr>&)
Unexecuted instantiation: std::__1::shared_ptr<yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr> > yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::MakeShared<std::__1::shared_ptr<yb::ql::Location>, yb::ql::ExprOperator, yb::QLOperator, std::__1::shared_ptr<yb::ql::PTExpr>&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, yb::ql::ExprOperator&&, yb::QLOperator&&, std::__1::shared_ptr<yb::ql::PTExpr>&)
518
519
9.13k
  PTExprPtr op1() const override {
520
9.13k
    return op1_;
521
9.13k
  }
yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, yb::ql::PTOperatorExpr>::op1() const
Line
Count
Source
519
9.13k
  PTExprPtr op1() const override {
520
9.13k
    return op1_;
521
9.13k
  }
Unexecuted instantiation: yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr>::op1() const
Unexecuted instantiation: yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::op1() const
522
523
5.61k
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
524
    // Before traversing the expression, check if this whole expression is actually a column.
525
5.61k
    if (this->CheckIndexColumn(sem_context)) {
526
0
      return Status::OK();
527
0
    }
528
529
5.61k
    RETURN_NOT_OK(this->CheckOperator(sem_context));
530
531
    // Run semantic analysis on child nodes.
532
5.61k
    SemState sem_state(sem_context);
533
5.61k
    RETURN_NOT_OK(this->SetupSemStateForOp1(&sem_state));
534
5.61k
    RETURN_NOT_OK(op1_->Analyze(sem_context));
535
5.60k
    sem_state.ResetContextState();
536
537
    // Analyze this node operator and setup its ql_type and internal_type_.
538
5.60k
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context, op1_));
539
540
    // Make sure that it has valid data type.
541
5.60k
    return this->CheckExpectedTypeCompatibility(sem_context);
542
5.60k
  }
yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, yb::ql::PTOperatorExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
523
5.61k
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
524
    // Before traversing the expression, check if this whole expression is actually a column.
525
5.61k
    if (this->CheckIndexColumn(sem_context)) {
526
0
      return Status::OK();
527
0
    }
528
529
5.61k
    RETURN_NOT_OK(this->CheckOperator(sem_context));
530
531
    // Run semantic analysis on child nodes.
532
5.61k
    SemState sem_state(sem_context);
533
5.61k
    RETURN_NOT_OK(this->SetupSemStateForOp1(&sem_state));
534
5.61k
    RETURN_NOT_OK(op1_->Analyze(sem_context));
535
5.60k
    sem_state.ResetContextState();
536
537
    // Analyze this node operator and setup its ql_type and internal_type_.
538
5.60k
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context, op1_));
539
540
    // Make sure that it has valid data type.
541
5.60k
    return this->CheckExpectedTypeCompatibility(sem_context);
542
5.60k
  }
Unexecuted instantiation: yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr>::Analyze(yb::ql::SemContext*)
Unexecuted instantiation: yb::ql::PTExpr1<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::Analyze(yb::ql::SemContext*)
543
544
 protected:
545
  //------------------------------------------------------------------------------------------------
546
  // Operand.
547
  PTExprPtr op1_;
548
};
549
550
//--------------------------------------------------------------------------------------------------
551
// Template for expression with two operands (2 inputs).
552
template<InternalType itype, DataType ytype, class expr_class>
553
class PTExpr2 : public expr_class {
554
 public:
555
  //------------------------------------------------------------------------------------------------
556
  // Public types.
557
  typedef MCSharedPtr<PTExpr2> SharedPtr;
558
  typedef MCSharedPtr<const PTExpr2> SharedPtrConst;
559
560
  //------------------------------------------------------------------------------------------------
561
  // Constructor and destructor.
562
  PTExpr2(MemoryContext *memctx,
563
          YBLocationPtr loc,
564
          ExprOperator op,
565
          yb::QLOperator ql_op,
566
          const PTExprPtr& op1,
567
          const PTExprPtr& op2)
568
      : expr_class(memctx, loc, op, ql_op, itype, ytype),
569
        op1_(op1),
570
140k
        op2_(op2) {
571
140k
  }
yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr>::PTExpr2(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator, std::__1::shared_ptr<yb::ql::PTExpr> const&, std::__1::shared_ptr<yb::ql::PTExpr> const&)
Line
Count
Source
570
20.8k
        op2_(op2) {
571
20.8k
  }
yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::PTExpr2(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, yb::ql::ExprOperator, yb::QLOperator, std::__1::shared_ptr<yb::ql::PTExpr> const&, std::__1::shared_ptr<yb::ql::PTExpr> const&)
Line
Count
Source
570
119k
        op2_(op2) {
571
119k
  }
572
141k
  virtual ~PTExpr2() {
573
141k
  }
yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr>::~PTExpr2()
Line
Count
Source
572
21.4k
  virtual ~PTExpr2() {
573
21.4k
  }
yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::~PTExpr2()
Line
Count
Source
572
120k
  virtual ~PTExpr2() {
573
120k
  }
574
575
  // Shared pointer support.
576
  template<typename... TypeArgs>
577
141k
  inline static PTExpr2::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
578
141k
    return MCMakeShared<PTExpr2>(memctx, std::forward<TypeArgs>(args)...);
579
141k
  }
std::__1::shared_ptr<yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr> > yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr>::MakeShared<std::__1::shared_ptr<yb::ql::Location>, yb::ql::ExprOperator, yb::QLOperator, std::__1::shared_ptr<yb::ql::PTExpr>&, std::__1::shared_ptr<yb::ql::PTExpr>&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, yb::ql::ExprOperator&&, yb::QLOperator&&, std::__1::shared_ptr<yb::ql::PTExpr>&, std::__1::shared_ptr<yb::ql::PTExpr>&)
Line
Count
Source
577
21.3k
  inline static PTExpr2::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
578
21.3k
    return MCMakeShared<PTExpr2>(memctx, std::forward<TypeArgs>(args)...);
579
21.3k
  }
std::__1::shared_ptr<yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr> > yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::MakeShared<std::__1::shared_ptr<yb::ql::Location>, yb::ql::ExprOperator, yb::QLOperator, std::__1::shared_ptr<yb::ql::PTExpr>&, std::__1::shared_ptr<yb::ql::PTExpr>&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, yb::ql::ExprOperator&&, yb::QLOperator&&, std::__1::shared_ptr<yb::ql::PTExpr>&, std::__1::shared_ptr<yb::ql::PTExpr>&)
Line
Count
Source
577
120k
  inline static PTExpr2::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
578
120k
    return MCMakeShared<PTExpr2>(memctx, std::forward<TypeArgs>(args)...);
579
120k
  }
580
581
235k
  PTExprPtr op1() const override {
582
235k
    return op1_;
583
235k
  }
yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr>::op1() const
Line
Count
Source
581
147
  PTExprPtr op1() const override {
582
147
    return op1_;
583
147
  }
yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::op1() const
Line
Count
Source
581
235k
  PTExprPtr op1() const override {
582
235k
    return op1_;
583
235k
  }
584
585
4.03k
  PTExprPtr op2() const override {
586
4.03k
    return op2_;
587
4.03k
  }
yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr>::op2() const
Line
Count
Source
585
147
  PTExprPtr op2() const override {
586
147
    return op2_;
587
147
  }
yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::op2() const
Line
Count
Source
585
3.88k
  PTExprPtr op2() const override {
586
3.88k
    return op2_;
587
3.88k
  }
588
589
265k
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
590
    // Before traversing the expression, check if this whole expression is actually a column.
591
265k
    if (this->CheckIndexColumn(sem_context)) {
592
0
      return Status::OK();
593
0
    }
594
595
265k
    RETURN_NOT_OK(this->CheckOperator(sem_context));
596
597
    // Run semantic analysis on child nodes.
598
265k
    SemState sem_state(sem_context);
599
265k
    RETURN_NOT_OK(this->SetupSemStateForOp1(&sem_state));
600
265k
    RETURN_NOT_OK(op1_->Analyze(sem_context));
601
602
265k
    RETURN_NOT_OK(this->SetupSemStateForOp2(&sem_state));
603
265k
    RETURN_NOT_OK(op2_->Analyze(sem_context));
604
265k
    sem_state.ResetContextState();
605
606
    // Analyze this node operator and setup its ql_type and internal_type_.
607
265k
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context, op1_, op2_));
608
609
    // Make sure that it has valid data type.
610
264k
    return this->CheckExpectedTypeCompatibility(sem_context);
611
265k
  }
yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTLogicExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
589
33.8k
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
590
    // Before traversing the expression, check if this whole expression is actually a column.
591
33.8k
    if (this->CheckIndexColumn(sem_context)) {
592
0
      return Status::OK();
593
0
    }
594
595
33.8k
    RETURN_NOT_OK(this->CheckOperator(sem_context));
596
597
    // Run semantic analysis on child nodes.
598
33.8k
    SemState sem_state(sem_context);
599
33.8k
    RETURN_NOT_OK(this->SetupSemStateForOp1(&sem_state));
600
33.8k
    RETURN_NOT_OK(op1_->Analyze(sem_context));
601
602
33.8k
    RETURN_NOT_OK(this->SetupSemStateForOp2(&sem_state));
603
33.8k
    RETURN_NOT_OK(op2_->Analyze(sem_context));
604
33.7k
    sem_state.ResetContextState();
605
606
    // Analyze this node operator and setup its ql_type and internal_type_.
607
33.7k
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context, op1_, op2_));
608
609
    // Make sure that it has valid data type.
610
33.7k
    return this->CheckExpectedTypeCompatibility(sem_context);
611
33.7k
  }
yb::ql::PTExpr2<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, yb::ql::PTRelationExpr>::Analyze(yb::ql::SemContext*)
Line
Count
Source
589
231k
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
590
    // Before traversing the expression, check if this whole expression is actually a column.
591
231k
    if (this->CheckIndexColumn(sem_context)) {
592
0
      return Status::OK();
593
0
    }
594
595
231k
    RETURN_NOT_OK(this->CheckOperator(sem_context));
596
597
    // Run semantic analysis on child nodes.
598
231k
    SemState sem_state(sem_context);
599
231k
    RETURN_NOT_OK(this->SetupSemStateForOp1(&sem_state));
600
231k
    RETURN_NOT_OK(op1_->Analyze(sem_context));
601
602
231k
    RETURN_NOT_OK(this->SetupSemStateForOp2(&sem_state));
603
231k
    RETURN_NOT_OK(op2_->Analyze(sem_context));
604
231k
    sem_state.ResetContextState();
605
606
    // Analyze this node operator and setup its ql_type and internal_type_.
607
231k
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context, op1_, op2_));
608
609
    // Make sure that it has valid data type.
610
231k
    return this->CheckExpectedTypeCompatibility(sem_context);
611
231k
  }
612
613
 protected:
614
  //------------------------------------------------------------------------------------------------
615
  // Operand 1 and 2.
616
  PTExprPtr op1_;
617
  PTExprPtr op2_;
618
};
619
620
//--------------------------------------------------------------------------------------------------
621
// Template for expression with two operands (3 inputs).
622
template<InternalType itype, DataType ytype, class expr_class>
623
class PTExpr3 : public expr_class {
624
 public:
625
  //------------------------------------------------------------------------------------------------
626
  // Public types.
627
  typedef MCSharedPtr<PTExpr3> SharedPtr;
628
  typedef MCSharedPtr<const PTExpr3> SharedPtrConst;
629
630
  //------------------------------------------------------------------------------------------------
631
  // Constructor and destructor.
632
  PTExpr3(MemoryContext *memctx,
633
          YBLocationPtr loc,
634
          ExprOperator op,
635
          yb::QLOperator ql_op,
636
          const PTExprPtr& op1,
637
          const PTExprPtr& op2,
638
          const PTExprPtr& op3)
639
      : expr_class(memctx, loc, op, ql_op, itype, ytype),
640
        op1_(op1),
641
        op2_(op2),
642
0
        op3_(op3) {
643
0
  }
644
0
  virtual ~PTExpr3() {
645
0
  }
646
647
  // Shared pointer support.
648
  template<typename... TypeArgs>
649
0
  inline static PTExpr3::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
650
0
    return MCMakeShared<PTExpr3>(memctx, std::forward<TypeArgs>(args)...);
651
0
  }
652
653
0
  PTExprPtr op1() const override {
654
0
    return op1_;
655
0
  }
656
657
0
  PTExprPtr op2() const override {
658
0
    return op2_;
659
0
  }
660
661
0
  PTExprPtr op3() const override {
662
0
    return op3_;
663
0
  }
664
665
0
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override {
666
    // Before traversing the expression, check if this whole expression is actually a column.
667
0
    if (this->CheckIndexColumn(sem_context)) {
668
0
      return Status::OK();
669
0
    }
670
671
0
    RETURN_NOT_OK(this->CheckOperator(sem_context));
672
673
    // Run semantic analysis on child nodes.
674
0
    SemState sem_state(sem_context);
675
0
    RETURN_NOT_OK(this->SetupSemStateForOp1(&sem_state));
676
0
    RETURN_NOT_OK(op1_->Analyze(sem_context));
677
678
0
    RETURN_NOT_OK(this->SetupSemStateForOp2(&sem_state));
679
0
    RETURN_NOT_OK(op2_->Analyze(sem_context));
680
681
0
    RETURN_NOT_OK(this->SetupSemStateForOp3(&sem_state));
682
0
    RETURN_NOT_OK(op3_->Analyze(sem_context));
683
0
    sem_state.ResetContextState();
684
685
    // Analyze this node operator and setup its ql_type and internal_type_.
686
0
    RETURN_NOT_OK(this->AnalyzeOperator(sem_context, op1_, op2_, op3_));
687
688
    // Make sure that it has valid data type.
689
0
    return this->CheckExpectedTypeCompatibility(sem_context);
690
0
  }
691
692
 protected:
693
  //------------------------------------------------------------------------------------------------
694
  // Operand 1 and 2.
695
  PTExprPtr op1_;
696
  PTExprPtr op2_;
697
  PTExprPtr op3_;
698
};
699
700
//--------------------------------------------------------------------------------------------------
701
// Tree node for constants
702
//--------------------------------------------------------------------------------------------------
703
// Template for constant expressions.
704
template<typename ReturnType>
705
class PTLiteral {
706
 public:
707
351k
  explicit PTLiteral(ReturnType value) : value_(value) { }
yb::ql::PTLiteral<void*>::PTLiteral(void*)
Line
Count
Source
707
3.35k
  explicit PTLiteral(ReturnType value) : value_(value) { }
yb::ql::PTLiteral<long double>::PTLiteral(long double)
Line
Count
Source
707
16
  explicit PTLiteral(ReturnType value) : value_(value) { }
yb::ql::PTLiteral<float>::PTLiteral(float)
Line
Count
Source
707
6
  explicit PTLiteral(ReturnType value) : value_(value) { }
yb::ql::PTLiteral<short>::PTLiteral(short)
Line
Count
Source
707
9
  explicit PTLiteral(ReturnType value) : value_(value) { }
yb::ql::PTLiteral<int>::PTLiteral(int)
Line
Count
Source
707
21
  explicit PTLiteral(ReturnType value) : value_(value) { }
yb::ql::PTLiteral<long long>::PTLiteral(long long)
Line
Count
Source
707
19
  explicit PTLiteral(ReturnType value) : value_(value) { }
yb::ql::PTLiteral<unsigned int>::PTLiteral(unsigned int)
Line
Count
Source
707
1
  explicit PTLiteral(ReturnType value) : value_(value) { }
yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::PTLiteral(std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >)
Line
Count
Source
707
347k
  explicit PTLiteral(ReturnType value) : value_(value) { }
yb::ql::PTLiteral<bool>::PTLiteral(bool)
Line
Count
Source
707
1.03k
  explicit PTLiteral(ReturnType value) : value_(value) { }
708
709
357k
  virtual ~PTLiteral() { }
yb::ql::PTLiteral<void*>::~PTLiteral()
Line
Count
Source
709
3.32k
  virtual ~PTLiteral() { }
yb::ql::PTLiteral<long double>::~PTLiteral()
Line
Count
Source
709
16
  virtual ~PTLiteral() { }
yb::ql::PTLiteral<float>::~PTLiteral()
Line
Count
Source
709
6
  virtual ~PTLiteral() { }
yb::ql::PTLiteral<short>::~PTLiteral()
Line
Count
Source
709
9
  virtual ~PTLiteral() { }
yb::ql::PTLiteral<int>::~PTLiteral()
Line
Count
Source
709
21
  virtual ~PTLiteral() { }
yb::ql::PTLiteral<long long>::~PTLiteral()
Line
Count
Source
709
19
  virtual ~PTLiteral() { }
yb::ql::PTLiteral<unsigned int>::~PTLiteral()
Line
Count
Source
709
1
  virtual ~PTLiteral() { }
yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::~PTLiteral()
Line
Count
Source
709
352k
  virtual ~PTLiteral() { }
yb::ql::PTLiteral<bool>::~PTLiteral()
Line
Count
Source
709
1.00k
  virtual ~PTLiteral() { }
710
711
2.85k
  virtual ReturnType Eval() const { return value_; }
Unexecuted instantiation: yb::ql::PTLiteral<void*>::Eval() const
yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::Eval() const
Line
Count
Source
711
1.68k
  virtual ReturnType Eval() const { return value_; }
Unexecuted instantiation: yb::ql::PTLiteral<long long>::Eval() const
Unexecuted instantiation: yb::ql::PTLiteral<long double>::Eval() const
Unexecuted instantiation: yb::ql::PTLiteral<float>::Eval() const
Unexecuted instantiation: yb::ql::PTLiteral<short>::Eval() const
Unexecuted instantiation: yb::ql::PTLiteral<int>::Eval() const
Unexecuted instantiation: yb::ql::PTLiteral<unsigned int>::Eval() const
yb::ql::PTLiteral<bool>::Eval() const
Line
Count
Source
711
1.17k
  virtual ReturnType Eval() const { return value_; }
712
713
7.88k
  virtual ReturnType value() const { return value_; }
yb::ql::PTLiteral<void*>::value() const
Line
Count
Source
713
12
  virtual ReturnType value() const { return value_; }
Unexecuted instantiation: yb::ql::PTLiteral<long double>::value() const
Unexecuted instantiation: yb::ql::PTLiteral<float>::value() const
Unexecuted instantiation: yb::ql::PTLiteral<short>::value() const
Unexecuted instantiation: yb::ql::PTLiteral<int>::value() const
Unexecuted instantiation: yb::ql::PTLiteral<long long>::value() const
Unexecuted instantiation: yb::ql::PTLiteral<unsigned int>::value() const
yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::value() const
Line
Count
Source
713
7.31k
  virtual ReturnType value() const { return value_; }
yb::ql::PTLiteral<bool>::value() const
Line
Count
Source
713
552
  virtual ReturnType value() const { return value_; }
714
715
0
  virtual std::string ToQLName(int64_t value) const {
716
0
    return std::to_string(value);
717
0
  }
Unexecuted instantiation: yb::ql::PTLiteral<void*>::ToQLName(long long) const
Unexecuted instantiation: yb::ql::PTLiteral<long double>::ToQLName(long long) const
Unexecuted instantiation: yb::ql::PTLiteral<float>::ToQLName(long long) const
Unexecuted instantiation: yb::ql::PTLiteral<short>::ToQLName(long long) const
Unexecuted instantiation: yb::ql::PTLiteral<int>::ToQLName(long long) const
Unexecuted instantiation: yb::ql::PTLiteral<long long>::ToQLName(long long) const
Unexecuted instantiation: yb::ql::PTLiteral<unsigned int>::ToQLName(long long) const
Unexecuted instantiation: yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::ToQLName(long long) const
Unexecuted instantiation: yb::ql::PTLiteral<bool>::ToQLName(long long) const
718
719
0
  virtual std::string ToQLName(int32_t value) const {
720
0
    return std::to_string(value);
721
0
  }
Unexecuted instantiation: yb::ql::PTLiteral<void*>::ToQLName(int) const
Unexecuted instantiation: yb::ql::PTLiteral<long double>::ToQLName(int) const
Unexecuted instantiation: yb::ql::PTLiteral<float>::ToQLName(int) const
Unexecuted instantiation: yb::ql::PTLiteral<short>::ToQLName(int) const
Unexecuted instantiation: yb::ql::PTLiteral<int>::ToQLName(int) const
Unexecuted instantiation: yb::ql::PTLiteral<long long>::ToQLName(int) const
Unexecuted instantiation: yb::ql::PTLiteral<unsigned int>::ToQLName(int) const
Unexecuted instantiation: yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::ToQLName(int) const
Unexecuted instantiation: yb::ql::PTLiteral<bool>::ToQLName(int) const
722
723
0
  virtual std::string ToQLName(int16_t value) const {
724
0
    return std::to_string(value);
725
0
  }
Unexecuted instantiation: yb::ql::PTLiteral<void*>::ToQLName(short) const
Unexecuted instantiation: yb::ql::PTLiteral<long double>::ToQLName(short) const
Unexecuted instantiation: yb::ql::PTLiteral<float>::ToQLName(short) const
Unexecuted instantiation: yb::ql::PTLiteral<short>::ToQLName(short) const
Unexecuted instantiation: yb::ql::PTLiteral<int>::ToQLName(short) const
Unexecuted instantiation: yb::ql::PTLiteral<long long>::ToQLName(short) const
Unexecuted instantiation: yb::ql::PTLiteral<unsigned int>::ToQLName(short) const
Unexecuted instantiation: yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::ToQLName(short) const
Unexecuted instantiation: yb::ql::PTLiteral<bool>::ToQLName(short) const
726
727
0
  virtual std::string ToQLName(uint32_t value) const {
728
0
    return std::to_string(value);
729
0
  }
Unexecuted instantiation: yb::ql::PTLiteral<void*>::ToQLName(unsigned int) const
Unexecuted instantiation: yb::ql::PTLiteral<long double>::ToQLName(unsigned int) const
Unexecuted instantiation: yb::ql::PTLiteral<float>::ToQLName(unsigned int) const
Unexecuted instantiation: yb::ql::PTLiteral<short>::ToQLName(unsigned int) const
Unexecuted instantiation: yb::ql::PTLiteral<int>::ToQLName(unsigned int) const
Unexecuted instantiation: yb::ql::PTLiteral<long long>::ToQLName(unsigned int) const
Unexecuted instantiation: yb::ql::PTLiteral<unsigned int>::ToQLName(unsigned int) const
Unexecuted instantiation: yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::ToQLName(unsigned int) const
Unexecuted instantiation: yb::ql::PTLiteral<bool>::ToQLName(unsigned int) const
730
731
0
  virtual std::string ToQLName(long double value) const {
732
0
    return std::to_string(value);
733
0
  }
Unexecuted instantiation: yb::ql::PTLiteral<void*>::ToQLName(long double) const
Unexecuted instantiation: yb::ql::PTLiteral<long double>::ToQLName(long double) const
Unexecuted instantiation: yb::ql::PTLiteral<float>::ToQLName(long double) const
Unexecuted instantiation: yb::ql::PTLiteral<short>::ToQLName(long double) const
Unexecuted instantiation: yb::ql::PTLiteral<int>::ToQLName(long double) const
Unexecuted instantiation: yb::ql::PTLiteral<long long>::ToQLName(long double) const
Unexecuted instantiation: yb::ql::PTLiteral<unsigned int>::ToQLName(long double) const
Unexecuted instantiation: yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::ToQLName(long double) const
Unexecuted instantiation: yb::ql::PTLiteral<bool>::ToQLName(long double) const
734
735
0
  virtual std::string ToQLName(float value) const {
736
0
    return std::to_string(value);
737
0
  }
Unexecuted instantiation: yb::ql::PTLiteral<void*>::ToQLName(float) const
Unexecuted instantiation: yb::ql::PTLiteral<long double>::ToQLName(float) const
Unexecuted instantiation: yb::ql::PTLiteral<float>::ToQLName(float) const
Unexecuted instantiation: yb::ql::PTLiteral<short>::ToQLName(float) const
Unexecuted instantiation: yb::ql::PTLiteral<int>::ToQLName(float) const
Unexecuted instantiation: yb::ql::PTLiteral<long long>::ToQLName(float) const
Unexecuted instantiation: yb::ql::PTLiteral<unsigned int>::ToQLName(float) const
Unexecuted instantiation: yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::ToQLName(float) const
Unexecuted instantiation: yb::ql::PTLiteral<bool>::ToQLName(float) const
738
739
0
  virtual std::string ToQLName(const std::string& value) const {
740
0
    return value;
741
0
  }
Unexecuted instantiation: yb::ql::PTLiteral<void*>::ToQLName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<long double>::ToQLName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<float>::ToQLName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<short>::ToQLName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<int>::ToQLName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<long long>::ToQLName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<unsigned int>::ToQLName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::ToQLName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<bool>::ToQLName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const
742
743
0
  virtual std::string ToQLName(bool value) const {
744
0
    return std::to_string(value);
745
0
  }
Unexecuted instantiation: yb::ql::PTLiteral<void*>::ToQLName(bool) const
Unexecuted instantiation: yb::ql::PTLiteral<long double>::ToQLName(bool) const
Unexecuted instantiation: yb::ql::PTLiteral<float>::ToQLName(bool) const
Unexecuted instantiation: yb::ql::PTLiteral<short>::ToQLName(bool) const
Unexecuted instantiation: yb::ql::PTLiteral<int>::ToQLName(bool) const
Unexecuted instantiation: yb::ql::PTLiteral<long long>::ToQLName(bool) const
Unexecuted instantiation: yb::ql::PTLiteral<unsigned int>::ToQLName(bool) const
Unexecuted instantiation: yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::ToQLName(bool) const
Unexecuted instantiation: yb::ql::PTLiteral<bool>::ToQLName(bool) const
746
747
12
  virtual std::string ToQLName(void *ptr) const {
748
12
    return "NULL";
749
12
  }
yb::ql::PTLiteral<void*>::ToQLName(void*) const
Line
Count
Source
747
12
  virtual std::string ToQLName(void *ptr) const {
748
12
    return "NULL";
749
12
  }
Unexecuted instantiation: yb::ql::PTLiteral<long double>::ToQLName(void*) const
Unexecuted instantiation: yb::ql::PTLiteral<float>::ToQLName(void*) const
Unexecuted instantiation: yb::ql::PTLiteral<short>::ToQLName(void*) const
Unexecuted instantiation: yb::ql::PTLiteral<int>::ToQLName(void*) const
Unexecuted instantiation: yb::ql::PTLiteral<long long>::ToQLName(void*) const
Unexecuted instantiation: yb::ql::PTLiteral<unsigned int>::ToQLName(void*) const
Unexecuted instantiation: yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::ToQLName(void*) const
Unexecuted instantiation: yb::ql::PTLiteral<bool>::ToQLName(void*) const
750
751
3.20k
  virtual std::string ToQLName(const MCSharedPtr<MCString>& value) const {
752
3.20k
    return value->c_str();
753
3.20k
  }
Unexecuted instantiation: yb::ql::PTLiteral<void*>::ToQLName(std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<long double>::ToQLName(std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<float>::ToQLName(std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<short>::ToQLName(std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<int>::ToQLName(std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<long long>::ToQLName(std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&) const
Unexecuted instantiation: yb::ql::PTLiteral<unsigned int>::ToQLName(std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&) const
yb::ql::PTLiteral<std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >::ToQLName(std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&) const
Line
Count
Source
751
3.20k
  virtual std::string ToQLName(const MCSharedPtr<MCString>& value) const {
752
3.20k
    return value->c_str();
753
3.20k
  }
Unexecuted instantiation: yb::ql::PTLiteral<bool>::ToQLName(std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&) const
754
755
 protected:
756
  ReturnType value_;
757
};
758
759
template<InternalType itype, DataType ytype, typename ReturnType, typename LiteralType>
760
class PTExprConst : public PTExpr0<itype, ytype>,
761
                    public LiteralType {
762
 public:
763
  //------------------------------------------------------------------------------------------------
764
  // Public types.
765
  typedef MCSharedPtr<PTExprConst> SharedPtr;
766
  typedef MCSharedPtr<const PTExprConst> SharedPtrConst;
767
768
  //------------------------------------------------------------------------------------------------
769
  // Constructor and destructor.
770
  PTExprConst(MemoryContext *memctx,
771
              YBLocationPtr loc,
772
              ReturnType value)
773
      : PTExpr0<itype, ytype>(memctx, loc, ExprOperator::kConst, yb::QLOperator::QL_OP_NOOP),
774
352k
        LiteralType(value) {
775
352k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, void*, yb::ql::PTLiteral<void*> >::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, void*)
Line
Count
Source
774
1.99k
        LiteralType(value) {
775
1.99k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)6, (yb::DataType)8, long double, yb::ql::PTLiteral<long double> >::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, long double)
Line
Count
Source
774
16
        LiteralType(value) {
775
16
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)5, (yb::DataType)7, float, yb::ql::PTLiteral<float> >::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, float)
Line
Count
Source
774
6
        LiteralType(value) {
775
6
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)2, (yb::DataType)2, short, yb::ql::PTLiteral<short> >::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, short)
Line
Count
Source
774
9
        LiteralType(value) {
775
9
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)3, (yb::DataType)3, int, yb::ql::PTLiteral<int> >::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, int)
Line
Count
Source
774
21
        LiteralType(value) {
775
21
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)4, (yb::DataType)4, long long, yb::ql::PTLiteral<long long> >::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, long long)
Line
Count
Source
774
17
        LiteralType(value) {
775
17
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >)
Line
Count
Source
774
181k
        LiteralType(value) {
775
181k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)9, (yb::DataType)10, long long, yb::ql::PTLiteral<long long> >::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, long long)
Line
Count
Source
774
2
        LiteralType(value) {
775
2
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)21, (yb::DataType)23, unsigned int, yb::ql::PTLiteral<unsigned int> >::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, unsigned int)
Line
Count
Source
774
1
        LiteralType(value) {
775
1
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >)
Line
Count
Source
774
4.31k
        LiteralType(value) {
775
4.31k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, void*, yb::ql::PTLiteral<void*> >::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, void*)
Line
Count
Source
774
1.35k
        LiteralType(value) {
775
1.35k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, bool, yb::ql::PTLiteral<bool> >::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, bool)
Line
Count
Source
774
1.03k
        LiteralType(value) {
775
1.03k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >)
Line
Count
Source
774
157k
        LiteralType(value) {
775
157k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)18, (yb::DataType)17, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >)
Line
Count
Source
774
1.01k
        LiteralType(value) {
775
1.01k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)10, (yb::DataType)9, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::PTExprConst(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >)
Line
Count
Source
774
3.18k
        LiteralType(value) {
775
3.18k
  }
776
356k
  virtual ~PTExprConst() {
777
356k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, void*, yb::ql::PTLiteral<void*> >::~PTExprConst()
Line
Count
Source
776
1.97k
  virtual ~PTExprConst() {
777
1.97k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)6, (yb::DataType)8, long double, yb::ql::PTLiteral<long double> >::~PTExprConst()
Line
Count
Source
776
16
  virtual ~PTExprConst() {
777
16
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)5, (yb::DataType)7, float, yb::ql::PTLiteral<float> >::~PTExprConst()
Line
Count
Source
776
6
  virtual ~PTExprConst() {
777
6
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)2, (yb::DataType)2, short, yb::ql::PTLiteral<short> >::~PTExprConst()
Line
Count
Source
776
9
  virtual ~PTExprConst() {
777
9
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)3, (yb::DataType)3, int, yb::ql::PTLiteral<int> >::~PTExprConst()
Line
Count
Source
776
21
  virtual ~PTExprConst() {
777
21
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)4, (yb::DataType)4, long long, yb::ql::PTLiteral<long long> >::~PTExprConst()
Line
Count
Source
776
17
  virtual ~PTExprConst() {
777
17
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::~PTExprConst()
Line
Count
Source
776
187k
  virtual ~PTExprConst() {
777
187k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)9, (yb::DataType)10, long long, yb::ql::PTLiteral<long long> >::~PTExprConst()
Line
Count
Source
776
2
  virtual ~PTExprConst() {
777
2
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)21, (yb::DataType)23, unsigned int, yb::ql::PTLiteral<unsigned int> >::~PTExprConst()
Line
Count
Source
776
1
  virtual ~PTExprConst() {
777
1
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::~PTExprConst()
Line
Count
Source
776
4.31k
  virtual ~PTExprConst() {
777
4.31k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, void*, yb::ql::PTLiteral<void*> >::~PTExprConst()
Line
Count
Source
776
1.35k
  virtual ~PTExprConst() {
777
1.35k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, bool, yb::ql::PTLiteral<bool> >::~PTExprConst()
Line
Count
Source
776
1.00k
  virtual ~PTExprConst() {
777
1.00k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::~PTExprConst()
Line
Count
Source
776
156k
  virtual ~PTExprConst() {
777
156k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)18, (yb::DataType)17, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::~PTExprConst()
Line
Count
Source
776
1.01k
  virtual ~PTExprConst() {
777
1.01k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)10, (yb::DataType)9, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::~PTExprConst()
Line
Count
Source
776
3.18k
  virtual ~PTExprConst() {
777
3.18k
  }
778
779
  // Shared pointer support.
780
  template<typename... TypeArgs>
781
356k
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
356k
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
356k
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, void*, yb::ql::PTLiteral<void*> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, void*, yb::ql::PTLiteral<void*> >::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation>&, std::nullptr_t>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>&, std::nullptr_t&&)
Line
Count
Source
781
80
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
80
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
80
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)6, (yb::DataType)8, long double, yb::ql::PTLiteral<long double> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)6, (yb::DataType)8, long double, yb::ql::PTLiteral<long double> >::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation>&, int>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>&, int&&)
Line
Count
Source
781
16
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
16
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
16
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)5, (yb::DataType)7, float, yb::ql::PTLiteral<float> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)5, (yb::DataType)7, float, yb::ql::PTLiteral<float> >::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation>&, int>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>&, int&&)
Line
Count
Source
781
6
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
6
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
6
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)2, (yb::DataType)2, short, yb::ql::PTLiteral<short> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)2, (yb::DataType)2, short, yb::ql::PTLiteral<short> >::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation>&, int>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>&, int&&)
Line
Count
Source
781
9
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
9
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
9
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)3, (yb::DataType)3, int, yb::ql::PTLiteral<int> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)3, (yb::DataType)3, int, yb::ql::PTLiteral<int> >::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation>&, int>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>&, int&&)
Line
Count
Source
781
21
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
21
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
21
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)4, (yb::DataType)4, long long, yb::ql::PTLiteral<long long> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)4, (yb::DataType)4, long long, yb::ql::PTLiteral<long long> >::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation>&, int>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>&, int&&)
Line
Count
Source
781
17
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
17
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
17
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation>&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&&)
Line
Count
Source
781
23
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
23
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
23
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)9, (yb::DataType)10, long long, yb::ql::PTLiteral<long long> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)9, (yb::DataType)10, long long, yb::ql::PTLiteral<long long> >::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation>&, int>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>&, int&&)
Line
Count
Source
781
2
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
2
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
2
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)21, (yb::DataType)23, unsigned int, yb::ql::PTLiteral<unsigned int> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)21, (yb::DataType)23, unsigned int, yb::ql::PTLiteral<unsigned int> >::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation>&, int>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>&, int&&)
Line
Count
Source
781
1
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
1
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
1
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation>&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&&)
Line
Count
Source
781
2
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
2
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
2
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, void*, yb::ql::PTLiteral<void*> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, void*, yb::ql::PTLiteral<void*> >::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation>&, std::nullptr_t>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation>&, std::nullptr_t&&)
Line
Count
Source
781
1.35k
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
1.35k
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
1.35k
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, bool, yb::ql::PTLiteral<bool> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, bool, yb::ql::PTLiteral<bool> >::MakeShared<std::__1::shared_ptr<yb::ql::Location>, bool>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, bool&&)
Line
Count
Source
781
990
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
990
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
990
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::MakeShared<std::__1::shared_ptr<yb::ql::Location>, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&)
Line
Count
Source
781
185k
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
185k
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
185k
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::MakeShared<std::__1::shared_ptr<yb::ql::Location>, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&)
Line
Count
Source
781
157k
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
157k
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
157k
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::MakeShared<std::__1::shared_ptr<yb::ql::Location>, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&)
Line
Count
Source
781
4.26k
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
4.26k
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
4.26k
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::MakeShared<std::__1::shared_ptr<yb::ql::Location>, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > >(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&&)
Line
Count
Source
781
34
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
34
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
34
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)18, (yb::DataType)17, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)18, (yb::DataType)17, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::MakeShared<std::__1::shared_ptr<yb::ql::Location>, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&)
Line
Count
Source
781
1.01k
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
1.01k
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
1.01k
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, void*, yb::ql::PTLiteral<void*> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, void*, yb::ql::PTLiteral<void*> >::MakeShared<std::__1::shared_ptr<yb::ql::Location>, std::nullptr_t>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, std::nullptr_t&&)
Line
Count
Source
781
1.84k
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
1.84k
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
1.84k
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)10, (yb::DataType)9, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)10, (yb::DataType)9, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::MakeShared<std::__1::shared_ptr<yb::ql::Location>, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&)
Line
Count
Source
781
3.18k
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
3.18k
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
3.18k
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, void*, yb::ql::PTLiteral<void*> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, void*, yb::ql::PTLiteral<void*> >::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation> const&, std::nullptr_t>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation> const&, std::nullptr_t&&)
Line
Count
Source
781
3
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
3
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
3
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, bool, yb::ql::PTLiteral<bool> > > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, bool, yb::ql::PTLiteral<bool> >::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation> const&, bool>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation> const&, bool&&)
Line
Count
Source
781
43
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
43
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
43
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation> const&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation> const&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&)
Line
Count
Source
781
20
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
20
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
20
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation> const&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation> const&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&)
Line
Count
Source
781
155
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
155
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
155
  }
std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> > yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation> const&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation> const&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > > const&)
Line
Count
Source
781
19
  inline static PTExprConst::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
782
19
    return MCMakeShared<PTExprConst>(memctx, std::forward<TypeArgs>(args)...);
783
19
  }
784
785
  using PTExpr0<itype, ytype>::AnalyzeOperator;
786
461k
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
461k
    return Status::OK();
789
461k
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, void*, yb::ql::PTLiteral<void*> >::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
2.83k
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
2.83k
    return Status::OK();
789
2.83k
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)6, (yb::DataType)8, long double, yb::ql::PTLiteral<long double> >::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
54
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
54
    return Status::OK();
789
54
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)5, (yb::DataType)7, float, yb::ql::PTLiteral<float> >::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
14
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
14
    return Status::OK();
789
14
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)2, (yb::DataType)2, short, yb::ql::PTLiteral<short> >::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
18
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
18
    return Status::OK();
789
18
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)3, (yb::DataType)3, int, yb::ql::PTLiteral<int> >::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
64
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
64
    return Status::OK();
789
64
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)4, (yb::DataType)4, long long, yb::ql::PTLiteral<long long> >::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
52
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
52
    return Status::OK();
789
52
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
286k
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
286k
    return Status::OK();
789
286k
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)9, (yb::DataType)10, long long, yb::ql::PTLiteral<long long> >::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
6
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
6
    return Status::OK();
789
6
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)21, (yb::DataType)23, unsigned int, yb::ql::PTLiteral<unsigned int> >::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
2
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
2
    return Status::OK();
789
2
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
4.91k
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
4.91k
    return Status::OK();
789
4.91k
  };
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, void*, yb::ql::PTLiteral<void*> >::AnalyzeOperator(yb::ql::SemContext*)
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, bool, yb::ql::PTLiteral<bool> >::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
535
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
535
    return Status::OK();
789
535
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
162k
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
162k
    return Status::OK();
789
162k
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)18, (yb::DataType)17, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
1.04k
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
1.04k
    return Status::OK();
789
1.04k
  };
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)10, (yb::DataType)9, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::AnalyzeOperator(yb::ql::SemContext*)
Line
Count
Source
786
3.22k
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override {
787
    // Nothing to do: constant expressions should be initialized with valid data type already
788
3.22k
    return Status::OK();
789
3.22k
  };
790
791
  virtual std::string QLName(QLNameOption option = QLNameOption::kUserOriginalName)
792
3.21k
      const override {
793
3.21k
    return LiteralType::ToQLName(LiteralType::value());
794
3.21k
  }
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, void*, yb::ql::PTLiteral<void*> >::QLName(yb::QLNameOption) const
Line
Count
Source
792
12
      const override {
793
12
    return LiteralType::ToQLName(LiteralType::value());
794
12
  }
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)6, (yb::DataType)8, long double, yb::ql::PTLiteral<long double> >::QLName(yb::QLNameOption) const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)5, (yb::DataType)7, float, yb::ql::PTLiteral<float> >::QLName(yb::QLNameOption) const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)2, (yb::DataType)2, short, yb::ql::PTLiteral<short> >::QLName(yb::QLNameOption) const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)3, (yb::DataType)3, int, yb::ql::PTLiteral<int> >::QLName(yb::QLNameOption) const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)4, (yb::DataType)4, long long, yb::ql::PTLiteral<long long> >::QLName(yb::QLNameOption) const
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::QLName(yb::QLNameOption) const
Line
Count
Source
792
2.99k
      const override {
793
2.99k
    return LiteralType::ToQLName(LiteralType::value());
794
2.99k
  }
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)9, (yb::DataType)10, long long, yb::ql::PTLiteral<long long> >::QLName(yb::QLNameOption) const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)21, (yb::DataType)23, unsigned int, yb::ql::PTLiteral<unsigned int> >::QLName(yb::QLNameOption) const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::QLName(yb::QLNameOption) const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, void*, yb::ql::PTLiteral<void*> >::QLName(yb::QLNameOption) const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, bool, yb::ql::PTLiteral<bool> >::QLName(yb::QLNameOption) const
yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::QLName(yb::QLNameOption) const
Line
Count
Source
792
208
      const override {
793
208
    return LiteralType::ToQLName(LiteralType::value());
794
208
  }
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)18, (yb::DataType)17, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::QLName(yb::QLNameOption) const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)10, (yb::DataType)9, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::QLName(yb::QLNameOption) const
795
796
0
  virtual bool HaveColumnRef() const override {
797
0
    return false;
798
0
  }
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)0, void*, yb::ql::PTLiteral<void*> >::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)6, (yb::DataType)8, long double, yb::ql::PTLiteral<long double> >::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)5, (yb::DataType)7, float, yb::ql::PTLiteral<float> >::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)2, (yb::DataType)2, short, yb::ql::PTLiteral<short> >::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)3, (yb::DataType)3, int, yb::ql::PTLiteral<int> >::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)4, (yb::DataType)4, long long, yb::ql::PTLiteral<long long> >::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)7, (yb::DataType)5, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)9, (yb::DataType)10, long long, yb::ql::PTLiteral<long long> >::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)21, (yb::DataType)23, unsigned int, yb::ql::PTLiteral<unsigned int> >::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)15, (yb::DataType)11, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)0, (yb::DataType)999, void*, yb::ql::PTLiteral<void*> >::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)8, (yb::DataType)6, bool, yb::ql::PTLiteral<bool> >::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)18, (yb::DataType)17, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::HaveColumnRef() const
Unexecuted instantiation: yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)10, (yb::DataType)9, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString>::HaveColumnRef() const
799
};
800
801
// NULL constant.
802
using PTConstArg = PTExprConst<InternalType::VALUE_NOT_SET,
803
                               DataType::UNKNOWN_DATA,
804
                               void*>;
805
806
using PTNull = PTExprConst<InternalType::VALUE_NOT_SET,
807
                           DataType::NULL_VALUE_TYPE,
808
                           void*>;
809
810
// This class is used only for the dummy (meaningless) '*' such as in COUNT(*).
811
class PTStar : public PTNull {
812
 public:
813
  // Public types.
814
  typedef MCSharedPtr<PTStar> SharedPtr;
815
  typedef MCSharedPtr<const PTStar> SharedPtrConst;
816
817
  // Constructor and destructor.
818
  PTStar(MemoryContext *memctx, YBLocationPtr loc)
819
65
      : PTNull(memctx, loc, nullptr) {
820
65
  }
821
822
  // Shared pointer support.
823
  template<typename... TypeArgs>
824
65
  inline static PTStar::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
825
65
    return MCMakeShared<PTStar>(memctx, std::forward<TypeArgs>(args)...);
826
65
  }
827
828
116
  virtual std::string QLName(QLNameOption option = QLNameOption::kUserOriginalName) const override {
829
116
    return "";
830
116
  }
831
832
58
  virtual bool IsDummyStar() const override {
833
58
    return true;
834
58
  }
835
836
21
  virtual bool HaveColumnRef() const override {
837
21
    return false;
838
21
  }
839
};
840
841
// String base classes for constant expression.
842
class PTLiteralString : public PTLiteral<MCSharedPtr<MCString>> {
843
 public:
844
  explicit PTLiteralString(MCSharedPtr<MCString> value);
845
  virtual ~PTLiteralString();
846
847
  CHECKED_STATUS ToInt64(int64_t *value, bool negate) const;
848
  CHECKED_STATUS ToDouble(long double *value, bool negate) const;
849
  CHECKED_STATUS ToDecimal(util::Decimal *value, bool negate) const;
850
  CHECKED_STATUS ToDecimal(std::string *value, bool negate) const;
851
  CHECKED_STATUS ToVarInt(std::string *value, bool negate) const;
852
853
  std::string ToString() const;
854
855
  CHECKED_STATUS ToString(std::string *value) const;
856
  CHECKED_STATUS ToTimestamp(int64_t *value) const;
857
  CHECKED_STATUS ToDate(uint32_t *value) const;
858
  CHECKED_STATUS ToTime(int64_t *value) const;
859
860
  CHECKED_STATUS ToInetaddress(InetAddress *value) const;
861
};
862
863
// Class representing a json operator.
864
class PTJsonOperator : public PTExpr {
865
 public:
866
  //------------------------------------------------------------------------------------------------
867
  // Public types.
868
  typedef MCSharedPtr<PTJsonOperator> SharedPtr;
869
  typedef MCSharedPtr<const PTJsonOperator> SharedPtrConst;
870
871
  //------------------------------------------------------------------------------------------------
872
  // Constructors and destructor.
873
  PTJsonOperator(MemoryContext *memctx,
874
                 YBLocationPtr loc,
875
                 const JsonOperator& json_operator,
876
                 const PTExprPtr& arg);
877
878
  virtual ~PTJsonOperator();
879
880
  template<typename... TypeArgs>
881
  inline static PTJsonOperator::SharedPtr MakeShared(MemoryContext *memctx,
882
1.72k
                                                     TypeArgs&&... args) {
883
1.72k
    return MCMakeShared<PTJsonOperator>(memctx, std::forward<TypeArgs>(args)...);
884
1.72k
  }
885
886
  // Node semantics analysis.
887
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override;
888
889
1.55k
  const PTExprPtr& arg() const {
890
1.55k
    return arg_;
891
1.55k
  }
892
893
2.65k
  JsonOperator json_operator() const {
894
2.65k
    return json_operator_;
895
2.65k
  }
896
897
  // Selected name.
898
3.01k
  std::string QLName(QLNameOption option = QLNameOption::kUserOriginalName) const override {
899
3.01k
    std::string jquote = "'";
900
3.01k
    std::string op_name = json_operator_ == JsonOperator::JSON_OBJECT ? 
"->"1.04k
:
"->>"1.97k
;
901
3.01k
    std::string jattr = arg_->QLName(option);
902
3.01k
    if (option == QLNameOption::kMangledName) {
903
1.12k
      jattr = YcqlName::MangleJsonAttrName(jattr);
904
1.12k
    }
905
906
3.01k
    return op_name + jquote + jattr + jquote;
907
3.01k
  }
908
909
 protected:
910
  JsonOperator json_operator_;
911
  PTExprPtr arg_;
912
};
913
914
915
916
//--------------------------------------------------------------------------------------------------
917
// Tree node for logical expressions (AND, OR, NOT, ...).
918
//--------------------------------------------------------------------------------------------------
919
class PTLogicExpr : public PTExpr {
920
 public:
921
  explicit PTLogicExpr(
922
      MemoryContext *memctx,
923
      YBLocationPtr loc,
924
      ExprOperator op = ExprOperator::kNoOp,
925
      yb::QLOperator ql_op = yb::QLOperator::QL_OP_NOOP,
926
      InternalType internal_type = InternalType::VALUE_NOT_SET,
927
      DataType ql_type_id = DataType::BOOL)
928
21.2k
      : PTExpr(memctx, loc, op, ql_op, internal_type, ql_type_id) {
929
21.2k
  }
930
931
  // Setup states before analyzing operand.
932
  virtual CHECKED_STATUS SetupSemStateForOp1(SemState *sem_state) override;
933
  virtual CHECKED_STATUS SetupSemStateForOp2(SemState *sem_state) override;
934
935
  // Analyze this operator.
936
  using PTExpr::AnalyzeOperator;
937
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context,
938
                                         PTExprPtr op1) override;
939
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context,
940
                                         PTExprPtr op1,
941
                                         PTExprPtr op2) override;
942
};
943
944
//--------------------------------------------------------------------------------------------------
945
// Tree node for relational expressions (=, !=, >, ...).
946
//--------------------------------------------------------------------------------------------------
947
class PTRelationExpr : public PTExpr {
948
 public:
949
  explicit PTRelationExpr(
950
      MemoryContext *memctx,
951
      YBLocationPtr loc,
952
      ExprOperator op = ExprOperator::kNoOp,
953
      yb::QLOperator ql_op = yb::QLOperator::QL_OP_NOOP,
954
      InternalType internal_type = InternalType::VALUE_NOT_SET,
955
      DataType ql_type_id = DataType::BOOL)
956
118k
      : PTExpr(memctx, loc, op, ql_op, internal_type, ql_type_id) {
957
118k
  }
958
959
  // Setup states before analyzing operands.
960
  virtual CHECKED_STATUS SetupSemStateForOp1(SemState *sem_state) override;
961
  virtual CHECKED_STATUS SetupSemStateForOp2(SemState *sem_state) override;
962
  virtual CHECKED_STATUS SetupSemStateForOp3(SemState *sem_state) override;
963
964
  // Analyze this operator after all operands were analyzed.
965
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override;
966
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context,
967
                                         PTExprPtr op1) override;
968
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context,
969
                                         PTExprPtr op1,
970
                                         PTExprPtr op2) override;
971
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context,
972
                                         PTExprPtr op1,
973
                                         PTExprPtr op2,
974
                                         PTExprPtr op3) override;
975
  std::string QLName(QLNameOption option = QLNameOption::kUserOriginalName) const override;
976
};
977
978
//--------------------------------------------------------------------------------------------------
979
// Tree node for operators.
980
// - Currently, we only have unary '-'.
981
// - Generally, we only need PTOperator for performance purposes. All operations can be supported
982
//   by adding it to builtin library, but that method is less efficient and PTOperator.
983
//--------------------------------------------------------------------------------------------------
984
class PTOperatorExpr : public PTExpr {
985
 public:
986
  explicit PTOperatorExpr(
987
      MemoryContext *memctx,
988
      YBLocationPtr loc,
989
      ExprOperator op = ExprOperator::kNoOp,
990
      yb::QLOperator ql_op = yb::QLOperator::QL_OP_NOOP,
991
      InternalType internal_type = InternalType::VALUE_NOT_SET,
992
      DataType ql_type_id = DataType::UNKNOWN_DATA)
993
673k
      : PTExpr(memctx, loc, op, ql_op, internal_type, ql_type_id) {
994
673k
  }
995
996
  // Setup states before analyzing operands.
997
  virtual CHECKED_STATUS SetupSemStateForOp1(SemState *sem_state) override;
998
999
  // Analyze this operator after all operands were analyzed.
1000
  using PTExpr::AnalyzeOperator;
1001
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context, PTExprPtr op1) override;
1002
};
1003
1004
//--------------------------------------------------------------------------------------------------
1005
// Column Reference. The datatype of this expression would need to be resolved by the analyzer.
1006
class PTRef : public PTOperator0 {
1007
 public:
1008
  //------------------------------------------------------------------------------------------------
1009
  // Public types.
1010
  typedef MCSharedPtr<PTRef> SharedPtr;
1011
  typedef MCSharedPtr<const PTRef> SharedPtrConst;
1012
1013
  //------------------------------------------------------------------------------------------------
1014
  // Constructor and destructor.
1015
  PTRef(MemoryContext *memctx,
1016
        YBLocationPtr loc,
1017
        const PTQualifiedNamePtr& name);
1018
  virtual ~PTRef();
1019
1020
  // Support for shared_ptr.
1021
  template<typename... TypeArgs>
1022
513k
  inline static PTRef::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
1023
513k
    return MCMakeShared<PTRef>(memctx, std::forward<TypeArgs>(args)...);
1024
513k
  }
std::__1::shared_ptr<yb::ql::PTRef> yb::ql::PTRef::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation> const&, std::__1::shared_ptr<yb::ql::PTQualifiedName>&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation> const&, std::__1::shared_ptr<yb::ql::PTQualifiedName>&)
Line
Count
Source
1022
2.66k
  inline static PTRef::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
1023
2.66k
    return MCMakeShared<PTRef>(memctx, std::forward<TypeArgs>(args)...);
1024
2.66k
  }
std::__1::shared_ptr<yb::ql::PTRef> yb::ql::PTRef::MakeShared<std::__1::shared_ptr<yb::ql::Location>, std::__1::shared_ptr<yb::ql::PTQualifiedName>&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, std::__1::shared_ptr<yb::ql::PTQualifiedName>&)
Line
Count
Source
1022
510k
  inline static PTRef::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
1023
510k
    return MCMakeShared<PTRef>(memctx, std::forward<TypeArgs>(args)...);
1024
510k
  }
std::__1::shared_ptr<yb::ql::PTRef> yb::ql::PTRef::MakeShared<std::__1::shared_ptr<yb::ql::YBLocation> const&, std::__1::shared_ptr<yb::ql::PTQualifiedName> const&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::YBLocation> const&, std::__1::shared_ptr<yb::ql::PTQualifiedName> const&)
Line
Count
Source
1022
14
  inline static PTRef::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
1023
14
    return MCMakeShared<PTRef>(memctx, std::forward<TypeArgs>(args)...);
1024
14
  }
1025
1026
  // Node semantics analysis.
1027
  void PrintSemanticAnalysisResult(SemContext *sem_context);
1028
1029
  using PTOperatorExpr::AnalyzeOperator;
1030
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override;
1031
1032
  // Add the name of column that is being referenced to output parameter.
1033
11.8k
  void CollectReferencedIndexColnames(MCSet<std::string> *col_names) const override {
1034
11.8k
    col_names->insert(QLName(QLNameOption::kMangledName));
1035
11.8k
  }
1036
1037
  // Selected name.
1038
  std::string QLName(QLNameOption option = QLNameOption::kUserOriginalName) const override;
1039
1040
  // Access function for name.
1041
9.23k
  const PTQualifiedNamePtr& name() const {
1042
9.23k
    return name_;
1043
9.23k
  }
1044
1045
  // Construct bind variable name from the name of this column.
1046
  const MCSharedPtr<MCString>& bindvar_name() const;
1047
1048
  // Access function for descriptor.
1049
859k
  const ColumnDesc *desc() const {
1050
859k
    return desc_;
1051
859k
  }
1052
1053
  // Node type.
1054
795k
  virtual TreeNodeOpcode opcode() const override {
1055
795k
    return TreeNodeOpcode::kPTRef;
1056
795k
  }
1057
1058
  // Analyze LHS expression.
1059
  virtual CHECKED_STATUS CheckLhsExpr(SemContext *sem_context) override;
1060
1061
 private:
1062
  PTQualifiedNamePtr name_;
1063
1064
  // Fields that should be resolved by semantic analysis.
1065
  const ColumnDesc *desc_;
1066
};
1067
1068
// A json column with json operators applied to the column.
1069
class PTJsonColumnWithOperators : public PTOperator0 {
1070
 public:
1071
  //------------------------------------------------------------------------------------------------
1072
  // Public types.
1073
  typedef MCSharedPtr<PTJsonColumnWithOperators> SharedPtr;
1074
  typedef MCSharedPtr<const PTJsonColumnWithOperators> SharedPtrConst;
1075
1076
  //------------------------------------------------------------------------------------------------
1077
  // Constructor and destructor.
1078
  PTJsonColumnWithOperators(MemoryContext *memctx,
1079
                            YBLocationPtr loc,
1080
                            const PTQualifiedNamePtr& name,
1081
                            const PTExprListNode::SharedPtr& operators);
1082
  virtual ~PTJsonColumnWithOperators();
1083
1084
  // Support for shared_ptr.
1085
  template<typename... TypeArgs>
1086
  inline static PTJsonColumnWithOperators::SharedPtr MakeShared(MemoryContext *memctx,
1087
878
                                                          TypeArgs&&... args) {
1088
878
    return MCMakeShared<PTJsonColumnWithOperators>(memctx, std::forward<TypeArgs>(args)...);
1089
878
  }
std::__1::shared_ptr<yb::ql::PTJsonColumnWithOperators> yb::ql::PTJsonColumnWithOperators::MakeShared<std::__1::shared_ptr<yb::ql::Location>, std::__1::shared_ptr<yb::ql::PTQualifiedName> const&, std::__1::shared_ptr<yb::ql::TreeListNode<yb::ql::PTExpr> >&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, std::__1::shared_ptr<yb::ql::PTQualifiedName> const&, std::__1::shared_ptr<yb::ql::TreeListNode<yb::ql::PTExpr> >&)
Line
Count
Source
1087
877
                                                          TypeArgs&&... args) {
1088
877
    return MCMakeShared<PTJsonColumnWithOperators>(memctx, std::forward<TypeArgs>(args)...);
1089
877
  }
std::__1::shared_ptr<yb::ql::PTJsonColumnWithOperators> yb::ql::PTJsonColumnWithOperators::MakeShared<std::__1::shared_ptr<yb::ql::Location>, std::__1::shared_ptr<yb::ql::PTQualifiedName>&, std::__1::shared_ptr<yb::ql::TreeListNode<yb::ql::PTExpr> >&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, std::__1::shared_ptr<yb::ql::PTQualifiedName>&, std::__1::shared_ptr<yb::ql::TreeListNode<yb::ql::PTExpr> >&)
Line
Count
Source
1087
1
                                                          TypeArgs&&... args) {
1088
1
    return MCMakeShared<PTJsonColumnWithOperators>(memctx, std::forward<TypeArgs>(args)...);
1089
1
  }
1090
1091
  using PTOperatorExpr::AnalyzeOperator;
1092
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override;
1093
1094
  // Access function for name.
1095
0
  const PTQualifiedNamePtr& name() const {
1096
0
    return name_;
1097
0
  }
1098
1099
  // Add the name of this JSONB expression to output parameter.
1100
659
  void CollectReferencedIndexColnames(MCSet<std::string> *col_names) const override {
1101
659
    col_names->insert(QLName(QLNameOption::kMangledName));
1102
659
  }
1103
1104
  // Selected name.
1105
  std::string QLName(QLNameOption option = QLNameOption::kUserOriginalName) const override;
1106
1107
945
  const PTExprListNode::SharedPtr& operators() const {
1108
945
    return operators_;
1109
945
  }
1110
1111
  // Access function for descriptor.
1112
1.70k
  const ColumnDesc *desc() const {
1113
1.70k
    return desc_;
1114
1.70k
  }
1115
1116
  // Node type.
1117
1.75k
  virtual TreeNodeOpcode opcode() const override {
1118
1.75k
    return TreeNodeOpcode::kPTJsonOp;
1119
1.75k
  }
1120
1121
  // Analyze LHS expression.
1122
  CHECKED_STATUS CheckLhsExpr(SemContext *sem_context) override;
1123
1124
 private:
1125
  PTQualifiedNamePtr name_;
1126
  PTExprListNode::SharedPtr operators_;
1127
1128
  // Fields that should be resolved by semantic analysis.
1129
  const ColumnDesc *desc_ = nullptr;
1130
};
1131
1132
// SubColumn Reference. The datatype of this expression would need to be resolved by the analyzer.
1133
class PTSubscriptedColumn : public PTOperator0 {
1134
 public:
1135
  //------------------------------------------------------------------------------------------------
1136
  // Public types.
1137
  typedef MCSharedPtr<PTSubscriptedColumn> SharedPtr;
1138
  typedef MCSharedPtr<const PTSubscriptedColumn> SharedPtrConst;
1139
1140
  //------------------------------------------------------------------------------------------------
1141
  // Constructor and destructor.
1142
  PTSubscriptedColumn(MemoryContext *memctx,
1143
        YBLocationPtr loc,
1144
        const PTQualifiedNamePtr& name,
1145
        const PTExprListNode::SharedPtr& args);
1146
  virtual ~PTSubscriptedColumn();
1147
1148
  // Support for shared_ptr.
1149
  template<typename... TypeArgs>
1150
  inline static PTSubscriptedColumn::SharedPtr MakeShared(MemoryContext *memctx,
1151
201
                                                          TypeArgs&&... args) {
1152
201
    return MCMakeShared<PTSubscriptedColumn>(memctx, std::forward<TypeArgs>(args)...);
1153
201
  }
1154
1155
  // Node semantics analysis.
1156
  void PrintSemanticAnalysisResult(SemContext *sem_context);
1157
1158
  using PTOperatorExpr::AnalyzeOperator;
1159
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override;
1160
1161
  // Access function for name.
1162
0
  const PTQualifiedNamePtr& name() const {
1163
0
    return name_;
1164
0
  }
1165
1166
  // Access function for name.
1167
313
  const PTExprListNode::SharedPtr& args() const {
1168
313
    return args_;
1169
313
  }
1170
1171
  // Construct bind variable name from the name of this column.
1172
  const MCSharedPtr<MCString>& bindvar_name() const;
1173
1174
  // Access function for descriptor.
1175
827
  const ColumnDesc *desc() const {
1176
827
    return desc_;
1177
827
  }
1178
1179
  // Node type.
1180
0
  virtual TreeNodeOpcode opcode() const override {
1181
0
    return TreeNodeOpcode::kPTSubscript;
1182
0
  }
1183
1184
  // Analyze LHS expression.
1185
  virtual CHECKED_STATUS CheckLhsExpr(SemContext *sem_context) override;
1186
1187
 private:
1188
  PTQualifiedNamePtr name_;
1189
  PTExprListNode::SharedPtr args_;
1190
1191
  // Fields that should be resolved by semantic analysis.
1192
  const ColumnDesc *desc_;
1193
};
1194
1195
//--------------------------------------------------------------------------------------------------
1196
// Reference to all columns of all selected tables.
1197
class PTAllColumns : public PTOperator0 {
1198
 public:
1199
  //------------------------------------------------------------------------------------------------
1200
  // Public types.
1201
  typedef MCSharedPtr<PTAllColumns> SharedPtr;
1202
  typedef MCSharedPtr<const PTAllColumns> SharedPtrConst;
1203
1204
  //------------------------------------------------------------------------------------------------
1205
  // Constructor and destructor.
1206
  PTAllColumns(MemoryContext *memctx, YBLocationPtr loc);
1207
  virtual ~PTAllColumns();
1208
1209
  // Support for shared_ptr.
1210
  template<typename... TypeArgs>
1211
156k
  inline static PTAllColumns::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
1212
156k
    return MCMakeShared<PTAllColumns>(memctx, std::forward<TypeArgs>(args)...);
1213
156k
  }
1214
1215
  using PTOperatorExpr::AnalyzeOperator;
1216
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context) override;
1217
1218
  // Node type.
1219
7.54M
  virtual TreeNodeOpcode opcode() const override {
1220
7.54M
    return TreeNodeOpcode::kPTAllColumns;
1221
7.54M
  }
1222
1223
0
  std::string QLName(QLNameOption option = QLNameOption::kUserOriginalName) const override {
1224
    // We should not get here as '*' should have been converted into a list of column name before
1225
    // the selected tuple is constructed and described.
1226
0
    VLOG(3) << "Calling QLName for '*' is not expected";
1227
0
    return "*";
1228
0
  }
1229
1230
7.48M
  const MCVector<ColumnDesc>& columns() const {
1231
7.48M
    return columns_;
1232
7.48M
  }
1233
1234
 private:
1235
  // Fields that should be resolved by semantic analysis.
1236
  MCVector<ColumnDesc> columns_;
1237
};
1238
1239
//--------------------------------------------------------------------------------------------------
1240
// Expression alias - Name of an expression including reference to column.
1241
class PTExprAlias : public PTOperator1 {
1242
 public:
1243
  //------------------------------------------------------------------------------------------------
1244
  // Public types.
1245
  typedef MCSharedPtr<PTExprAlias> SharedPtr;
1246
  typedef MCSharedPtr<const PTExprAlias> SharedPtrConst;
1247
1248
  //------------------------------------------------------------------------------------------------
1249
  // Constructor and destructor.
1250
  PTExprAlias(MemoryContext *memctx,
1251
              YBLocationPtr loc,
1252
              const PTExprPtr& expr,
1253
              const MCSharedPtr<MCString>& alias);
1254
  virtual ~PTExprAlias();
1255
1256
  // Support for shared_ptr.
1257
  template<typename... TypeArgs>
1258
2
  inline static PTExprAlias::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
1259
2
    return MCMakeShared<PTExprAlias>(memctx, std::forward<TypeArgs>(args)...);
1260
2
  }
1261
1262
  virtual CHECKED_STATUS SetupSemStateForOp1(SemState *sem_state) override;
1263
1264
  using PTOperatorExpr::AnalyzeOperator;
1265
  virtual CHECKED_STATUS AnalyzeOperator(SemContext *sem_context, PTExprPtr op1) override;
1266
1267
4
  std::string QLName(QLNameOption option = QLNameOption::kUserOriginalName) const override {
1268
4
    return alias_->c_str();
1269
4
  }
1270
1271
  // Alias result set column type in QL format.
1272
2
  virtual void rscol_type_PB(QLTypePB *pb_type) const override {
1273
2
    return op1_->rscol_type_PB(pb_type);
1274
2
  }
1275
1276
  // Predicate for calls to aggregate functions.
1277
2
  virtual bool IsAggregateCall() const override {
1278
2
    return (op1_ != nullptr && op1_->IsAggregateCall());
1279
2
  }
1280
1
  virtual yb::bfql::TSOpcode aggregate_opcode() const override {
1281
1
    DCHECK
(op1_ != nullptr) << "Reading aggregate opcode from a NULL operator"0
;
1282
1
    return op1_->aggregate_opcode();
1283
1
  }
1284
1285
 private:
1286
  MCSharedPtr<MCString> alias_;
1287
};
1288
1289
//--------------------------------------------------------------------------------------------------
1290
// Bind variable. The datatype of this expression would need to be resolved by the analyzer.
1291
class PTBindVar : public PTExpr {
1292
 public:
1293
  //------------------------------------------------------------------------------------------------
1294
  // Public types.
1295
  typedef MCSharedPtr<PTBindVar> SharedPtr;
1296
  typedef MCSharedPtr<const PTBindVar> SharedPtrConst;
1297
1298
  //------------------------------------------------------------------------------------------------
1299
  // Constructor and destructor.
1300
  PTBindVar(MemoryContext *memctx,
1301
            YBLocationPtr loc,
1302
            const MCSharedPtr<MCString>& name = nullptr);
1303
  PTBindVar(MemoryContext *memctx,
1304
            YBLocationPtr loc,
1305
            PTConstVarInt::SharedPtr user_pos);
1306
  virtual ~PTBindVar();
1307
1308
  // Support for shared_ptr.
1309
  template<typename... TypeArgs>
1310
15.4k
  inline static PTBindVar::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
1311
15.4k
    return MCMakeShared<PTBindVar>(memctx, std::forward<TypeArgs>(args)...);
1312
15.4k
  }
std::__1::shared_ptr<yb::ql::PTBindVar> yb::ql::PTBindVar::MakeShared<std::__1::shared_ptr<yb::ql::Location> >(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&)
Line
Count
Source
1310
15.1k
  inline static PTBindVar::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
1311
15.1k
    return MCMakeShared<PTBindVar>(memctx, std::forward<TypeArgs>(args)...);
1312
15.1k
  }
std::__1::shared_ptr<yb::ql::PTBindVar> yb::ql::PTBindVar::MakeShared<std::__1::shared_ptr<yb::ql::Location>, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >&)
Line
Count
Source
1310
339
  inline static PTBindVar::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
1311
339
    return MCMakeShared<PTBindVar>(memctx, std::forward<TypeArgs>(args)...);
1312
339
  }
std::__1::shared_ptr<yb::ql::PTBindVar> yb::ql::PTBindVar::MakeShared<std::__1::shared_ptr<yb::ql::Location>, std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> >&>(yb::internal::ArenaBase<yb::internal::ArenaTraits>*, std::__1::shared_ptr<yb::ql::Location>&&, std::__1::shared_ptr<yb::ql::PTExprConst<(yb::QLValuePB::ValueCase)16, (yb::DataType)12, std::__1::shared_ptr<std::__1::basic_string<char, std::__1::char_traits<char>, yb::internal::ArenaAllocatorBase<char, yb::internal::ArenaTraits> > >, yb::ql::PTLiteralString> >&)
Line
Count
Source
1310
24
  inline static PTBindVar::SharedPtr MakeShared(MemoryContext *memctx, TypeArgs&&... args) {
1311
24
    return MCMakeShared<PTBindVar>(memctx, std::forward<TypeArgs>(args)...);
1312
24
  }
1313
1314
  // Node semantics analysis.
1315
  virtual CHECKED_STATUS Analyze(SemContext *sem_context) override;
1316
  void PrintSemanticAnalysisResult(SemContext *sem_context);
1317
1318
  // Access functions for position.
1319
18.7M
  int64_t pos() const {
1320
18.7M
    return *pos_;
1321
18.7M
  }
1322
15.5k
  void set_pos(const int64_t pos) {
1323
15.5k
    pos_ = pos;
1324
15.5k
  }
1325
15.4k
  bool is_unset_pos() const {
1326
15.4k
    return !pos_;
1327
15.4k
  }
1328
1329
  // Access functions for name.
1330
50.4M
  const MCSharedPtr<MCString>& name() const {
1331
50.4M
    return name_;
1332
50.4M
  }
1333
1334
  // Access function for hash column if available.
1335
21.1k
  const ColumnDesc *hash_col() const {
1336
21.1k
    return hash_col_;
1337
21.1k
  }
1338
1339
  // Node type.
1340
1
  virtual TreeNodeOpcode opcode() const override {
1341
1
    return TreeNodeOpcode::kPTBindVar;
1342
1
  }
1343
1344
12
  std::string QLName(QLNameOption option = QLNameOption::kUserOriginalName) const override {
1345
12
    std::string qlname = (user_pos_) ? 
user_pos_->ToString()2
:
name()->c_str()10
;
1346
12
    return ":" +  qlname;
1347
12
  }
1348
1349
  // Access to op_.
1350
18.7M
  virtual ExprOperator expr_op() const override {
1351
18.7M
    return ExprOperator::kBindVar;
1352
18.7M
  }
1353
1354
  // The name Cassandra uses for the virtual column when binding LIMIT clause
1355
529
  static const std::string& limit_bindvar_name() {
1356
529
    static std::string limit_bindvar_name = "[limit]";
1357
529
    return limit_bindvar_name;
1358
529
  }
1359
1360
  // The name Cassandra uses for the virtual column when binding OFFSET clause
1361
399
  static const std::string& offset_bindvar_name() {
1362
399
    static std::string offset_bindvar_name = "[offset]";
1363
399
    return offset_bindvar_name;
1364
399
  }
1365
1366
  // The name Cassandra uses for the virtual column when binding USING TTL clause
1367
108
  static const std::string& ttl_bindvar_name() {
1368
108
    static std::string ttl_bindvar_name = "[ttl]";
1369
108
    return ttl_bindvar_name;
1370
108
  }
1371
1372
  // The name Cassandra uses for the virtual column when binding USING TIMESTAMP clause
1373
94
  static const std::string& timestamp_bindvar_name() {
1374
94
    static std::string timestamp_bindvar_name = "[timestamp]";
1375
94
    return timestamp_bindvar_name;
1376
94
  }
1377
1378
  // The name Cassandra uses for the virtual column when binding the partition key (i.e. with token)
1379
346
  static const std::string& token_bindvar_name() {
1380
346
    static std::string token_bindvar_name = "partition key token";
1381
346
    return token_bindvar_name;
1382
346
  }
1383
1384
  // Name used for binding the 'partition_hash()' builtin function.
1385
30
  static const std::string& partition_hash_bindvar_name() {
1386
30
    static std::string partition_hash_bindvar_name = "[partition_hash]";
1387
30
    return partition_hash_bindvar_name;
1388
30
  }
1389
1390
  // The name Cassandra uses for binding the args of a builtin system call e.g. "token(?, ?)"
1391
  static std::string bcall_arg_bindvar_name(
1392
      const std::string& bcall_name, size_t arg_position);
1393
1394
  // The name Cassandra uses for binding the collection elements.
1395
  static std::string coll_bindvar_name(const std::string& col_name);
1396
1397
  // The name for binding the JSON attributes.
1398
  static std::string json_bindvar_name(const std::string& col_name);
1399
1400
  // Use the binding name by default (if no other cases applicable).
1401
291
  static const std::string& default_bindvar_name() {
1402
291
    static std::string default_bindvar_name = "expr";
1403
291
    return default_bindvar_name;
1404
291
  }
1405
1406
 private:
1407
  // 0-based position.
1408
  PTConstVarInt::SharedPtr user_pos_; // pos used for parsing.
1409
  boost::optional<int64_t> pos_; // pos after parsing is done.
1410
  // Variable name.
1411
  MCSharedPtr<MCString> name_;
1412
  // Hash column descriptor.
1413
  const ColumnDesc *hash_col_ = nullptr;
1414
};
1415
1416
}  // namespace ql
1417
}  // namespace yb
1418
1419
#endif  // YB_YQL_CQL_QL_PTREE_PT_EXPR_H_