Re: Fallo en función
El 31/5/19 a las 08:10, José Vicente Zahonero García escribió: > Hola, tengo esta función: > CREATE OR REPLACE FUNCTION inserciones(trayecto varchar, tempo varchar, > espacio numeric) > returns void AS $$ > > declare > > spaces integer; > hora integer; > minuto integer; > segundo integer; > resultado real; > tiempo_en_minutos real; > calorias real; > > > begin > > spaces := espacio*1000; spaces es entero, y espacio numerico. Aunque multipliques por 1000, tener que hacer un cast a entero. > hora := cast(substring(tempo from 1 for 2)); > minuto := cast(substring(tempo from 4 for 2)); > segundo := cast(substring(tempo from 7 for 2)); Estas usando mal la funcion cast. Imagino que la idea es hacer un cast a entero. https://www.postgresql.org/docs/current/sql-createcast.html > hora := hora*3600; > minuto := minuto*60> resultado := > ((spaces/(hora+minuto+segundo))*3.6); > tiempo_en_minutos := ((hora+minuto+segundo)/60); > calorias := (70*0.21)*tiempo_en_minutos; > > insert into datos (recorrido,tiempo,distancia,calorias,kmh,fecha) values > (trayecto,tempo,spaces,calorias,resultado,current_date); > > end; > $$ language 'plpgsql'; > Al ejecutarla me da el error: > Unterminated dollar quote started at position 0 in SQL $$ language > 'plpgsql';. Expected terminating $$ Habrás pegado mal la funcion porque a mi no me da ese error. Si me da error en los cast() de arriba en los que no estas especificando el tipo al que debe convertirse el valor. -- Martín Marquéshttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Re: Conflicto entre pg_dump y transacción.
El 03/05/18 a las 09:59, Alvaro Herrera escribió: > Federico Pascual escribió: > >> pg_dump -F c -v -f "$archivo_export" -n "\"$esquema\"" "$dbname" >> 1>$archivo_log 2>$archivo_logerr >> >> Donde las variables son reemplazadas por sus valores correspondientes. >> >> El error que aparece en el log es el siguiente: >> >> 2018-05-02 20:13:39 GMT+3 postgres stg ERROR: cancelando la sentencia >> debido a un conflicto con la recuperación >> 2018-05-02 20:13:39 GMT+3 postgres stg DETALLE: La consulta del usuario >> pudo haber necesitado examinar versiones de tuplas que debían eliminarse. > > Interesante lío. Me pregunto si funcionaría hacer esto > > PGOPTIONS=--hot_standby_feedback=1 pg_dump -Fc Eso no va a funcionar ya que hot_standby_feedback requiere un sighup del postmaster para applicar el cambio. $ PGOPTIONS='-c hot_standby_feedback=1' psql -h localhost psql: FATAL: el parámetro «hot_standby_feedback» no se puede cambiar en este momento > La idea es que el parámetro hot_standby_feedback se active para la > sesión de pg_dump, con lo cual evitas que un VACUUM en el primario > elimine tuplas que el pg_dump necesita. Estaba a punto de recomendar usar los parámetros max_standby_streaming_delay y max_standby_archive_delay y recorde que el standby es sincronico, por lo que congelaria las transacciones en el maestro. Saludos -- Martín Marquéshttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Re: Ayuda sobre permisos de usuario
El 12/03/18 a las 10:22, Marcos Michel Martinez Perez escribió: > Saludos lista, necesito saber como puedo hacer que un usuario de > postgres al conectarse solamente le salga la BD del servidor al que > tiene permisos, es decir yo tengo n bases de datos pero quiero que > solamente vea la que tiene permisos Si lo que queres es que no vea las otras bases de datos que hay en el sistema, no se puede, ya que pg_database es un catalog global. Muchas veces se hay preguntado esto y lamentablemente asi es como funciona. Cualquiera puede ver las bases de datos en el cluster. Lo que si se puede hacer es restringir el acceso a cada base de datos con el privilegio de CONNECT con las sentencias REVOKE y GRANT: REVOKE CONNECT ON DATABASE database_name FROM { [ GROUP ] role_name | PUBLIC } Con eso el usuario verá que existe la base de datos, pero no se podrá conectar a ella. Saludos, -- Martín Marquéshttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Re: actualizar postgres en windows
El 11/02/18 a las 05:30, jvenegasperu . escribió: > Buen dia a todos > > Alguno sabe como puedo actualizar postgres 10.1 a 10.2 en windows? Detienes postgres, instalas los nuevos binarios y arrancas nuevamente el servicio de postgres. O hay alguna otra duda que no esté explícitamente en la pregunta de arriba? -- Martín Marquéshttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Re: Mejorar velocidad de backup en postgres
El 29/11/17 a las 16:40, Edwin Quijada escribió: > Alvaro, a que te refieres con lo de respaldo fisico y no logico ? > > Si usas pg_dump supongo que es un respaldo fisico? Que diferencia hace > Barman Lo que produce pg_dump es un respaldo lógico, ya que o que tenes son sentencias SQL o codificadas para que pg_restore las recupere. Otra cualidad es que tando el respaldo como el recupero se hacen con conexiones al servidor (pg_dump se conecta para extraer toda la data, y lo mismo pg_restore o psql si es un respaldo plano) Un backup físico es el que realizo copiando los archivos de datos directamente desde el filesystem. Antiguamente uno corría un tar o rsync y guardabamos el resultado en algún almacenamiento externo. Ahora usamos herramientas como pg_basebackup para tomar respaldos físicos. Barman usa pg_basebackup para realizar los respaldos, aunque si quieres respaldos incrementales vas a tener que usar rsync. Espero te haya servido esta explicación. Saludos, -- Martín Marquéshttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Re: Informacion archivos base de datos
El 27/10/17 a las 11:50, Ronald Viscarra escribió: > contras: posible corrupcion al almacenar datos binarios Eso no es cierto. Seguro la aplicación tenia algún bug y guardo el binario en algún formato que lo corrompió. Saludos, -- Martín Marquéshttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Re: Informacion archivos base de datos
El 27/10/17 a las 15:43, Luis Fernando Lopez Aguilar escribió: > contras no deberia existir de ninguna clase el unico caso que > tampoco es contra es incremento de almacenamiento masivo, pero cual es > el miedo terabytes? petabytes? La contra es de performance. Es mucho más rápido/eficiente copiar directamente a disco que insertarlo en la BBDD donde debe pasar por el parser. Tambien hay otras contras dependiendo del tipo de almacenamiento que usen en postgres (bytea vs. large object) Con bytea los datos terminan en la tabla toast, a menos que el binario sea muy chico (menos de 4kb). Ahí los datos además se comprimen, lo que es más lento aún. Si usan LO los datos van al catalogo, lo que no permite, por ejemplo, replicar los datos. Tambien es muy, pero muy lento si hay que hacer un pg_dump de los LO y hay una cantidad importante de objetos (millones de objectos). A pesar de esto, yo recomiendo guardar los datos en la BBDD por integridad referencial. Saludos, -- Martín Marquéshttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services