Changeset 1906 for trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases
- Timestamp:
- 01/03/17 19:55:54 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/objects.pm
r1899 r1906 997 997 } 998 998 999 # We add to result aliases :999 # We add to result aliases pointing to these object: 1000 1000 if(keys %mresults && !$noalias) { 1001 1001 my @alias = $class->_search_uniq_filter($base, 'oalias', '=', join('||', keys %mresults)); … … 1022 1022 return unless(@values); 1023 1023 1024 $base->log(LA_DEBUG, "Uniq search for $attr $operator (%s)", join(' ', @values));1024 $base->log(LA_DEBUG, "Uniq search for " . $class->type . "->$attr $operator (%s)", join(' ', @values)); 1025 1025 1026 1026 # We detect if we can do a very quick search: … … 1028 1028 if ($forRef) { 1029 1029 # Improv perf 1030 1031 my @oaliases = (); 1032 if ($attr ne 'oalias' && $attribute->reference) { 1033 @oaliases = $base->search_objects($attribute->reference, "oalias=$value"); 1034 $base->log(LA_DEBUG, "Uniq search will match oaliases: %s", join(' ', @oaliases) || '(none)'); 1035 } 1036 1030 1037 if ($attribute->{inline}) { 1031 1038 my $sql = sprintf( … … 1043 1050 push(@attrsql, $sql); 1044 1051 } 1045 push(@attrbind, [ grep { $_ ne '||' } @values ]);1052 push(@attrbind, [ @oaliases, grep { $_ ne '||' } @values ]); 1046 1053 } else { 1047 1054 … … 1101 1108 push(@attrbind, $attribute->iname); 1102 1109 } else { 1110 my @oaliases = (); 1111 if ($attr ne 'oalias' && $attribute->reference) { 1112 @oaliases = $base->search_objects($attribute->reference, "oalias=$val"); 1113 $base->log(LA_DEBUG, "Uniq search will match oaliases for %s: %s", $val, join(' ', @oaliases) || '(none)'); 1114 } 1115 1103 1116 $sql = sprintf( 1104 1117 q{select okey from %s where attr = ? %s}, … … 1109 1122 ? '' 1110 1123 : $operator eq '~' 1111 ? q{and value::text ILIKE ?}1112 : qq{and value $operator ?}1124 ? q{and value::text ILIKE ANY(?)} 1125 : qq{and value $operator ANY (?)} 1113 1126 1114 1127 ); 1115 1128 push(@attrbind, $attribute->iname); 1116 push(@attrbind, $operator eq '~' ? '%' . $val . '%' : $val) unless($val eq '*'); 1129 my @vals = ( $val, @oaliases ); 1130 push(@attrbind, $operator eq '~' 1131 ? [ map { '%' . $_ . '%' } @vals ] 1132 : [ @vals ]) 1133 unless($val eq '*'); 1117 1134 } 1118 1135 }
Note: See TracChangeset
for help on using the changeset viewer.