SET PAD

Van toepassing op:vinkje gemarkeerd ja Databricks SQL vinkje gemarkeerd ja Databricks Runtime 19 en hoger

Het pad is de geordende lijst van schema's die Azure Databricks doorzoekt wanneer een query of DML-instructie verwijst naar een tabel, view of functie zonder catalogus en schema-kwalificatie. Het niet-gekwalificeerde subject van een DDL-instructie is current_catalog.current_schema, geen padzoekopdracht, dus CREATE TABLE t creëert t in het huidige schema. Voor hoe het pad toepasbaar is op queries in DDL-statements en op persistente views, zie Table and view resolution. Voor routinematige lichamen, zie Functie en procedure-resolutie.

Syntax

SET PATH = path_element [, ...]

path_element
  { DEFAULT_PATH |
    SYSTEM_PATH |
    CURRENT_SCHEMA |
    PATH |
    schema_name }

Parameters

  • DEFAULT_PATH

    Een trefwoord dat uitbreidt naar de PATH-configuratieparameter , de werkruimtestandaard die nieuwe sessies erven. Als de parameter niet is overschreven, is system.session, system.builtin, system.ai, CURRENT_SCHEMAde expansie .

  • SYSTEM_PATH

    Een trefwoord dat zich uitbreidt naar de door het systeem geleverde schema's: system.builtin, system.ai.

  • CURRENT_SCHEMA

    Een virtuele schemareferentie die tijdens gebruik wordt opgelost naar de huidige catalogus en het huidige schema (current_catalog().current_schema()). De uitbreiding volgt op wijzigingen die tijdens USE CATALOGUSE SCHEMA de sessie zijn doorgevoerd.

  • PAD

    Een trefwoord dat uitbreidt naar het huidige sessiepad. Gebruik het om het pad te verlengen zonder de inhoud opnieuw te gebruiken.

  • schema_name

    Een tweedelige naam (catalog.schema) is vereist. Namen met meer dan twee delen zijn toegestaan. Een naam in één partij roept INVALID_SQL_PATH_SCHEMA_REFERENCE op.

    De catalogus en het schema hoeven niet te bestaan op het moment dat je het uitvoert SET PATH. Naamresolutie slaat ontbrekende vermeldingen over en gaat verder met het volgende padelement.

Description

De volgende regels bepalen welke padelementen SET PATH accepteren en hoe het resulterende pad de naamresolutie beïnvloedt.

  • Duplicaten: Duplicaatpad-elementen zijn niet toegestaan. Na trefwoorduitbreiding stijgen duplicaten DUPLICATE_SQL_PATH_ENTRY.
  • Systeemschema's: system.builtin en system.ai bevatten ingebouwde scalaire, tabel- en AI-functies. system.session bevat sessie-scoped objecten zoals tijdelijke variabelen, tijdelijke functies en tijdelijke weergaven. Het is over het algemeen niet aan te raden om het pad te laten system.builtin .
  • Uitgelaten schema's: Niet-gekwalificeerde namen lossen alleen op tegen schema's op het pad. Als je CURRENT_SCHEMA, kwalificeert persistent objecten in het huidige schema. Als je die functies weglaat system.builtin of system.ai, kwalificeert, bijvoorbeeld system.builtin.abs. Als je weglaat system.session, worden niet-gekwalificeerde tijdelijke weergaven, tijdelijke functies en sessievariabelen niet gevonden.
  • Views en routines: Persistente views, door SQL door gebruikers gedefinieerde functies en SQL SECURITY DEFINER procedures leggen het pad op CREATE en lossen ongekwalifiseerde namen in hun bodies op tegen dat vastgelegde pad, niet tegen het sessiepad van de invoker. Een SQL SECURITY DEFINER procedure wordt system.session weggelaten op het gevangen pad. Een SQL SECURITY INVOKER procedure gebruikt het live pad van de beller. Zie Gevangen pad.
  • Het pad inspecteren: SET PATH; print het pad niet af. Gebruik current_path.

Examples

Voer de volgende statements in volgorde uit, omdat latere statements voortbouwen op het pad dat eerdere statements hebben gezet.

-- Restore the workspace default.
> SET PATH = DEFAULT_PATH;
> SELECT current_path();
  system.session,system.builtin,system.ai,main.default

-- Restrict the PATH to only the system-provided schemas.
> SET PATH = SYSTEM_PATH;
> SELECT current_path();
  system.builtin,system.ai

-- Append a schema to the existing PATH without restating it.
> SET PATH = PATH, libraries.pgsql;
> SELECT current_path();
  system.builtin,system.ai,libraries.pgsql

-- Put the current schema ahead of the system schemas so that user-defined
-- functions shadow built-in functions of the same name.
> SET PATH = CURRENT_SCHEMA, PATH;
> SELECT current_path();
  main.default,system.builtin,system.ai,libraries.pgsql

De volgende statements falen en veranderen het pad niet.

-- A single-part schema name is rejected.
> SET PATH = my_schema;
  [INVALID_SQL_PATH_SCHEMA_REFERENCE]

-- A duplicate path element raises an error after expansion.
> SET PATH = SYSTEM_PATH, system.builtin;
  [DUPLICATE_SQL_PATH_ENTRY]