Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Firebird 4 Release Candidate (https://www.clubdelphi.com/foros/showthread.php?t=95123)

CyberManolo 17-03-2021 15:40:00

Firebird 4 Release Candidate
 
Hola a todos.

¿Alguien ha probado Firebird 4 RC con los controles habituales de Firebird o IB de Delphi? Parece que no funcionan los métodos Update, Insert o Delete tal como si funcionan hasta firebird 3.

Casimiro Notevi 17-03-2021 16:43:45

Exactamente el qué no funciona y con qué.

CyberManolo 17-03-2021 18:58:14

Debí ser algo más explicito
 
Ejemplo.

Migramos una base de datos que funciona perfectamente en firebird 3, a firebird 4, Mediante backup en firebird 3 y restore en firebird 4. Tenemos una aplicación Delphi que mediante un control TIbTable edita una tabla de la base de datos en firebird 3 correctamente. Pues bien, al atacar la base de datos firebird 4, muestra el grid asociado al control Ibtable, pero da error Acceso Violation al intentar editar una fila.
Me he cuidado de sustituir el cliente firebird correspondiente a firebird 3 por el de Firebird 4 en la carpeta de la aplicación (gds32.dll en este caso).

CyberManolo 17-03-2021 19:31:35

Poca documentacion
 
Realmente hay poca documentación de la migracion de FB 3 a FB 4. Hay determinadas funciones (UDF) que son validas en FB 3 y que cambian de nombre y quizás de propiedades en FB 4.

Hay, en la carpeta MISC de fb 4 un SQL para actualizar funciones, que se lo pasé a mi base de datos, tras lo cual, al hacer de nuevo backup/restore me dio un warning advirtiendo que la funcion FLOOR() no existe en FB 4. Parece ser que por un olvido, la función FLOOR no ha sido incluida en el mencionado SQL actualizador de nombres de UDFs de FB3 a FB4.

Tampoco se si ese warning es suficiente para que el restore no se haya hecho completamente y de ahí que no funcionen los métodos de edición de los controles de datos de la pestaña Interbase de Delphi.

Casimiro Notevi 17-03-2021 19:43:52

Lo he probado y funciona normalmente.


CyberManolo 17-03-2021 20:30:37

Efectivamente...
 
Muchas gracias Casimiro Notevi.

Tengo que buscar entonces en el proceso de migración de mi base de datos FB 3 a FB 4. Como comenté me dió un warning en el restore, con la función FLOOR. Es decir, no hizo un restore limpio y puede que esté ahí el motivo.

También puede influir que mi Delphi es Delphi 6.

He de suponer que la prueba que has hecho tu ha sido con una base de datos creada directamente en FB 4. Cuando consiga que funcione correctamente con mi base de datos migrada, pondré por aquí el motivo.

Saludos.

Casimiro Notevi 17-03-2021 20:40:48

Recuerda que para cambiar de versión una BD o de sistema operativo, hay que crear el backup transportable.

gbak -t .....

Lo de la versión de delphi no tiene nada que ver, o al menos no debería influir, salvo que los componentes que estés usando no estén adaptados a las nuevas versiones.

lbuelvas 18-03-2021 00:19:03

Te cuento mi experiencia al migrar de Firebird 1.5.6 a Firebird 3.0, resulta que se recomienda no usar UDF's pero las permite, lo que sucedió es que nos resulto la BD en Firebird 3.0 pero con UDF's de la versión 1.5, no se si las funciones al ejecutarse se hacían por el lado de las UDF's o de las funciones internas del motor. Lo que nos tocó hacer fue eliminar todas las funciones de las UDF's, las que no se dejaron pues, porque se usaban en triggers y procedimientos almacenados, pusimos en comentarios donde se usaban. La función FLOOR es una de esas que generan problema, nos toco hacer una hoja en Excel con el nombre del trigger o procedimiento almacenado afectado, comentar las líneas, luego bakup/restore y quitar los comentarios.

CyberManolo 22-03-2021 11:17:14

Resuelto!
 
Indicaciones para migrar de firebird 3.0 a firebird 4.0

1) Realizar un backup con el parámetro -t en firebird 3.0
2) Realizar un restore normal en firebird 4.0
- Nos dará una serie de warnings relativos, sobre todo, a UDFs. pero creará la base de datos, aunque esta base de datos no es utilizable.
3) Nos conectamos con Ibexpert u otro RDBMS a dicha base de datos y lo primero que hacemos es pasar el script UDF_REPLACE que viene en la ruta c:\archivos de programa\firebird\firebird_4_0\misc\upgrade\v4.0
4) Hacemos backup normal de la base de datos, ya en la 4.0 y luego otra vez restore. Si no nos da ningún tipo de warning, la base de datos así genereada ya es utilizable. Si da algún warning, como fue mi caso, con la función FLOOR, toca entrar a la base de datos y localizar las dependencias de FLOOR y cambiarlas por otra función similar (en mi caso usé CAST ({valor} as integer). Luego volver a hacer backup/restore hasta que no de ningún warning.

Lo bueno que tiene firebird 4 es la replicación nativa, entre otras cosas. No obstante, en la RC1 no he visto que mejore las prestaciones en cuanto a velocidad de Firebird 3.0 o firebird 2.5

Saludos.

muli 28-03-2021 13:35:20

En mi caso pasé de Firebird 2.5 a Firebird 4.0 RC1, lo unico que puedo decir que el proceso de conversión no me dió ningún fallo, pero cuando desde delphi algo una simple suma con SQL no me devuelve ningun valor y la misma consulta con los mismos parametros desde el ibexpert si que me da resultado. Será un problema de delphi, del firedac o de la RC1, estoy con Delphi Rio, solo me queda decir que con la consulta en firebird 2.5 si devuelve la suma. Es una consulta muy sencilla " Sum(Campo),Sum(Campo1) Where xxxxxxxx, lo raro es que no devuelve 0, devuelve blancos. Me da que voy a tener que eliminar la FB4 y volver a FB 2.5 que funciona de perlas.

Saludos.

Casimiro Notevi 28-03-2021 14:59:17

Si no pones el código, es imposible ayudarte.

muli 28-03-2021 17:18:52

Select Sum(Campo),Sum(Campo1) From Tabla , demasiado sencillo no?, No creo que haya que explicar nada. La misma consulta con firebird 2.5 me devuelve valores. La única diferencia es Firebird.

Casimiro Notevi 28-03-2021 21:56:56

Pues sí hay mucho que explicar, porque yo lo tengo instalado y funciona normalmente.

muli 28-03-2021 23:02:35

Pues te comento que desinstalé el FB 4 RC1, instalé el el Firebird 2.5 y sin tocar nada absolutamente en el código todo comenzó a funcionar como antes. No me parece lógico que una simple consulta a una tabla para pedir unas columnas sumadas, sin ninguna condición, no tienen ningún valor nulo, ni nada raro son solo dos columnas del tipo numeric(15,2). En fin, seguiremos probando haber si descubrimos por que aparecen esos bugs.

Saludos a todos.

Casimiro Notevi 29-03-2021 10:08:49

Precisamente por eso, porque es algo simple, debería funcionar sin problema.

Te pregunto para intentar solucionarlo, y en todo caso para enviar un mensaje a firebird para que lo solucionen.
Aunque he hecho una simple prueba y funciona como era de esperar.



La franja horaria es GMT +2. Ahora son las 13:40:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi