From: SVN by r. <sv...@ca...> - 2008-02-10 16:33:56
|
Author: roy Date: 2008-02-10 16:17:36 +0100 (Sun, 10 Feb 2008) New Revision: 233 Modified: src/main/java/nl/improved/sqlclient/SQLUtil.java src/test/java/nl/improved/sqlclient/SQLUtilTest.java Log: fixed deadlock because of a bug in the regular expression code of java Modified: src/main/java/nl/improved/sqlclient/SQLUtil.java =================================================================== --- src/main/java/nl/improved/sqlclient/SQLUtil.java 2008-01-30 11:49:04 UTC (rev 232) +++ src/main/java/nl/improved/sqlclient/SQLUtil.java 2008-02-10 15:17:36 UTC (rev 233) @@ -215,7 +215,9 @@ String WHERE = "W|WH|WHE|WHER|WHERE"; String GROUP_BY = "G|GR|GRO|GROU|GROUP|GROUP |GROUP B|GROUP BY"; String ORDER_BY = "O|OR|ORD|ORDE|ORDER|ORDER |ORDER B|ORDER BY"; - if (tmpCommand.matches("[\\s]*"+VAR+"+([\\s]*,[\\s]*"+VAR+"+)*[\\s]+(|"+WHERE+"|"+GROUP_BY+"|"+ORDER_BY+")")) { + //String regexpSQL = "[\\s]*"+VAR+"+([\\s]*,[\\s]*"+VAR+"+)*[\\s]+(|"+WHERE+"|"+GROUP_BY+"|"+ORDER_BY+")"; + String regexpSQL = ".*"+VAR+"[\\s]+(|"+WHERE+"|"+GROUP_BY+"|"+ORDER_BY+")"; + if (tmpCommand.matches(regexpSQL)) { String end = startOfCommand.substring(startOfCommand.lastIndexOf(' ')+1); return new TabCompletionInfo(TabCompletionInfo.MatchType.SQL_KEYWORD , Arrays.asList(new String[]{"WHERE", "GROUP BY", "ORDER BY"}), end); @@ -257,7 +259,7 @@ return new TabCompletionInfo(TabCompletionInfo.MatchType.COLUMN_NAMES , parseTableNames(commandInfo, commandPoint), end); } - System.out.println("'"+upperCommandString +"'\n not matches\n"+regExp); + //System.out.println("'"+upperCommandString +"'\n not matches\n"+regExp); String end = ""; if (upperCommandString.matches(".*[\\s]+")) { end = ""; Modified: src/test/java/nl/improved/sqlclient/SQLUtilTest.java =================================================================== --- src/test/java/nl/improved/sqlclient/SQLUtilTest.java 2008-01-30 11:49:04 UTC (rev 232) +++ src/test/java/nl/improved/sqlclient/SQLUtilTest.java 2008-02-10 15:17:36 UTC (rev 233) @@ -160,6 +160,24 @@ assertEquals(0, matches.size()); assertEquals("B", info.getStart()); + sqlCommand = Arrays.asList(new String[]{"SELECT * FROM A,B,C"}); + cursorPos = new Point(sqlCommand.get(0).length(),0); + info = SQLUtil.getTabCompletionInfo(sqlCommand, cursorPos); + assertNotNull(info); + assertEquals(TabCompletionInfo.MatchType.TABLE_NAMES, info.getMatchType()); + matches = info.getPossibleMatches(); + assertEquals(0, matches.size()); + assertEquals("C", info.getStart()); + + sqlCommand = Arrays.asList(new String[]{"select * from testdata, TESTDATA, TESTDATA, t"}); + cursorPos = new Point(sqlCommand.get(0).length(),0); + info = SQLUtil.getTabCompletionInfo(sqlCommand, cursorPos); + assertNotNull(info); + assertEquals(TabCompletionInfo.MatchType.TABLE_NAMES, info.getMatchType()); + matches = info.getPossibleMatches(); + assertEquals(0, matches.size()); + assertEquals("t", info.getStart()); + sqlCommand = Arrays.asList(new String[]{"SELECT * FROM A WHERE 1=1"}); cursorPos = new Point("SELECT * FROM A".length(),0); info = SQLUtil.getTabCompletionInfo(sqlCommand, cursorPos); @@ -243,7 +261,7 @@ matches = info.getPossibleMatches(); //assertEquals(1, matches.size()); assertTrue(matches.contains("A")); - System.out.println("I: " + info.getStart()); + //System.out.println("I: " + info.getStart()); assertEquals("I", info.getStart()); sqlCommand = Arrays.asList(new String[]{"SELECT * FROM A,B WHERE A."}); @@ -254,7 +272,7 @@ matches = info.getPossibleMatches(); //assertEquals(1, matches.size()); assertTrue(matches.contains("A")); - System.out.println("I:'" + info.getStart() +"'"); + //System.out.println("I:'" + info.getStart() +"'"); assertEquals("", info.getStart()); // with other conditions |