Beste allemaal,
Na een update van onze database hebben wij een probleem met een hele oude applicatie die gebruik maakt van een PostgreSQL database. De database begint nu errors te geven op queries die eerst wel werkten: hij lijkt stricter te zijn op de datatypes (met errors als "No operator matches the given name and argument type(s). You might need to add explict type casts.").
Aangezien ik het systeem niet zelf heb gebouwd en niet alle queries langs kan om de correctheid ervan te checken, hebben we een workaround bedacht (I know....). We willen de pg_query() functie van PHP vervangen door een eigen implementatie waarbij uit alle queries de database velden en hun values worden gefilterd. Vervolgens kan ik via pg_field_type() de datatypes opzoeken en de values daaraan toetsen en waar nodig casten. Tenslotte moeten we de query opnieuw opbouwen en naar de database sturen.
Terug naar de oude database versie is helaas geen optie.
Twee vragen hierover:
Na een update van onze database hebben wij een probleem met een hele oude applicatie die gebruik maakt van een PostgreSQL database. De database begint nu errors te geven op queries die eerst wel werkten: hij lijkt stricter te zijn op de datatypes (met errors als "No operator matches the given name and argument type(s). You might need to add explict type casts.").
Aangezien ik het systeem niet zelf heb gebouwd en niet alle queries langs kan om de correctheid ervan te checken, hebben we een workaround bedacht (I know....). We willen de pg_query() functie van PHP vervangen door een eigen implementatie waarbij uit alle queries de database velden en hun values worden gefilterd. Vervolgens kan ik via pg_field_type() de datatypes opzoeken en de values daaraan toetsen en waar nodig casten. Tenslotte moeten we de query opnieuw opbouwen en naar de database sturen.
Terug naar de oude database versie is helaas geen optie.
Twee vragen hierover:
- Hoe ga ik die queries intepreteren? Ik ben niet handig met reguliere expressies...
- Hoe ga ik die pg_query functie overschrijven in PHP? kan dat uberhaupt of moet ik hem echt anders noemen (en dus dearch/replace doen in de code, opzich geen ramp)