Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision b2448c14

Von Sven Schöling vor etwa 12 Jahren hinzugefügt

  • ID b2448c147778ca345decb911aee36f13eca610ae
  • Vorgänger 846c2f9e
  • Nachfolger 13ba7019

DBUpgrade kann jetzt auch dollar quoting in SQL.

Unterschiede anzeigen:

SL/DBUpgrade2.pm
162 162
      if (@quote_chars) {
163 163
        if ($char eq $quote_chars[-1]) {
164 164
          pop(@quote_chars);
165
        } elsif (length $quote_chars[-1] > 1
166
             &&  substr($quote_chars[-1], 0, 1) eq $char
167
             &&  substr($_, $i, length $quote_chars[-1]) eq $quote_chars[-1]) {
168
          $i   += length $quote_chars[-1] - 1;
169
          $char = $quote_chars[-1];
170
          pop(@quote_chars);
165 171
        }
166 172
        $query .= $char;
167 173

  
168 174
      } else {
175
        my ($tag, $tag_end);
169 176
        if (($char eq "'") || ($char eq "\"")) {
170 177
          push(@quote_chars, $char);
171 178

  
179
        } elsif ($char eq '$'                                      # start of dollar quoting
180
             && ($tag_end = index($_, '$', $i + 1)) > -1           # ends on same line
181
             && (do { substr($_, $i + 1, $tag_end - $i - 1); 1 })  # extract tag
182
             &&  $tag =~ /^ (?= [A-Za-z_] [A-Za-z0-9_]* | ) $/x) { # tag is identifier
183
          push @quote_chars, $char = '$' . $tag . '$';
184
          $i = $tag_end;
172 185
        } elsif ($char eq ";") {
173 186

  
174 187
          # Query is complete. Send it.

Auch abrufbar als: Unified diff