Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Mover todos los indices de Tablespaces

Arquitectura, Extending SQL, The Postgree Rule System, Intefacing, Trigers, ODBC, JDBC, C++...

Mover todos los indices de Tablespaces

Notapor el2gia el Vie Jun 22, 2007 10:34 am

Buenas como va, tengo la vercion de postgres 8.1 , he estado buscando alguna forma para mover todos los indices de una base de dato , del tablespace por defecto a uno que hice yo.... no la encontre entonces me puse hacer una... me compilo pero no me anda.. lo raro que cuando la debagueo biene bien , pasa algunos indices y se traba en un indice , que me sale el error:

ERROR: no existe la relación «produccion_act_nl_tl_index»
produccion_act_nl_tl_index--> es el indice

ahi me di cuenta que lo indices que no me los pasas son por que tiene una lletra en mayuscula , si yo lo renombro y con el mismo numbre pero a minuscula , me lo pasa.... alguien sabe por que??????????
como puedo hacerlo si renombrar los indices????????



bueno muchas gracias por su ayuda
jorge

la funcion es:
-------------------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION "public"."mover_indices" () RETURNS boolean AS
$body$
DECLARE
r_idx RECORD;

idx cursor for SELECT 'ALTER INDEX ' ||c2.relname ||' SET TABLESPACE tbs_prueba;' as sen
FROM pg_class c2, pg_index i
WHERE c2.oid = i.indexrelid
and c2.relname not like 'pg_%'
ORDER BY c2.relname desc;
BEGIN
open idx;
LOOP
FETCH idx INTO r_idx;
IF FOUND = FALSE THEN
EXIT; -- exit loop
END IF;
execute r_idx.sen;
END LOOP;
close idx;
RETURN TRUE;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
el2gia
Novato
Novato
 
Mensajes: 3
Registrado: Vie Jun 22, 2007 10:26 am

aca va como me funciono

Notapor el2gia el Lun Ago 27, 2007 11:51 am

/* Nuevo cuerpo de Function */
DECLARE
r_idx RECORD;
--i pg_class.relname%type;
--r_idx pg_class%rowtype;
-- r_idx pg_class.relname%TYPE;
BEGIN
FOR r_idx IN SELECT 'ALTER INDEX "' ||c2.relname ||'" SET TABLESPACE pg_default;'
as sent
FROM pg_class c2, pg_index i
WHERE c2.oid = i.indexrelid
and c2.relname not like 'pg_%'
ORDER BY c2.relname LOOP

execute r_idx.sent;
--ALTER INDEX r_idx.relname SET TABLESPACE tbs_prueba;
END LOOP;
RETURN true;
end;
el2gia
Novato
Novato
 
Mensajes: 3
Registrado: Vie Jun 22, 2007 10:26 am


Volver a PostgreSQL

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados