SQL-Fehler falls -- in quotiertem String vorkommt.
authormh@waldpark.octosoft.eu <mh@waldpark.octosoft.eu>
Sat, 22 Feb 2014 10:56:55 +0000 (11:56 +0100)
committerMartin Helmling mh@waldpark.octosoft.eu <martin.helmling@octosoft.eu>
Wed, 1 Jun 2016 14:11:22 +0000 (16:11 +0200)
 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

SL/DBUpgrade2.pm

index 01af8f6..f694b5a 100644 (file)
@@ -147,9 +147,6 @@ sub process_query {
     # Remove DOS and Unix style line endings.
     chomp;
 
-    # remove comments
-    s/--.*$//;
-
     for (my $i = 0; $i < length($_); $i++) {
       my $char = substr($_, $i, 1);
 
@@ -176,6 +173,11 @@ sub process_query {
              &&  $tag      =~ /^ (?= [A-Za-z_] [A-Za-z0-9_]* | ) $/x) {  # tag is identifier
           push @quote_chars, $char = '$' . $tag . '$';
           $i = $tag_end;
+        } elsif ($char eq "-") {
+          if ( substr($_, $i+1, 1) eq "-") {
+            # found a comment outside quote
+            last;
+          }
         } elsif ($char eq ";") {
 
           # Query is complete. Send it.