From: mh@waldpark.octosoft.eu Date: Sat, 22 Feb 2014 10:56:55 +0000 (+0100) Subject: SQL-Fehler falls -- in quotiertem String vorkommt. X-Git-Tag: release-3.4.1~115 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=9249a2646e746592dfb5b0fab481b4da25af7bed;p=kivitendo-erp.git 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 --- 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.