Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 892 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 892 Rev 893
1
# Ce Makefile effectue les substitutions de nom de base de données
1
# Ce Makefile effectue les substitutions de nom de base de données
2
# nécessaire au préalable de l'application des scripts SQL
2
# nécessaire au préalable de l'application des scripts SQL
3
 
3
 
4
# Cela est d'un part moins complexe:
4
# Cela est d'un part moins complexe:
5
# - qu'un script PHP (interpréteur, getopt, framework, ...)
5
# - qu'un script PHP (interpréteur, getopt, framework, ...)
6
# - qu'un shell-script (lancement avec make)
6
# - qu'un shell-script (lancement avec make)
7
# et d'autre part plus maintenable qu'un shell-script car
7
# et d'autre part plus maintenable qu'un shell-script car
8
# le versionnage des fichiers (inc ".current") permet certaines facilités.
8
# le versionnage des fichiers (inc ".current") permet certaines facilités.
9
 
9
 
10
 
10
 
11
# TODO:
11
# TODO:
12
# idéalement, ce Makefile devrait permettre une bonne gestion du jeu de dépendances
12
# idéalement, ce Makefile devrait permettre une bonne gestion du jeu de dépendances
13
# entre les scripts, seulement le lancement d'un script pouvant nécessiter un login/mdp
13
# entre les scripts, seulement le lancement d'un script pouvant nécessiter un login/mdp
14
# il est difficile de vouloir rester "simple".
14
# il est difficile de vouloir rester "simple".
15
# Ce serait cependant la meilleure manière de procéder, ainsi "maj2" ne serait lancé qu'en
15
# Ce serait cependant la meilleure manière de procéder, ainsi "maj2" ne serait lancé qu'en
16
# cas de succès de "maj1", celui-ci pouvant être détecté comme "déjà exécuté" ou non.
16
# cas de succès de "maj1", celui-ci pouvant être détecté comme "déjà exécuté" ou non.
17
# cf target "maj1" ci-dessous
17
# cf target "maj1" ci-dessous
18
 
18
 
19
 
19
 
20
# à l'aide de, note certains de ces fichiers n'ont pas cours dans le cadre de la maj1 (septembre 2013)
20
# à l'aide de, note certains de ces fichiers n'ont pas cours dans le cadre de la maj1 (septembre 2013)
21
# echo $(egrep -l 'BASE(SOURCE|EDIT|ANNUAIRE)' *.sql)
21
# echo $(egrep -l 'BASE(SOURCE|EDIT|ANNUAIRE)' *.sql)
22
fichiers = cel_references.sql dedup-ordre-201307.sql fix-utilisateur-32.sql maj-cleanup-201307.sql maj-nom-ret.sql \
22
fichiers = cel_references.sql dedup-ordre-201307.sql fix-utilisateur-32.sql maj-cleanup-201307.sql maj-nom-ret.sql \
23
		   maj-referentiel-201307.sql maj-referentiel-und-201307.sql maj-struct-201307.sql redempteur.sql \
23
		   maj-referentiel-201307.sql maj-referentiel-und-201307.sql maj-struct-201307.sql redempteur.sql \
24
		   referonosaure.sql \
24
		   referonosaure.sql \
25
		   .current
25
		   .current
26
 
26
 
27
# la base de données à modifier
27
# la base de données à modifier
28
alterdb ?= tb_cel_test
28
alterdb ?= tb_cel_test
29
 
29
 
30
# pour bdtfx, bdtxa, isfan, nvjfl, nva, baseflor, ... lecture seule;
30
# pour bdtfx, bdtxa, isfan, nvjfl, nva, baseflor, ... lecture seule;
31
# utilisée pour actualiser les enregistrements de cel_obs dans referonosaure.sql
31
# utilisée pour actualiser les enregistrements de cel_obs dans referonosaure.sql
32
sourcedb ?= tb_eflore
32
sourcedb ?= tb_eflore
33
 
33
 
34
# pour annuaire_tela, lecture seule;
34
# pour annuaire_tela, lecture seule;
35
# utilisée pour initialiser cel_utilisateurs dans maj-struct-201307.sql
35
# utilisée pour initialiser cel_utilisateurs dans maj-struct-201307.sql
36
annuairedb ?= tela_prod_v4
36
annuairedb ?= tela_prod_v4
37
 
37
 
38
bdtfx ?= 1_01
38
bdtfx ?= 1_01
39
bdtxa ?= 1_00
39
bdtxa ?= 1_00
40
isfan ?= 2013
40
isfan ?= 2013
41
bdtfx_table = bdtfx_v$(bdtfx)
41
bdtfx_table = bdtfx_v$(bdtfx)
42
bdtxa_table = bdtxa_v$(bdtxa)
42
bdtxa_table = bdtxa_v$(bdtxa)
43
isfan_table = isfan_v$(isfan)
43
isfan_table = isfan_v$(isfan)
44
 
44
 
45
# TODO: simply override bdd_user
45
# TODO: simply override bdd_user
46
ifdef bdd_user
46
ifdef bdd_user
47
	bdd_user_h = -u$(bdd_user)
47
	bdd_user_h = -u$(bdd_user)
48
endif
48
endif
49
 
49
 
50
ifneq ($(origin bdd_pass), undefined)
50
ifneq ($(origin bdd_pass), undefined)
51
	bdd_pass_h = "-p$(bdd_pass)"
51
	bdd_pass_h = "-p$(bdd_pass)"
52
endif
52
endif
53
 
53
 
54
mysqlbin ?= mysql
54
mysqlbin ?= mysql
55
mysqlcmd = $(mysqlbin) $(bdd_user_h) $(bdd_pass_h)
55
mysqlcmd = $(mysqlbin) $(bdd_user_h) $(bdd_pass_h)
56
 
56
 
57
# macro utilisable pour les targets nécessitant de tester la présence d'un couple (base,table)
57
# macro utilisable pour les targets nécessitant de tester la présence d'un couple (base,table)
58
# exemples:
58
# exemples:
59
# * $(call is_table,tb_eflore,bdtfx_v1_01)
59
# * $(call is_table,tb_eflore,bdtfx_v1_01)
60
# * $(call is_table,$(annuairedb),annuaire_tela)
60
# * $(call is_table,$(annuairedb),annuaire_tela)
61
# argument 1: base de données
61
# argument 1: base de données
62
# argument 2: table
62
# argument 2: table
63
is_table = $(mysqlcmd) -N $(1) <<<"DESC $(2)" &> /dev/null
63
is_table = $(mysqlcmd) -N $(1) <<<"DESC $(2)" &> /dev/null
64
 
64
 
65
# macro utilisable pour effectuer des substitutions:
65
# macro utilisable pour effectuer des substitutions:
66
do_subst = sed -e "1i--\n-- fichier d'origine: \"${1}\"\n" \
66
do_subst = sed -e "1i--\n-- fichier d'origine: \"${1}\"\n" \
67
		   -e 's/`BASEEDIT`/`$(alterdb)`/g' \
67
		   -e 's/`BASEEDIT`/`$(alterdb)`/g' \
68
		   -e 's/`BASEANNUAIRE`/`$(annuairedb)`/g' \
68
		   -e 's/`BASEANNUAIRE`/`$(annuairedb)`/g' \
69
		   -e 's/`BASESOURCE`/`$(sourcedb)`/g' \
69
		   -e 's/`BASESOURCE`/`$(sourcedb)`/g' \
70
		   -e 's/`TABLEBDTFX`/`$(bdtfx_table)`/g' \
70
		   -e 's/`TABLEBDTFX`/`$(bdtfx_table)`/g' \
71
		   -e 's/`TABLEBDTXA`/`$(bdtxa_table)`/g' \
71
		   -e 's/`TABLEBDTXA`/`$(bdtxa_table)`/g' \
72
		   -e 's/`TABLEISFAN`/`$(isfan_table)`/g' \
72
		   -e 's/`TABLEISFAN`/`$(isfan_table)`/g' \
73
		   -e 's/TABLEBDTFX/`$(bdtfx_table)`/g' \
73
		   -e 's/TABLEBDTFX/`$(bdtfx_table)`/g' \
74
		   -e 's/TABLEBDTXA/`$(bdtxa_table)`/g' \
74
		   -e 's/TABLEBDTXA/`$(bdtxa_table)`/g' \
75
		   -e 's/TABLEISFAN/`$(isfan_table)`/g' \
75
		   -e 's/TABLEISFAN/`$(isfan_table)`/g' \
76
		   $(1)
76
		   $(1)
77
 
77
 
78
# default target
78
# default target
79
help:
79
help:
80
	@echo "make [alterdb=<$(alterdb)>] [sourcedb=<$(sourcedb)>] [annuairedb=<$(annuairedb)>] [bdtfx=<$(bdtfx)>] [bdtxa=<$(bdtxa)>] [isfan=$(isfan)] [bdd_user=\"\"] [bdd_pass=\"\"] [mysqlbin=mysql]"
80
	@echo "make [alterdb=<$(alterdb)>] [sourcedb=<$(sourcedb)>] [annuairedb=<$(annuairedb)>] [bdtfx=<$(bdtfx)>] [bdtxa=<$(bdtxa)>] [isfan=$(isfan)] [bdd_user=\"\"] [bdd_pass=\"\"] [mysqlbin=mysql]"
81
	@echo "make o_maj1 mysqlbin=/usr/local/mysql/bin/mysql bdd_user=telabotap bdd_pass=XXX"
81
	@echo "make o_maj1 mysqlbin=/usr/local/mysql/bin/mysql bdd_user=telabotap bdd_pass=XXX"
82
 
82
 
83
# génère les fichiers avec les bases de données souhaitées
83
# génère les fichiers avec les bases de données souhaitées
84
compile: reset
84
compile: reset
85
	sed -i -e 's/`BASEEDIT`/`$(alterdb)`/g'  \
85
	sed -i -e 's/`BASEEDIT`/`$(alterdb)`/g'  \
86
		   -e 's/`BASEANNUAIRE`/`$(annuairedb)`/g'  \
86
		   -e 's/`BASEANNUAIRE`/`$(annuairedb)`/g'  \
87
		   -e 's/`BASESOURCE`/`$(sourcedb)`/g'  \
87
		   -e 's/`BASESOURCE`/`$(sourcedb)`/g'  \
88
		   -e 's/TABLEBDTFX/`$(bdtfx_table)`/g'  \
88
		   -e 's/TABLEBDTFX/`$(bdtfx_table)`/g'  \
89
		   -e 's/TABLEBDTXA/`$(bdtxa_table)`/g'  \
89
		   -e 's/TABLEBDTXA/`$(bdtxa_table)`/g'  \
90
		   -e 's/`TABLEISFAN`/`$(isfan_table)`/g'  \
90
		   -e 's/`TABLEISFAN`/`$(isfan_table)`/g'  \
91
		   $(fichiers)
91
		   $(fichiers)
92
	printf "Attention: les changements s'appliqueront sur la base \"%s\"\nLes sources utilisées seront: annuaire=\"%s\" ,  sources=\"%s\" (%s,%s,%s)\n(Ctrl+C pour interrompre, Enter pour continuer)\n" \
92
	printf "Attention: les changements s'appliqueront sur la base \"%s\"\nLes sources utilisées seront: annuaire=\"%s\" ,  sources=\"%s\" (%s,%s,%s)\n(Ctrl+C pour interrompre, Enter pour continuer)\n" \
93
			`grep ^BASEEDIT .current|cut -d '\`' -f2` \
93
			`grep ^BASEEDIT .current|cut -d '\`' -f2` \
94
			`grep ^BASEANNUAIRE .current|cut -d '\`' -f2` \
94
			`grep ^BASEANNUAIRE .current|cut -d '\`' -f2` \
95
			`grep ^BASESOURCE .current|cut -d '\`' -f2` \
95
			`grep ^BASESOURCE .current|cut -d '\`' -f2` \
96
			`grep ^TABLE_BDTFX .current|cut -d '=' -f2` \
96
			`grep ^TABLE_BDTFX .current|cut -d '=' -f2` \
97
			`grep ^TABLE_BDTXA .current|cut -d '=' -f2` \
97
			`grep ^TABLE_BDTXA .current|cut -d '=' -f2` \
98
			`grep ^TABLE_ISFAN .current|cut -d '=' -f2`
98
			`grep ^TABLE_ISFAN .current|cut -d '=' -f2`
99
	read
99
	read
100
 
100
 
101
reset:
101
reset:
102
	svn revert -q $(fichiers)
102
	svn revert -q $(fichiers)
103
 
103
 
104
# supprime les fichiers "compilés" (concaténation de plusieurs scripts SQL substitués)
104
# supprime les fichiers "compilés" (concaténation de plusieurs scripts SQL substitués)
105
clean:
105
clean:
106
	rm -f *.comp.sql
106
	rm -f *.comp.sql
107
 
107
 
108
### mises à jour
108
### mises à jour
109
 
109
 
110
# mise à jour de septembre 2013
110
# mise à jour de septembre 2013
111
# spécifier les targets dans l'ordre (cf A_LIRE.txt)
111
# spécifier les targets dans l'ordre (cf A_LIRE.txt)
112
 
112
 
113
 
113
 
114
# première version: substitution des fichiers: pas bon
114
# première version: substitution des fichiers: pas bon
115
# attention, si un prérequis ne génère pas de SQL, cela n'empêchera pas le fichier
115
# attention, si un prérequis ne génère pas de SQL, cela n'empêchera pas le fichier
116
# final de maj d'être généré, 
116
# final de maj d'être généré, 
117
#maj1: compile cel_references maj-struct-201307 maj-cleanup-201307 fix-utilisateur-32 dedup-ordre-201307 maj-referentiel-201307
117
#maj1: compile cel_references maj-struct-201307 maj-cleanup-201307 fix-utilisateur-32 dedup-ordre-201307 maj-referentiel-201307
118
#	echo done
118
#	echo done
119
 
119
 
120
o_maj1: fichiers_generes = $(addsuffix .comp.sql,$(filter-out clean,$?))
120
o_maj1: fichiers_generes = $(addsuffix .comp.sql,$(filter-out clean,$?))
121
o_maj1: clean o_cel_references o_maj-struct-201307 o_maj-cleanup-201307 o_fix-utilisateur-32 o_dedup-ordre-201307 o_maj-referentiel-201307 o_referonosaure
121
o_maj1: clean o_cel_references o_maj-struct-201307 o_maj-cleanup-201307 o_fix-utilisateur-32 o_dedup-ordre-201307 o_maj-referentiel-201307 o_referonosaure
122
	cat $(fichiers_generes) > maj1.comp.sql
122
	cat $(fichiers_generes) > maj1.comp.sql
123
	echo done
123
	echo done
124
 
124
 
125
### fin: mises à jour
125
### fin: mises à jour
126
 
126
 
127
 
127
 
128
### tools
128
### tools
129
 
129
 
130
check_cel_obs:
130
check_cel_obs:
131
	$(call is_table,$(alterdb),cel_obs)
131
	$(call is_table,$(alterdb),cel_obs)
132
 
132
 
133
### fin: tools
133
### fin: tools
134
 
134
 
135
 
135
 
136
### mises à jour individuelles (scripts)
136
### mises à jour individuelles (scripts)
137
### pour chacun d'entre-eux, deux versions existent,
137
### pour chacun d'entre-eux, deux versions existent,
138
### 1) L'un compile (après substitution des noms dans le fichier SQL original)
138
### 1) L'un compile (après substitution des noms dans le fichier SQL original)
139
### et pipe vers mysql directement, ce qui suppose aussi un .my.cnf ou autre
139
### et pipe vers mysql directement, ce qui suppose aussi un .my.cnf ou autre
140
### 2) L'autre (préfixé par o_), renvoie le fichier substitué en sortie standard
140
### 2) L'autre (préfixé par o_), renvoie le fichier substitué en sortie standard
141
### et le target principal s'occupe de concaténer et de créer un fichier de destination
141
### et le target principal s'occupe de concaténer et de créer un fichier de destination
142
### Cette méthode est de loin préférable et conforme à la philosophie Makefile
142
### Cette méthode est de loin préférable et conforme à la philosophie Makefile
143
cel_references:
143
cel_references:
144
	$(call is_table,$(sourcedb),$(bdtfx_table))
144
	$(call is_table,$(sourcedb),$(bdtfx_table))
145
	$(call is_table,$(sourcedb),nvjfl_v2007)
145
	$(call is_table,$(sourcedb),nvjfl_v2007)
146
	$(call is_table,$(sourcedb),nva_index_v2_03)
146
	$(call is_table,$(sourcedb),nva_index_v2_03)
147
	$(call is_table,$(alterdb),cel_references) || $(mysqlcmd) < cel_references.sql
147
	$(call is_table,$(alterdb),cel_references) || $(mysqlcmd) < cel_references.sql
148
o_cel_references:
148
o_cel_references:
149
	$(call is_table,$(sourcedb),$(bdtfx_table))
149
	$(call is_table,$(sourcedb),$(bdtfx_table))
150
	$(call is_table,$(sourcedb),nvjfl_v2007)
150
	$(call is_table,$(sourcedb),nvjfl_v2007)
151
	$(call is_table,$(sourcedb),nva_index_v2_03)
151
	$(call is_table,$(sourcedb),nva_index_v2_03)
152
	$(call is_table,$(alterdb),cel_references) || $(call do_subst,cel_references.sql) > $@.comp.sql
152
	$(call is_table,$(alterdb),cel_references) || $(call do_subst,cel_references.sql) > $@.comp.sql
153
 
153
 
154
maj-struct-201307: check_cel_obs
154
maj-struct-201307: check_cel_obs
155
	$(call is_table,$(annuairedb),annuaire_tela)
155
	$(call is_table,$(annuairedb),annuaire_tela)
156
	$(mysqlcmd) -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || $(mysqlcmd) < maj-struct-201307.sql
156
	$(mysqlcmd) -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || $(mysqlcmd) < maj-struct-201307.sql
157
o_maj-struct-201307: check_cel_obs
157
o_maj-struct-201307: check_cel_obs
158
	$(call is_table,$(annuairedb),annuaire_tela)
158
	$(call is_table,$(annuairedb),annuaire_tela)
159
	$(mysqlcmd) -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || $(call do_subst,maj-struct-201307.sql) > $@.comp.sql
159
	$(mysqlcmd) -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || $(call do_subst,maj-struct-201307.sql) > $@.comp.sql
160
 
160
 
161
maj-cleanup-201307: check_cel_obs
161
maj-cleanup-201307: check_cel_obs
162
	! $(mysqlcmd) -N $(alterdb) <<<"SELECT 1 FROM cel_obs WHERE nom_ret = 'null' LIMIT 1"|grep -q 1 || $(mysqlcmd) < maj-cleanup-201307.sql
162
	! $(mysqlcmd) -N $(alterdb) <<<"SELECT 1 FROM cel_obs WHERE nom_ret = 'null' LIMIT 1"|grep -q 1 || $(mysqlcmd) < maj-cleanup-201307.sql
163
o_maj-cleanup-201307:
163
o_maj-cleanup-201307:
164
# tb_cel_test clean
164
# tb_cel_test clean
165
	! $(mysqlcmd) -N $(alterdb) <<<"SELECT 1 FROM cel_obs WHERE nom_ret = 'null' LIMIT 1"|grep -q 1 || $(call do_subst,maj-cleanup-201307.sql) > $@.comp.sql
165
	! $(mysqlcmd) -N $(alterdb) <<<"SELECT 1 FROM cel_obs WHERE nom_ret = 'null' LIMIT 1"|grep -q 1 || $(call do_subst,maj-cleanup-201307.sql) > $@.comp.sql
166
 
166
 
167
fix-utilisateur-32: check_cel_obs
167
fix-utilisateur-32: check_cel_obs
168
	$(mysqlcmd) -N $(alterdb) <<<"DESC cel_obs ce_utilisateur"|grep -q 255 || $(mysqlcmd) < fix-utilisateur-32.sql
168
	$(mysqlcmd) -N $(alterdb) <<<"DESC cel_obs ce_utilisateur"|grep -q 255 || $(mysqlcmd) < fix-utilisateur-32.sql
169
o_fix-utilisateur-32: check_cel_obs
169
o_fix-utilisateur-32: check_cel_obs
170
	$(mysqlcmd) -N $(alterdb) <<<"DESC cel_obs ce_utilisateur"|grep -q 255 || $(call do_subst,fix-utilisateur-32.sql) > $@.comp.sql
170
	$(mysqlcmd) -N $(alterdb) <<<"DESC cel_obs ce_utilisateur"|grep -q 255 || $(call do_subst,fix-utilisateur-32.sql) > $@.comp.sql
171
 
171
 
172
dedup-ordre-201307: check_cel_obs
172
dedup-ordre-201307: check_cel_obs
173
#$(mysqlcmd) -N $(alterdb) <<<'SELECT distinct ce_utilisateur FROM `cel_obs` GROUP BY ce_utilisateur, ordre HAVING COUNT(*) > 1'|grep -q . || $(mysqlcmd) < dedup-ordre-201307.sql
173
#$(mysqlcmd) -N $(alterdb) <<<'SELECT distinct ce_utilisateur FROM `cel_obs` GROUP BY ce_utilisateur, ordre HAVING COUNT(*) > 1'|grep -q . || $(mysqlcmd) < dedup-ordre-201307.sql
174
	$(mysqlcmd) -N $(alterdb) <<<"SHOW INDEX FROM cel_obs"|grep -q couple_user_ordre || $(mysqlcmd) < dedup-ordre-201307.sql
174
	$(mysqlcmd) -N $(alterdb) <<<"SHOW INDEX FROM cel_obs"|grep -q couple_user_ordre || $(mysqlcmd) < dedup-ordre-201307.sql
175
o_dedup-ordre-201307: check_cel_obs
175
o_dedup-ordre-201307: check_cel_obs
-
 
176
# l'index doit sur cel_obs doit avoir deux lignes dont le champs "non_unique" = 0
176
	$(mysqlcmd) -N $(alterdb) <<<"SHOW INDEX FROM cel_obs"|grep -q couple_user_ordre || $(call do_subst,dedup-ordre-201307.sql) > $@.comp.sql
177
	$(mysqlcmd) -N $(alterdb) <<<"SHOW INDEX FROM cel_obs"|grep -w id_obs|awk '{print $$2}'|tr -d "\n"|grep -q 00 || $(call do_subst,dedup-ordre-201307.sql) > $@.comp.sql
177
 
178
 
178
# maj-referentiel-201307.sql: # pas de test aisé et rapide
179
# maj-referentiel-201307.sql: # pas de test aisé et rapide
179
# doit passer APRÈS o_maj-cleanup-201307 (pas de nom_ret_nn = 0)
180
# doit passer APRÈS o_maj-cleanup-201307 (pas de nom_ret_nn = 0)
180
o_maj-referentiel-201307: check_cel_obs
181
o_maj-referentiel-201307: check_cel_obs
181
	$(call do_subst,maj-referentiel-201307.sql) > $@.comp.sql
182
	$(call do_subst,maj-referentiel-201307.sql) > $@.comp.sql
182
 
183
 
183
# pas de test aisé non plus pour savoir s'il doit repasser
184
# pas de test aisé non plus pour savoir s'il doit repasser
184
# néanmoins c'est un script sur (peut-être invoqué répétivement)
185
# néanmoins c'est un script sur (peut-être invoqué répétivement)
185
o_referonosaure: check_cel_obs
186
o_referonosaure: check_cel_obs
186
	$(call do_subst,referonosaure.sql) > $@.comp.sql
187
	$(call do_subst,referonosaure.sql) > $@.comp.sql
187
 
188
 
188
 
189
 
189
 
190
 
190
# pour une prochaine maj
191
# pour une prochaine maj
191
maj-nom-ret:
192
maj-nom-ret:
192
	$(mysqlcmd) -N <<<'SELECT count(1) FROM `$(alterdb)`.`cel_obs` c LEFT JOIN `$(sourcedb)`.`$(bdtfx_table)` b on (c.nom_ret = b.nom_sci) WHERE nom_ret_nn = 0 AND c.nom_ret != "" AND id_observation NOT IN ( SELECT id_observation FROM `$(alterdb)`.`cel_obs` c, `$(sourcedb)`.`$(bdtfx_table)` b WHERE c.nom_ret = b.nom_sci AND c.nom_ret_nn = 0 );'|grep -q 0
193
	$(mysqlcmd) -N <<<'SELECT count(1) FROM `$(alterdb)`.`cel_obs` c LEFT JOIN `$(sourcedb)`.`$(bdtfx_table)` b on (c.nom_ret = b.nom_sci) WHERE nom_ret_nn = 0 AND c.nom_ret != "" AND id_observation NOT IN ( SELECT id_observation FROM `$(alterdb)`.`cel_obs` c, `$(sourcedb)`.`$(bdtfx_table)` b WHERE c.nom_ret = b.nom_sci AND c.nom_ret_nn = 0 );'|grep -q 0
193
o_maj-nom-ret:
194
o_maj-nom-ret:
194
	$(call do_subst,maj-nom-ret.sql) > $@.comp.sql
195
	$(call do_subst,maj-nom-ret.sql) > $@.comp.sql