"Avec Oracle 11.2, j'utilise la colonne version de v$instance pour déterminer la version du SGBD.
Avec Oracle 18c, je peux aussi utiliser la colonne version_full de v$instance pour avoir en plus la version mineure.
Quelle est la méthode recommandée avec PostgreSQL ?"
Réponse :
Ces colonnes sont des chaînes de caractère, e.g 18.3.0.0. Ce n'est pas forcément idéal pour réaliser des tests.
Je recommande avec PostgreSQL d'utiliser « SELECT current_setting('server_version_num') » pour déterminer précisément la version mineure.
Exemples :
10 => 100000
10.5 => 100005
11 => 110000
…
La valeur numérique obtenue pour une version majeure est donc forcément supérieure à celle obtenue avec une version majeure antérieure même si cette dernière a été patchée avec une version mineure.
Cela peut donner :
Code : Tout sélectionner
...
declare -i postgres_version=`psql ${psql_connect_string} -c "SELECT current_setting('server_version_num')" -t -A -q -X`
...
elif [[ ${postgres_version} -lt 100000 ]] && [[ ${partitionnement} -eq 1 ]]; then
error "${error_015_postgresql_version}"" : -j"
exit 1
...
Si je voulais en plus éviter tel bug corrigé par une version mineure, il faudrait tester plus finement.