001package gudusoft.gsqlparser.dlineage.dataflow.model;
002
003/**
004 * Authoritative classification of <em>how</em> a dlineage table endpoint was
005 * introduced in the analyzed SQL, orthogonal to {@link EndpointKind} ("what it is").
006 *
007 * <p>The create-effect values ({@link #CREATE_TABLE_DDL}, {@link #SELECT_INTO},
008 * {@link #CTAS}, {@link #CLONE_TABLE}) are <strong>parse facts</strong> and MUST be set
009 * regardless of whether the object's schema resolved ({@code isDetermined()}) — unlike
010 * the existing {@code fromDDL} signal, which is gated on resolution and is therefore
011 * absent exactly in the unresolved-source population this classification targets. See
012 * docs/tmp/dlineage-authoritative-endpoint-classification.md.
013 *
014 * <p>The full value set is defined here; the §5.6 "minimum complete" scope only
015 * <em>produces</em> {@link #CREATE_TABLE_DDL}, {@link #SELECT_INTO}, {@link #CTAS},
016 * {@link #CLONE_TABLE} and {@link #UNKNOWN}. The remaining values
017 * ({@code CATALOG_REFERENCE}, {@code CTE_DEFINITION}, {@code DERIVED_SUBQUERY},
018 * {@code FUNCTION_CALL}, {@code LITERAL}, {@code VARIABLE_REFERENCE}) are reserved for
019 * later coverage.
020 */
021public enum EndpointIntroduction {
022        CATALOG_REFERENCE, CREATE_TABLE_DDL, SELECT_INTO, CTAS, CLONE_TABLE,
023        CTE_DEFINITION, DERIVED_SUBQUERY, FUNCTION_CALL, LITERAL, VARIABLE_REFERENCE, UNKNOWN
024}