diff -ubr nb-7.0.1-orig/db/src/org/netbeans/api/db/sql/support/SQLIdentifiers.java nb-7.0.1/db/src/org/netbeans/api/db/sql/support/SQLIdentifiers.java --- nb-7.0.1-orig/db/src/org/netbeans/api/db/sql/support/SQLIdentifiers.java 2011-07-28 20:45:16.000000000 +0200 +++ nb-7.0.1/db/src/org/netbeans/api/db/sql/support/SQLIdentifiers.java 2011-08-15 20:59:22.000000000 +0200 @@ -124,25 +121,16 @@ public String unquote(String identifier) { Parameters.notNull("identifier", identifier); - int start = 0; - while (identifier.regionMatches(start, quoteString, 0, quoteString.length())) { - start += quoteString.length(); - } - int end = identifier.length(); - if (end > start) { - for (;;) { - int offset = end - quoteString.length(); - if (identifier.regionMatches(offset, quoteString, 0, quoteString.length())) { - end = offset; - } else { - break; - } - } + String result = identifier; + + if (result.startsWith(quoteString)) { + result = result.substring(quoteString.length()); } - String result = ""; - if (start < end) { - result = identifier.substring(start, end); + + if (result.endsWith(quoteString)) { + result = result.substring(0, result.lastIndexOf(quoteString)); } + return result; } @@ -151,7 +139,8 @@ } boolean alreadyQuoted(String identifier) { - return (identifier.startsWith(quoteString) && identifier.endsWith(quoteString)); + return (identifier.startsWith(quoteString) + && identifier.substring(quoteString.length()).endsWith(quoteString)); } String doQuote(String identifier) { diff -ubr nb-7.0.1-orig/db.sql.editor/src/org/netbeans/modules/db/sql/editor/completion/SQLCompletionQuery.java nb-7.0.1/db.sql.editor/src/org/netbeans/modules/db/sql/editor/completion/SQLCompletionQuery.java --- nb-7.0.1-orig/db.sql.editor/src/org/netbeans/modules/db/sql/editor/completion/SQLCompletionQuery.java 2011-07-28 20:45:16.000000000 +0200 +++ nb-7.0.1/db.sql.editor/src/org/netbeans/modules/db/sql/editor/completion/SQLCompletionQuery.java 2011-08-15 20:58:56.000000000 +0200 @@ -979,7 +979,7 @@ if (!incomplete) { lastPrefix = parts.remove(parts.size() - 1); String quoteString = quoter.getQuoteString(); - if (lastPrefix.startsWith(quoteString)) { + if (quoteString.length() > 0 && lastPrefix.startsWith(quoteString)) { if (lastPrefix.endsWith(quoteString) && lastPrefix.length() > quoteString.length()) { // User typed '"foo"."bar"|', can't complete that. return null; @@ -988,7 +988,7 @@ lastPrefix = quoter.unquote(lastPrefix); lastPrefixOffset = lastPrefixOffset + (lastPrefixLength - lastPrefix.length()); quoted = true; - } else if (lastPrefix.endsWith(quoteString)) { + } else if (quoteString.length() > 0 && lastPrefix.endsWith(quoteString)) { // User typed '"foo".bar"|', can't complete. return null; }