SET CAMINHO

Aplica-se a:assinalado Databricks SQL assinalado sim Databricks Runtime 19 e superiores

O caminho é a lista ordenada de esquemas que o Azure Databricks pesquisa quando uma consulta ou instrução DML faz referência a uma tabela, vista ou função sem um catalogo e qualificador de esquema. O sujeito não qualificado de uma instrução DDL é current_catalog.current_schema, não uma pesquisa de caminho, por isso CREATE TABLE t cria-se t no esquema atual. Para saber como o caminho se aplica a consultas em instruções DDL e a vistas persistentes, veja Resolução de Tabela e vista. Para organismos rotineiros, veja Resolução de funções e procedimentos.

Syntax

SET PATH = path_element [, ...]

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

Parameters

  • DEFAULT_PATH

    Uma palavra-chave que se expande para o parâmetro de configuração PATH , que é o padrão do espaço de trabalho que as novas sessões herdam. Se o parâmetro não tiver sido sobreposto, a expansão é system.session, system.builtin, system.ai, CURRENT_SCHEMA.

  • SYSTEM_PATH

    Uma palavra-chave que se expande para os esquemas fornecidos pelo sistema: system.builtin, system.ai.

  • CURRENT_SCHEMA

    Uma referência virtual de esquema que se resolve no momento de uso para o catálogo atual e o esquema atual (current_catalog().current_schema()). A expansão segue as alterações feitas durante USE CATALOGUSE SCHEMA e durante a sessão.

  • CAMINHO

    Uma palavra-chave que se expande para o caminho da sessão atual. Usa-o para prolongar o caminho sem repetir o seu conteúdo.

  • schema_name

    É necessário um nome em duas partes (catalog.schema). Nomes com mais de duas partes são permitidos. Um nome de uma só parte levanta INVALID_SQL_PATH_SCHEMA_REFERENCE.

    O catálogo e o esquema não precisam de existir no momento em que executa SET PATH. A resolução de nomes ignora entradas em falta e continua com o próximo elemento do caminho.

Description

As seguintes regras determinam quais elementos SET PATH de caminho aceitam e como o caminho resultante afeta a resolução de nomes.

  • Duplicados: Não são permitidos elementos de caminho duplicados. Após a expansão das palavras-chave, os duplicados aumentam DUPLICATE_SQL_PATH_ENTRY.
  • Esquemas do sistema: system.builtin e system.ai contêm funções escalar, de tabela e de IA incorporadas. system.session contém objetos com âmbito de sessão, como variáveis temporárias, funções temporárias e vistas temporárias. Sair system.builtin do caminho geralmente não é aconselhável.
  • Esquemas omitidos: Nomes não qualificados resolvem-se apenas contra esquemas no caminho. Se omitir CURRENT_SCHEMA, qualifica objetos persistentes no esquema atual. Se omitir system.builtin ou system.ai, qualificar essas funções, por exemplo system.builtin.abs. Se omitir system.session, vistas temporárias não qualificadas, funções temporárias e variáveis de sessão não são encontradas.
  • Vistas e rotinas: Vistas persistentes, funções SQL definidas pelo utilizador e SQL SECURITY DEFINER procedimentos capturam o caminho em CREATE e resolvem nomes não qualificados nos seus corpos contra esse caminho capturado, não contra o caminho da sessão do invocador. Um SQL SECURITY DEFINER procedimento omite system.session o caminho capturado. Um SQL SECURITY INVOKER procedimento utiliza o caminho em direto do interlocutor. Ver Caminho capturado.
  • Inspecionar o caminho: SET PATH; não imprime o caminho. Usa current_path.

Examples

Execute as instruções seguintes por ordem, porque as instruções posteriores baseiam-se no caminho definido pelas anteriores.

-- 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

As seguintes afirmações falham e não alteram o caminho.

-- 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]