SET

Nombre

SET  --  Fija par�metros de tiempo de ejecuci�n para la sesi�n.

Synopsis

SET variable { TO | = } { 'value' | DEFAULT }
SET TIME ZONE { 'timezone' | LOCAL | DEFAULT }
SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
  

Inputs (Valores de entrada)

variable

Par�metro glogal que se quiere fijar.

value

Nuevo valor del par�metro. Se puede utilizar el valor DEFAULT para especificar que se devuelve el par�metro a su valor de defecto.

Las variables posibles y los valores permitidos son:

CLIENT_ENCODING | NAMES

Fija la codificaci�n para clientes mult-byte. Los par�metros son:

value

Fija la codificaci�n de cliente multi-byte a: value. La codificaci�n especificada debe estar soportada por el servidor.

Esta opci�n solo es utilizable si el soporte MULTIBYE se autoriz� durante el paso de configuraci�n en la construcci�n de Postgres.

DateStyle

Fija el estilo de representaci�n de fecha/hora. Afecta al formato de salida, y en algunos casos puede afectar a la interpretaci�n de la entrada.

ISO

utiliza fechas y horas de estilo ISO 8601.

SQL

utiliza fechas y horas de estilo Oracle/Ingres.

Postgres

utiliza el formato tradicional de Postgres.

European

utiliza dd/mm/yyyy para la representaci�n num�rica de las fechas.

NonEuropean

utiliza mm/dd/yyyy para la representaci�n num�rica de las fechas.

German

utiliza dd.mm.yyyy para la representaci�n num�rica de las fechas.

US

igual que 'NonEuropean'

DEFAULT

recupera los valores de defecto ('US,Postgres')

La inicializaci�n del formato de la fecha se puede hacer:

Fijando la variable de entorno PGDATESTYLE. Si PGDATESTYLE se fija en el ambiente de una aplicaci�n de un cliente basado en libpq, libpq fijar� autom�ticamente DATESTYLE al valor de PGDATESTYLE durante el arranque de la conexi�n.
Ejecutando postmastes utilizando la opci�n -o -e se fijan las fechas a la convenci�n Europea. N�tese que esto afecta s�lo a algunas combinaciones de estilos de fechas; por ejemplo, el estily ISO no se ve afectado por este par�metro.
Cambiando las variables en src/backend/utils/init/globals.c.

Las variables de globals.c que se pueden cambiar son:

bool EuroDates = false | true
int DateStyle = USE_ISO_DATES | USE_POSTGRES_DATES | USE_SQL_DATES | USE_GERMAN_DATES

SERVER_ENCODING

Fija la codificaci�n multi-byte para el servidor.

value

Fija la codificaci�n multi-bye para el servidor.

Esta opci�n s�lo est� disponible si se habilit� el soporte MULTIBYTE durante el paso de configuraci�n de la construcci�n de Postgres.

TIMEZONE

Los valores posibles para timezone dependen de su sistema operativo. Por ejemplo, en Linux /usr/lib/zoneinfo contiene la base de datos de zonas horarias.

Aqu� tiene algunos valores v�lidos para zonas horarias:

'PST8PDT'

situa la zona horaria de California.

'Portugal'

sit�a la zona horaria de Portugal.

'Europe/Rome'

sit�a la zona horaria de Italia.

DEFAULT

fija la zona horaria a su valor local. (el valor de la variable de entorno TZ).

Si se especifica una zona horaria invalida, ser� fijada a GMT (en la mayor�a de sistemas en cualquier caso).

La segunda sistaxis mostrada m�s arriba, permite fijar la zona horaria con una sintaxis similar a SET TIME ZONE de SQL92. La palabra clave LOCAL es s�lo un formato alternativo a DEFAULT para mantener la compatibilidad con SQL92.

Si la variable de entorno PGTZ se fija en el ambiente de la aplicaci�n de un cliente basado en libpq (en el ambiente del frontend), libpq fijar� autom�ticamente TIMEZONE al valor de PGTZ durante el arranque de la conexi�n.

TRANSACTION ISOLATION LEVEL

Fija el nivel de aislamiento para la transacci�n actual.

READ COMMITTED

Las consultas de la transacci�n actual leen s�lo filas aseguradas (committed) antes de empezar una consulta. READ COMMITTED es el valor de defecto.

Nota

El estandar SQL92 requiere que se fije el valor de aislamiento de defecto a SERIALIZABLE.

SERIALIZABLE

Las consultas de la transacci�n llen s�lo fila aseguradas antes de la primera instrucci�n DML (SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO) que se ejecute en esta transacci�n.

Hay tambi�n varios par�metros internos o de optimizaci�n que se pueden especificar con el comando SET:

RANDOM_PAGE_COST

Fija la estimaci�n del optimizador del coste de una p�gina de disco le�da no secuencialmente. Eso se mide como un m�ltiplo del coste de una lectura de p�gina secuencial.

float8

Fija el coste de un acceso aleatorio a un p�gina al valor punto flotante especificado.

CPU_TUPLE_COST

Fija la estimaci�n que har� el optimizador del coste de procesar cada tupla durante una consulta. Esto se mide como una fracci�n del coste de una lectura secuencial de una p�gina.

float8

Fija el coste de proceso de CPU por tupla al valor de de punto flotante especificado.

CPU_INDEX_TUPLE_COST

Fija la estimaci�n que har� el optimizador sobre el coste de procesar cada tupla del �ndice durante el procesado de un barrido del �ndice (index scan). Se mide como una fracci�n del coste de una lectura secuencial de p�gina.

float8

Fija el coste de CPU de procesado por tupla de �ndice al valor de punto flotante especificado.

CPU_OPERATOR_COST

Fija la estimaci�n que har� el optimizador del coste de procesar cada operador en una cl�usula WHERE. Esto se mide como una fracci�n del coste de un acceso secuencial a una p�gina.

float8

Fija le coste de CPU para procesar cada operador al valor de punto flotante especificado.

EFFECTIVE_CACHE_SIZE

Fija la estimaci�n que har� el optimizador sobre el tama�o efectivo de la cach� en disco (es decir, la porci�n de la cach� en disco del kernel que ser� utilizada por los ficheros de datos de Postgres). Esto se mide en p�ginas de disco, normalmente en piezas de 8 Kb.

float8

Fija el tama�o estimado de la cach� en el valor de punto flotante especificado.

ENABLE_SEQSCAN

Habilita o inhabilita el uso por el planificador de tipos de planes de barrido secuencial. (No es posible suprimir completamente los barridos secuenciales, pero desactivando esta variable se disuade al planificador de utilizar uno de ellos si dispone de otro m�todo utilizable).

ON

Habilita el uso de barridos secuenciales (valor de defecto).

OFF

Inhabilita el uso de barridos secuenciales.

ENABLE_INDEXSCAN

Habilita o inhabilita el uso por el planificador de tipos de planes de barrido de �ndices.

ON

Habilita el uso de barridos de �ndices (valor de defecto).

OFF

Inhabilita el uso de barridos de �ndices.

ENABLE_TIDSCAN

Habilita o inhabilita el uso por el planificador de tipos tipos de planes por barrido TID.

ON

Habilita el uso de barridos TID (valor de defecto).

OFF

Inhabilita el uso de barridos TID.

ENABLE_SORT

Habilita o inhabilita el uso por el planificador pasos de ordenaci�n expl�cita. (No es posible suprimir por completo las ordenaciones explititas, pero fijando en OFF esta variable disuade al planificador de usar uno cuando tiene otro m�todo utilizable.)

ON

Habilita el uso de ordenaciones (valor de defecto).

OFF

Inhabilita el uso de ordenaciones.

ENABLE_NESTLOOP

Habilita o inhabilita el uso por el planificador de planes de join de blucle anidado. (No es posible suprimer por completo las joins de bucle anidado, pero fijar en OFF esta variable disuade al planificador de utilizar uno de ellos si dispone de otro m�todo).

ON

Habilita el uso de joins de bucle anidado (valor de defecto).

OFF

Inshabilita el uso de joins de bucle anidado.

ENABLE_MERGEJOIN

Habilita o inhabilita el uso por el planificador de planes de tipo "enlace intercalado" (mergejoin).

ON

Habilita el uso de enlaces intercalados (valor de defecto).

OFF

Inhabilita el uso de enlaces intercalados.

ENABLE_HASHJOIN

Habilita o inhabilita el uso por el planificador de planes de tipo enlace hash (hashjoin).

ON

Habilita el uso de enlaces hash (valor de defecto).

OFF

Inhabilita el uso de enlaces hash.

GEQO

Fija el porcentaje de uso del algoritmo gen�rico del optimizador.

ON

Habilita el algoritmo gen�rico del optimizador para instrucciones con 11 tablas o m�s. (Este es tambi�n el valor de defecto DEFAULT).

ON=#

Toma un argumento entero para habilitar el algoritmo gen�rico para instrucciones con # o m�s tablas en la consulta.

OFF

Inhabilita el algoritmo gen�rico del optimizador.

Vea el cap�tulo sobre GEQO de la Gu�a del Programador para obtener m�s informaci�n sobre la optimizaci�n de la consulta.

Si la variable de entorno PGGEQO se fija en el ambiente de usuario de un cliente basado en libpq, libpq autom�ticamente fijar� GEQO al valor de PGGEQO durante el arranque de la conexi�n.

KSQO

Key Set Query Optimizer (Optimizador de la Consulta Fijado por Clave) lleva al planificador de la consulta a convertir aquellas consultas cuyas cl�usulas WHERE incluyan muchas cl�usulas OR y AND (tales como "WHERE (a=1 AND b=2) OR (a=2 AND b=3) ...") en una consulta UNION. Este metodo puede ser m�s r�pido que la implementaci�n de defecto, pero no necesariamente produce exactamente el mismo resultado, puesto que UNION impl�titamente a�ade una cl�usula SELECT DISTINCT para eliminar las filas resultantes que sean identicas. KSQO se utiliza habitualmente cuando se trabaja con productos como MicroSoft Access, que tienden a generar las consultas de esta forma.

ON

Habilita esta optimizaci�n.

OFF

Inhabilita esta optimizaci�n (valor de defecto).

DEFAULT

Equivalente a especificar SET KSQO='OFF'.

El algoritmo KSQO se utilizaba por ser absolutamente esencial para consultas con muchas cl�usulas OR y AND, pero en Postgres 7.0 y posteriores, el planificador estandar manipula estas consultas correctamente.

Outputs

SET VARIABLE

Mensaje devuelto si se fija el valor con �xito.

WARN: Bad value for variable (value)

Si el comando falla al fijar el valor especificado.

Descripci�n

SET modificar� los par�metros de configuraci�n para la variable durante una sesi�n.

Los valores en vigor se pueden obtener utilizando el SHOW, y los valores pueden devolverse a su situaci�n de defecto utilizando RESET. Valores y par�metros son sensibles a may�sculas y min�sculas. N�tese que el campo "valor" siempre se especifica como una cadena de caracteres, de modo que se encierra entre comillas simples.

SET TIME ZONE cambia la asignaci�n de zona horaria de defecto de la sesi�n. Una sesi�n SQL siempre empieza con un valor inicial de asignaci�n de zona horaria. La instrucci�n SET TIME ZONE se utiliza para cambiar la asignaci�n de zona horaria para la sesi�n SQL actual.

Notas

La instrucci�n SET variable es una extensi�n del lenguaje de Postgres.

Refierase a SHOW y RESET para mostrar o inicializar los valores actuales.

Uso

Fijar el estilo de la fecha a ISO:

SET DATESTYLE TO 'ISO';
   
Habilitar GEQO para consultas con 4 o m�s tablas:
 
SET GEQO ON=4;
   
Fijar GEQO a su valor de defecto:
 
SET GEQO = DEFAULT;
   
Fijar la zona horaria a Berkeley, California:
 
SET TIME ZONE 'PST8PDT';
SELECT CURRENT_TIMESTAMP AS ahora;
   
   ahora
   ----------------------
   1998-03-31 07:41:21-08
   
Fijar la zona horaria para Italia:
 
SET TIME ZONE 'Europe/Rome';
SELECT CURRENT_TIMESTAMP AS ahora;
   
   ahora
   ----------------------
   1998-03-31 17:41:31+02
   

Compatibilidad

SQL92

No hay SET variable general en SQL92 (con la excepci�n de SET TRANSACTION ISOLATION LEVEL). La sintaxis de SQL92 para SET TIME ZONE es ligeramente diferente, que permite s�lo un �nico valor entero para la especificaci�n de la zona horaria:

SET TIME ZONE { expresi�n_de_valor_del_intervalo | LOCAL }