Valider dae89331 rédigé par denisb's avatar denisb
Parcourir les fichiers

prendre en compte le cas particulier de sous-requetes produites par sql_in...

prendre en compte le cas particulier de sous-requetes produites par sql_in quand plus de 255 valeurs sont passees dans un critere IN d'une boucle DATA (iterateurs).
parent 520bf662
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+12 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -217,8 +217,17 @@ class IterDecorator extends FilterIterator {
					$menage = true;
				}
				// traiter {cle IN a,b} ou {valeur !IN a,b}				
				if (preg_match(',^\(\(([\w/]+)(\s+NOT)?\s+IN\s+(\(.*\))\)\)$,', $op, $regs)) {
					$this->ajouter_filtre($regs[1], 'IN', $regs[3], $regs[2]);
				// prendre en compte le cas particulier de sous-requetes
				// produites par sql_in quand plus de 255 valeurs passees a IN
				if (preg_match_all(',\s+IN\s+(\(.*\)),', $op, $s_req)) {
					$req = '';
					foreach($s_req[1] as $key => $val) {
						$req .= trim($val, '(,)') . ',';
					}
					$req = '(' . rtrim($req, ',') . ')';
				}
				if (preg_match(',^\(\(([\w/]+)(\s+NOT)?\s+IN\s+(\(.*\))\)(?:\s+(AND|OR)\s+\(([\w/]+)(\s+NOT)?\s+IN\s+(\(.*\))\))*\)$,', $op, $regs)) {
					$this->ajouter_filtre($regs[1], 'IN', strlen($req) ? $req : $regs[3], $regs[2]);
					unset($op);
				}
			}