PostgreSQL - estudiante

 
Vista:

estudiante

Publicado por jorge (1 intervención) el 22/06/2007 16:26:20
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 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

bueno muchas gracias
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;
---------------------------------------------------------------------------------------------
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:estudiante

Publicado por yo (4 intervenciones) el 22/06/2007 18:25:35
che yo devuelta :
ahi me di cuenta que lo indices que no me los pasas son por que tiene una letra en mayuscula , si yo lo renombro y con el mismo nombre pero a minuscula , me lo pasa.... alguien sabe por que??????????
como puedo hacerlo si renombrar los indices????????
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estudiante

Publicado por jorge (4 intervenciones) el 25/06/2007 18:17:13
loco como va... en contre el error de la fucion que habia echo.. me faltaban unas comillas doble, parece que para que reconosca mayuscula tienen que enserlo entre comillas doble

aca va la funcion que anda:

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;

--------------------

nos vemos
jorge
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar