SET
Define o valor de um parâmetro de configuração de servidor. Use o comando SET para substituir uma configuração para a duração da sessão ou transação atual somente.
Usa o comando RESET para que um parâmetro volte ao seu valor padrão.
É possível alterar os parâmetros de configuração do servidor de várias maneiras. Para obter mais informações, consulte Modificar a configuração do servidor.
Sintaxe
SET { [ SESSION | LOCAL ] { SEED | parameter_name } { TO | = } { value | 'value' | DEFAULT } | SEED TO value }
A instrução a seguir define o valor de uma variável de contexto de sessão.
SET { [ SESSION | LOCAL ] variable_name { TO | = } { value | 'value' }
Parâmetros
- SESSION
-
Especifica que a configuração é válida para a sessão atual. Valor padrão.
- variable_name
-
Especifica o nome da variável de contexto definida para a sessão.
A convenção de nomenclatura é um nome de duas partes separado por um ponto; por exemplo identificador.identificador. Só é permitido um separador de ponto. Use um identificador que siga as regras de identificador padrão do Amazon Redshift. Para obter mais informações, consulte Nomes e identificadores. Não são permitidos identificadores delimitados.
- LOCAL
-
Especifica que a configuração é válida para a transação atual.
- SEED TO valor
-
Define uma propagação interna a ser usada pela função RANDOM para a geração de números aleatórios.
SET SEED escolhe um valor numérico entre 0 e 1 e multiplica esse número por (231-1) para uso com a função Função RANDOM. Se você usar SET SEED antes de fazer diversas chamadas RANDOM, RANDOM gerará números em uma sequência previsível.
- parameter_name
-
Nome do parâmetro a ser definido. Consulte Modificar a configuração do servidor para obter informações sobre parâmetros.
- value
-
Novo valor do parâmetro. Use aspas simples para definir o valor de uma string específica. Se estiver usando SET SEED, esse parâmetro contém o valor SEED.
- DEFAULT
-
Define o parâmetro para o valor padrão.
Exemplos
Alterar um parâmetro para a sessão atual
O exemplo a seguir define datestyle:
set datestyle to 'SQL,DMY';
Configurar um grupo de consultas para gerenciamento de workload
Se grupos de consulta estiverem listados em uma definição de fila como parte da configuração de WLM do cluster, configure o parâmetro QUERY_GROUP para um nome de grupo de consultas listado. Consultas subsequentes são atribuídas à fila de consultas associada. A configuração de QUERY_GROUP permanece em vigor pela duração da sessão ou até que o comando RESET QUERY_GROUP seja encontrado.
Este exemplo executa duas consultas como parte de 'priority' do grupo de consultas e, depois, redefine o grupo de consultas.
set query_group to 'priority'; select tbl, count(*)from stv_blocklist; select query, elapsed, substring from svl_qlog order by query desc limit 5; reset query_group;
Para ter mais informações, consulte Gerenciamento do workload.
Alterar o namespace de identidade padrão para a sessão
Um usuário do banco de dados pode definir default_identity_namespace
. Este exemplo mostra como usar SET SESSION
para substituir a configuração durante a sessão atual e, depois, mostrar o novo valor do provedor de identidades. Isso é usado com maior frequência quando você utiliza um provedor de identidades com o Redshift e o Centro de Identidade do IAM. Para ter mais informações sobre como usar um provedor de identidades com o Redshift, consulte Conectar o Redshift ao IAM Identity Center para proporcionar aos usuários uma experiência de logon único.
SET SESSION default_identity_namespace = 'MYCO'; SHOW default_identity_namespace;
Após a execução do comando, é possível executar uma declaração GRANT ou CREATE como a seguinte:
GRANT SELECT ON TABLE mytable TO alice; GRANT UPDATE ON TABLE mytable TO salesrole; CREATE USER bob password 'md50c983d1a624280812631c5389e60d48c';
Nesse caso, o efeito de definir o namespace de identidade padrão é equivalente a prefixar cada identidade com o namespace. Neste exemplo, alice
é substituído por MYCO:alice
. Para ter mais informações sobre definições relativas à configuração do Centro de Identidade do IAM, consulte ALTER SYSTEM e ALTER IDENTITY PROVIDER.
Configurar uma identificação para um grupo de consultas
O parâmetro QUERY_GROUP define um rótulo para uma ou mais consultas que são executadas na mesma sessão após um comando SET. Por sua vez, esse rótulo é registrado quando as consultas são executadas e pode ser usado para restringir os resultados retornados das tabelas de sistema STL_QUERY e STV_INFLIGHT e da visualização SVL_QLOG.
show query_group; query_group ------------- unset (1 row) set query_group to '6 p.m.'; show query_group; query_group ------------- 6 p.m. (1 row) select * from sales where salesid=500; salesid | listid | sellerid | buyerid | eventid | dateid | ... ---------+--------+----------+---------+---------+--------+----- 500 | 504 | 3858 | 2123 | 5871 | 2052 | ... (1 row) reset query_group; select query, trim(label) querygroup, pid, trim(querytxt) sql from stl_query where label ='6 p.m.'; query | querygroup | pid | sql -------+------------+-------+---------------------------------------- 57 | 6 p.m. | 30711 | select * from sales where salesid=500; (1 row)
As identificações de grupo de consulta são um mecanismo útil para isolar consultas individuais ou grupos de consultas executadas como parte de scripts. Você não precisa identificar e monitorar consultas pelos IDs; você pode acompanhá-las por suas identificações.
Configurar um valor de seed para a geração de números aleatórios
O exemplo a seguir usa a opção SEED com SET para que a função RANDOM gere números em uma sequência previsível.
Primeiro, retorne três inteiros RANDOM sem definir o valor de SEED primeiro:
select cast (random() * 100 as int); int4 ------ 6 (1 row) select cast (random() * 100 as int); int4 ------ 68 (1 row) select cast (random() * 100 as int); int4 ------ 56 (1 row)
Agora, defina o valor de SEED como .25
e retorne mais três números RANDOM:
set seed to .25; select cast (random() * 100 as int); int4 ------ 21 (1 row) select cast (random() * 100 as int); int4 ------ 79 (1 row) select cast (random() * 100 as int); int4 ------ 12 (1 row)
Por fim, redefina o valor de SEED como .25
e verifique se RANDOM retorna os mesmos resultados que as três chamadas anteriores:
set seed to .25; select cast (random() * 100 as int); int4 ------ 21 (1 row) select cast (random() * 100 as int); int4 ------ 79 (1 row) select cast (random() * 100 as int); int4 ------ 12 (1 row)
O exemplo a seguir define uma variável de contexto personalizada.
SET app_context.user_id TO 123; SET app_context.user_id TO 'sample_variable_value';