Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 9249a264

Von mh@waldpark.octosoft.eu vor mehr als 8 Jahren hinzugefügt

  • ID 9249a2646e746592dfb5b0fab481b4da25af7bed
  • Vorgänger 429297b4
  • Nachfolger 60fd9199

SQL-Fehler falls -- in quotiertem String vorkommt.

z.B. In dem script steht folgende Zeile
INSERT INTO partstypes values(0,'-------','-','f','f','f');

da aber in SL/DBUpgrade2.pm generell alle Zeilenteile die -- haben,
weggeworfen werden:

s/--.*$;

wird der Rest der Datei nach Quote Ende durchsucht und nix mehr passiert.

Also schön nach zwei hintereinanderkommenden -- suchen aber nicht innerhalb von Quotestrings

Unterschiede anzeigen:

SL/DBUpgrade2.pm
147 147
    # Remove DOS and Unix style line endings.
148 148
    chomp;
149 149

  
150
    # remove comments
151
    s/--.*$//;
152

  
153 150
    for (my $i = 0; $i < length($_); $i++) {
154 151
      my $char = substr($_, $i, 1);
155 152

  
......
176 173
             &&  $tag      =~ /^ (?= [A-Za-z_] [A-Za-z0-9_]* | ) $/x) {  # tag is identifier
177 174
          push @quote_chars, $char = '$' . $tag . '$';
178 175
          $i = $tag_end;
176
        } elsif ($char eq "-") {
177
          if ( substr($_, $i+1, 1) eq "-") {
178
            # found a comment outside quote
179
            last;
180
          }
179 181
        } elsif ($char eq ";") {
180 182

  
181 183
          # Query is complete. Send it.

Auch abrufbar als: Unified diff