/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.calcite.sql.validate;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import org.apache.calcite.linq4j.Ord;
import org.apache.calcite.linq4j.function.Function2;
import org.apache.calcite.linq4j.function.Functions;
import org.apache.calcite.plan.RelOptTable;
import org.apache.calcite.plan.RelOptUtil;
import org.apache.calcite.prepare.Prepare;
import org.apache.calcite.rel.type.DynamicRecordType;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rel.type.RelDataTypeFactory;
import org.apache.calcite.rel.type.RelDataTypeField;
import org.apache.calcite.rel.type.RelDataTypeSystem;
import org.apache.calcite.rel.type.RelRecordType;
import org.apache.calcite.rex.RexNode;
import org.apache.calcite.rex.RexPatternFieldRef;
import org.apache.calcite.rex.RexVisitor;
import org.apache.calcite.runtime.CalciteContextException;
import org.apache.calcite.runtime.CalciteException;
import org.apache.calcite.runtime.Feature;
import org.apache.calcite.runtime.Resources;
import org.apache.calcite.schema.ColumnStrategy;
import org.apache.calcite.schema.Table;
import org.apache.calcite.schema.impl.ModifiableViewTable;
import org.apache.calcite.sql.JoinConditionType;
import org.apache.calcite.sql.JoinType;
import org.apache.calcite.sql.SqlAccessEnum;
import org.apache.calcite.sql.SqlAccessType;
import org.apache.calcite.sql.SqlAggFunction;
import org.apache.calcite.sql.SqlBasicCall;
import org.apache.calcite.sql.SqlCall;
import org.apache.calcite.sql.SqlCallBinding;
import org.apache.calcite.sql.SqlDataTypeSpec;
import org.apache.calcite.sql.SqlDelete;
import org.apache.calcite.sql.SqlDynamicParam;
import org.apache.calcite.sql.SqlExplain;
import org.apache.calcite.sql.SqlFunction;
import org.apache.calcite.sql.SqlFunctionCategory;
import org.apache.calcite.sql.SqlIdentifier;
import org.apache.calcite.sql.SqlInsert;
import org.apache.calcite.sql.SqlIntervalLiteral;
import org.apache.calcite.sql.SqlIntervalQualifier;
import org.apache.calcite.sql.SqlJoin;
import org.apache.calcite.sql.SqlKind;
import org.apache.calcite.sql.SqlLiteral;
import org.apache.calcite.sql.SqlMatchRecognize;
import org.apache.calcite.sql.SqlMerge;
import org.apache.calcite.sql.SqlNode;
import org.apache.calcite.sql.SqlNodeList;
import org.apache.calcite.sql.SqlOperator;
import org.apache.calcite.sql.SqlOperatorTable;
import org.apache.calcite.sql.SqlOrderBy;
import org.apache.calcite.sql.SqlPivot;
import org.apache.calcite.sql.SqlSampleSpec;
import org.apache.calcite.sql.SqlSelect;
import org.apache.calcite.sql.SqlSelectKeyword;
import org.apache.calcite.sql.SqlSnapshot;
import org.apache.calcite.sql.SqlSyntax;
import org.apache.calcite.sql.SqlTableFunction;
import org.apache.calcite.sql.SqlUnresolvedFunction;
import org.apache.calcite.sql.SqlUpdate;
import org.apache.calcite.sql.SqlUtil;
import org.apache.calcite.sql.SqlWindow;
import org.apache.calcite.sql.SqlWindowTableFunction;
import org.apache.calcite.sql.SqlWith;
import org.apache.calcite.sql.SqlWithItem;
import org.apache.calcite.sql.fun.SqlCase;
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
import org.apache.calcite.sql.parser.SqlParserPos;
import org.apache.calcite.sql.type.AssignableOperandTypeChecker;
import org.apache.calcite.sql.type.OperandTypes;
import org.apache.calcite.sql.type.ReturnTypes;
import org.apache.calcite.sql.type.SqlOperandTypeChecker;
import org.apache.calcite.sql.type.SqlOperandTypeInference;
import org.apache.calcite.sql.type.SqlTypeCoercionRule;
import org.apache.calcite.sql.type.SqlTypeName;
import org.apache.calcite.sql.type.SqlTypeUtil;
import org.apache.calcite.sql.util.IdPair;
import org.apache.calcite.sql.util.SqlBasicVisitor;
import org.apache.calcite.sql.util.SqlShuttle;
import org.apache.calcite.sql.util.SqlVisitor;
import org.apache.calcite.sql.validate.implicit.TypeCoercion;
import org.apache.calcite.util.BitString;
import org.apache.calcite.util.Bug;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.ImmutableIntList;
import org.apache.calcite.util.ImmutableNullableList;
import org.apache.calcite.util.Litmus;
import org.apache.calcite.util.Pair;
import org.apache.calcite.util.Static;
import org.apache.calcite.util.Util;
import org.apache.calcite.util.trace.CalciteTrace;
import org.slf4j.Logger;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.AbstractList;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Deque;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.function.Supplier;
import java.util.function.UnaryOperator;
import java.util.stream.Collectors;
import static org.apache.calcite.sql.SqlUtil.stripAs;
import static org.apache.calcite.util.Static.RESOURCE;
/**
* Default implementation of {@link SqlValidator}, the class was copied over because of
* CALCITE-4554.
*
* <p>Lines 4697 ~ 4716, Flink enables TIMESTAMP and TIMESTAMP_LTZ for system time period
* specification type.
*
* <p>Lines 5034 ~ 5038, Flink enables TIMESTAMP and TIMESTAMP_LTZ for first orderBy column in
* matchRecognize.
*/
public class SqlValidatorImpl implements SqlValidatorWithHints {
// ~ Static fields/initializers ---------------------------------------------
public static final Logger TRACER = CalciteTrace.PARSER_LOGGER;
/** Alias generated for the source table when rewriting UPDATE to MERGE. */
public static final String UPDATE_SRC_ALIAS = "SYS$SRC";
/**
* Alias generated for the target table when rewriting UPDATE to MERGE if no alias was specified
* by the user.
*/
public static final String UPDATE_TGT_ALIAS = "SYS$TGT";
/** Alias prefix generated for source columns when rewriting UPDATE to MERGE. */
public static final String UPDATE_ANON_PREFIX = "SYS$ANON";
// ~ Instance fields --------------------------------------------------------
private final SqlOperatorTable opTab;
final SqlValidatorCatalogReader catalogReader;
/**
* Maps {@link SqlParserPos} strings to the {@link SqlIdentifier} identifier objects at these
* positions.
*/
protected final Map<String, IdInfo> idPositions = new HashMap<>();
/**
* Maps {@link SqlNode query node} objects to the {@link SqlValidatorScope} scope created from
* them.
*/
protected final Map<SqlNode, SqlValidatorScope> scopes = new IdentityHashMap<>();
/** Maps a {@link SqlSelect} and a clause to the scope used by that clause. */
private final Map<IdPair<SqlSelect, Clause>, SqlValidatorScope> clauseScopes = new HashMap<>();
/** The name-resolution scope of a LATERAL TABLE clause.
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
flink 1.13.5 源码下载 (17904个子文件)
.part-0-1.inprogress.0035b171-2759-403a-8d6c-4612b28a7a6c 12B
.part-0-1.inprogress.0035b171-2759-403a-8d6c-4612b28a7a6c 12B
.part-0-2.inprogress.0af18f41-d8f8-4a4e-a92e-de12851be20b 12B
.part-0-2.inprogress.0af18f41-d8f8-4a4e-a92e-de12851be20b 12B
kinesis-consumer-migration-test-flink1.10-empty-snapshot 3KB
kafka-consumer-migration-test-flink1.10-empty-state-snapshot 1KB
cep-migration-after-branching-flink1.10-snapshot 7KB
cep-migration-starting-new-pattern-flink1.10-snapshot 7KB
cep-migration-conditions-flink1.10-snapshot 7KB
cep-migration-single-pattern-afterwards-flink1.10-snapshot 7KB
win-op-migration-test-kryo-serialized-key-flink1.10-snapshot 4KB
kinesis-consumer-migration-test-flink1.10-snapshot 3KB
win-op-migration-test-session-with-stateful-trigger-flink1.10-snapshot 3KB
reader-migration-test-flink1.10-snapshot 3KB
win-op-migration-test-session-with-stateful-trigger-mint-flink1.10-snapshot 2KB
kafka-0.11-migration-kafka-producer-flink-1.10-snapshot 2KB
win-op-migration-test-apply-event-time-flink1.10-snapshot 2KB
win-op-migration-test-apply-processing-time-flink1.10-snapshot 2KB
win-op-migration-test-reduce-event-time-flink1.10-snapshot 2KB
win-op-migration-test-reduce-processing-time-flink1.10-snapshot 2KB
kafka-consumer-migration-test-flink1.10-snapshot 1KB
kafka-migration-kafka-producer-flink-1.10-snapshot 1KB
monitoring-function-migration-test-1594559333000-flink1.10-snapshot 316B
.part-0-0.inprogress.10833090-dd8c-4e36-884d-bb9758a3a8ef 8B
.part-0-0.inprogress.10833090-dd8c-4e36-884d-bb9758a3a8ef 8B
kinesis-consumer-migration-test-flink1.11-empty-snapshot 3KB
kafka-consumer-migration-test-flink1.11-empty-state-snapshot 1KB
cep-migration-after-branching-flink1.11-snapshot 7KB
cep-migration-starting-new-pattern-flink1.11-snapshot 7KB
cep-migration-conditions-flink1.11-snapshot 7KB
cep-migration-single-pattern-afterwards-flink1.11-snapshot 7KB
win-op-migration-test-kryo-serialized-key-flink1.11-snapshot 4KB
kinesis-consumer-migration-test-flink1.11-snapshot 3KB
win-op-migration-test-session-with-stateful-trigger-flink1.11-snapshot 3KB
reader-migration-test-flink1.11-snapshot 3KB
win-op-migration-test-session-with-stateful-trigger-mint-flink1.11-snapshot 2KB
kafka-0.11-migration-kafka-producer-flink-1.11-snapshot 2KB
win-op-migration-test-apply-event-time-flink1.11-snapshot 2KB
win-op-migration-test-apply-processing-time-flink1.11-snapshot 2KB
win-op-migration-test-reduce-event-time-flink1.11-snapshot 2KB
win-op-migration-test-reduce-processing-time-flink1.11-snapshot 2KB
kafka-migration-kafka-producer-flink-1.11-snapshot 1KB
kafka-consumer-migration-test-flink1.11-snapshot 1KB
monitoring-function-migration-test-1594561663000-flink1.11-snapshot 324B
kinesis-consumer-migration-test-flink1.12-empty-snapshot 3KB
kafka-consumer-migration-test-flink1.12-empty-state-snapshot 1KB
cep-migration-after-branching-flink1.12-snapshot 6KB
cep-migration-starting-new-pattern-flink1.12-snapshot 6KB
cep-migration-conditions-flink1.12-snapshot 5KB
cep-migration-single-pattern-afterwards-flink1.12-snapshot 5KB
win-op-migration-test-kryo-serialized-key-flink1.12-snapshot 4KB
kinesis-consumer-migration-test-flink1.12-snapshot 3KB
win-op-migration-test-session-with-stateful-trigger-flink1.12-snapshot 3KB
reader-migration-test-flink1.12-snapshot 3KB
win-op-migration-test-session-with-stateful-trigger-mint-flink1.12-snapshot 2KB
win-op-migration-test-apply-event-time-flink1.12-snapshot 2KB
win-op-migration-test-apply-processing-time-flink1.12-snapshot 2KB
win-op-migration-test-reduce-event-time-flink1.12-snapshot 2KB
win-op-migration-test-reduce-processing-time-flink1.12-snapshot 2KB
kafka-consumer-migration-test-flink1.12-snapshot 1KB
kafka-migration-kafka-producer-flink-1.12-snapshot 1KB
monitoring-function-migration-test-1613720148000-flink1.12-snapshot 324B
.part-0-4.inprogress.123ac2c7-f92a-476a-a848-1369b93d82a7 12B
.part-0-4.inprogress.123ac2c7-f92a-476a-a848-1369b93d82a7 12B
kinesis-consumer-migration-test-flink1.13-empty-snapshot 3KB
kafka-consumer-migration-test-flink1.13-empty-state-snapshot 1KB
cep-migration-after-branching-flink1.13-snapshot 6KB
cep-migration-starting-new-pattern-flink1.13-snapshot 5KB
cep-migration-conditions-flink1.13-snapshot 5KB
cep-migration-single-pattern-afterwards-flink1.13-snapshot 5KB
win-op-migration-test-kryo-serialized-key-flink1.13-snapshot 4KB
kinesis-consumer-migration-test-flink1.13-snapshot 3KB
win-op-migration-test-session-with-stateful-trigger-flink1.13-snapshot 3KB
reader-migration-test-flink1.13-snapshot 3KB
win-op-migration-test-session-with-stateful-trigger-mint-flink1.13-snapshot 2KB
win-op-migration-test-apply-event-time-flink1.13-snapshot 2KB
win-op-migration-test-apply-processing-time-flink1.13-snapshot 2KB
win-op-migration-test-reduce-event-time-flink1.13-snapshot 2KB
win-op-migration-test-reduce-processing-time-flink1.13-snapshot 2KB
kafka-consumer-migration-test-flink1.13-snapshot 1KB
kafka-migration-kafka-producer-flink-1.13-snapshot 1KB
monitoring-function-migration-test-1627550216000-flink1.13-snapshot 324B
.part-0-1.inprogress.1d423406-097a-4deb-bfde-d023d3477cd5 12B
.part-0-1.inprogress.1d423406-097a-4deb-bfde-d023d3477cd5 12B
.part-0-0.inprogress.1e22e72d-0ab2-493b-8b00-9edac4252cec 12B
.part-0-0.inprogress.1e22e72d-0ab2-493b-8b00-9edac4252cec 12B
flink-1.3.2-scala-types-serializer-data 97B
flink-1.3.2-scala-types-serializer-snapshot 7KB
serialized-kryo-serializer-1.3 2KB
kinesis-consumer-migration-test-flink1.3-empty-snapshot 14KB
kinesis-consumer-migration-test-flink1.3-snapshot 14KB
win-op-migration-test-kryo-serialized-key-flink1.3-snapshot 11KB
win-op-migration-test-session-with-stateful-trigger-flink1.3-snapshot 8KB
win-op-migration-test-session-with-stateful-trigger-mint-flink1.3-snapshot 7KB
win-op-migration-test-apply-event-time-flink1.3-snapshot 5KB
win-op-migration-test-apply-processing-time-flink1.3-snapshot 4KB
win-op-migration-test-reduce-event-time-flink1.3-snapshot 3KB
win-op-migration-test-reduce-processing-time-flink1.3-snapshot 3KB
reader-migration-test-flink1.3-snapshot 3KB
kryo-serializer-flink1.3-snapshot 1KB
共 17904 条
- 1
- 2
- 3
- 4
- 5
- 6
- 180
多栖艺人
- 粉丝: 1
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0