From 9249a2646e746592dfb5b0fab481b4da25af7bed Mon Sep 17 00:00:00 2001 From: "mh@waldpark.octosoft.eu" Date: Sat, 22 Feb 2014 11:56:55 +0100 Subject: [PATCH] SQL-Fehler falls -- in quotiertem String vorkommt. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/SL/DBUpgrade2.pm b/SL/DBUpgrade2.pm index 01af8f6e5..f694b5aac 100644 --- a/SL/DBUpgrade2.pm +++ b/SL/DBUpgrade2.pm @@ -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. -- 2.20.1