Error en Precontroles v 3.17.1

Estimados,
estoy realizando pruebas con la versión 3.17.1 desde cero. Luego de pasar los datos de informix a postgres me surge el siguiente error al correr el trabajo “Precontroles”.

2020/02/14 18:28:02 - fx_ctrl_generales - ERROR (version 6.1.0.1-196, build 1 from 2016-04-07 12.08.49 by buildguy) : Ocurrió un error al ejecutar esta entrada de trabajo:
2020/02/14 18:28:02 - fx_ctrl_generales - Couldn’t execute SQL: CREATE OR REPLACE FUNCTION mig.sp_ctrl_generales() RETURNS SETOF mig.control_type AS $$
2020/02/14 18:28:02 - fx_ctrl_generales - DECLARE
2020/02/14 18:28:02 - fx_ctrl_generales - sql text;
2020/02/14 18:28:02 - fx_ctrl_generales - r mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - BEGIN
2020/02/14 18:28:02 - fx_ctrl_generales - SET search_path = ${pg_esquema};
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT i.nombre, count() FROM mig.sga_instituciones as i GROUP BY 1
2020/02/14 18:28:02 - fx_ctrl_generales - HAVING COUNT(
) > 1 AND EXISTS (SELECT 1 FROM sga_instituciones as ig3 WHERE ig3.nombre = i.nombre)) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT i.nombre, count() FROM mig.sga_instituciones as i GROUP BY 1
2020/02/14 18:28:02 - fx_ctrl_generales - HAVING COUNT(
) > 1 AND EXISTS (SELECT 1 FROM sga_instituciones as ig3 WHERE ig3.nombre = i.nombre)‘;
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Error: Hay dos o mas instituciones con el mismo nombre (mig.sga_instituciones) y que ya existe en Guarani 3. Reemplace el nombre de la instituci�n para que sea �nico’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT pais FROM mig.mug_paises WHERE pais > 32767) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT pais, nombre FROM mig.mug_paises WHERE pais > 32767’;
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Error: Hay paises con id mayor a 32767 (maximo valor del smallint). Reemplace este valor por uno menor’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT localidad, codigo_postal FROM mig.mug_cod_postales WHERE localidad NOT IN (SELECT localidad FROM mig.mug_localidades UNION SELECT localidad FROM mug_localidades)) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT localidad, codigo_postal FROM mig.mug_cod_postales WHERE localidad NOT IN (SELECT localidad FROM mig.mug_localidades UNION SELECT localidad FROM mug_localidades)‘;
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Advertencia: Hay c�digos postales de localidades que no existen en G3 (mug_localidades) ni en G2 (mig.mug_localidades). Estos c�digos postales no se van a migrar.’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT * FROM mig.sga_coleg_sec WHERE localidad IS NULL) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT * FROM mig.sga_coleg_sec WHERE localidad IS NULL’;
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Advertencia: Hay colegios secundarios (mig.sga_coleg_sec) que no tienen definida una localidad’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT * FROM mig.sga_edificios WHERE localidad IS NULL) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT * FROM mig.sga_edificios WHERE localidad IS NULL’;
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Advertencia: Hay edificiones (mig.sga_edificios) que no tienen localidad asignada’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT * FROM mig.sga_sedes WHERE localidad IS NULL) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT * FROM mig.sga_sedes WHERE localidad IS NULL’;
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Advertencia: Hay sedes (mig.sga_sedes) que no tienen definida la localidad’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT * FROM mig.mug_localidades WHERE nombre_abreviado is null) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT * FROM mig.mug_localidades WHERE nombre_abreviado is null’;
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Advertencia: Hay localidades (mig.mug_localidades) con nombre abreviado en null. Se asignar� el nombre de la localidad en este campo’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT escala_notas, nota, descripcion, resultado FROM mig.sga_det_escala WHERE descripcion IS NULL OR resultado IS NULL) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT escala_notas, nota, descripcion, resultado FROM mig.sga_det_escala WHERE descripcion IS NULL OR resultado IS NULL’;
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Error: Hay registros de notas en escalas de notas (mig.sga_det_escala) con en el dato descripci�n o resultado con valor NULL,verificar…’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT escala_notas, descripcion FROM mig.sga_det_escala WHERE concepto IS NULL) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT escala_notas, descripcion FROM mig.sga_det_escala WHERE descripcion IS NULL OR resultado IS NULL’;
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Advertencia: Hay registros con en el campo descripci�n o resultado de la tabla mig.sga_det_escala con valores NULL,verificar…’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT * FROM mig.sga_det_escala WHERE concepto IS NULL) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT * FROM mig.sga_det_escala WHERE concepto IS NULL’;
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Error: Hay registros con en el campo concepto de la tabla mig.sga_det_escala con valores null,verificar…’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT a.libro, f.folio_fisico, count()
2020/02/14 18:28:02 - fx_ctrl_generales - FROM mig.sga_actas_promo as a, mig.sga_folios_promo as f
2020/02/14 18:28:02 - fx_ctrl_generales - WHERE a.unidad_academica = f.unidad_academica
2020/02/14 18:28:02 - fx_ctrl_generales - AND a.acta = f.acta
2020/02/14 18:28:02 - fx_ctrl_generales - AND a.libro IS NOT NULL
2020/02/14 18:28:02 - fx_ctrl_generales - AND f.folio_fisico IS NOT NULL
2020/02/14 18:28:02 - fx_ctrl_generales - GROUP BY 1, 2
2020/02/14 18:28:02 - fx_ctrl_generales - HAVING COUNT(
) > 1
2020/02/14 18:28:02 - fx_ctrl_generales - ) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT a.libro, f.folio_fisico, count() FROM mig.sga_actas_promo as a, mig.sga_folios_promo as f WHERE a.unidad_academica = f.unidad_academica AND a.acta = f.acta AND a.libro IS NOT NULL AND f.folio_fisico IS NOT NULL GROUP BY 1, 2 HAVING COUNT() > 1’;
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Error: Hay registros de actas con folios fisicos duplicados del mismo libro en actas de promoci�n, tabla mig.sga_folios_promo, verificar…’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT a.libro, f.folio_fisico, count()
2020/02/14 18:28:02 - fx_ctrl_generales - FROM mig.sga_actas_examen as a, mig.sga_folios as f
2020/02/14 18:28:02 - fx_ctrl_generales - WHERE a.unidad_academica = f.unidad_academica
2020/02/14 18:28:02 - fx_ctrl_generales - AND a.tipo_acta = f.tipo_acta
2020/02/14 18:28:02 - fx_ctrl_generales - AND a.acta = f.acta
2020/02/14 18:28:02 - fx_ctrl_generales - AND a.libro IS NOT NULL
2020/02/14 18:28:02 - fx_ctrl_generales - AND f.folio_fisico IS NOT NULL
2020/02/14 18:28:02 - fx_ctrl_generales - GROUP BY 1, 2
2020/02/14 18:28:02 - fx_ctrl_generales - HAVING COUNT(
) > 1
2020/02/14 18:28:02 - fx_ctrl_generales - ) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT a.libro, f.folio_fisico, count() FROM mig.sga_actas_examen as a, mig.sga_folios as f WHERE a.unidad_academica = f.unidad_academica AND a.tipo_acta = f.tipo_acta AND a.acta = f.acta AND a.libro IS NOT NULL AND f.folio_fisico IS NOT NULL GROUP BY 1, 2 HAVING COUNT() > 1’;
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Error: Hay registros de actas con folios fisicos duplicados del mismo libro en actas de examen, tabla mig.sga_folios, verificar…’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - IF EXISTS (SELECT * FROM mig.sga_atrib_mat_plan WHERE periodo_dictado IS NOT NULL AND periodo_dictado NOT IN ( SELECT periodo_lectivo FROM mig.sga_per_lect_gen)) THEN
2020/02/14 18:28:02 - fx_ctrl_generales - sql=E’SELECT * FROM mig.sga_atrib_mat_plan WHERE periodo_dictado IS NOT NULL AND periodo_dictado NOT IN ( SELECT periodo_lectivo FROM mig.sga_per_lect_gen)';
2020/02/14 18:28:02 - fx_ctrl_generales - r := (false,‘Error: Hay registros en el campo periodo_dictado de la tabla mig.sga_atrib_mat_plan que no se encuentran en la tabla mig.sga_per_lect_gen,verificar…’,sql)::mig.control_type;
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN NEXT r;
2020/02/14 18:28:02 - fx_ctrl_generales - END IF;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - RETURN;
2020/02/14 18:28:02 - fx_ctrl_generales - END;
2020/02/14 18:28:02 - fx_ctrl_generales - $$ LANGUAGE plpgsql;
2020/02/14 18:28:02 - fx_ctrl_generales -
2020/02/14 18:28:02 - fx_ctrl_generales - ERROR: error de sintaxis en o cerca de «$»
2020/02/14 18:28:02 - fx_ctrl_generales - Position: 156

¿Alguna sugerencia?
Saludos cordiales

Estimados,
como realicé una instalación nueva pasé por alto la configuración de las variables de entorno del kettle. Una vez indicadas las mismas salió andando.
Saludos cordiales y disculpen la molestia.

Hola!
tuve el mismo error, no entendi lo de pasar por alto las ketle properties.

Gustavo se refiere a esta configuración.