From: SVN by r. <sv...@ca...> - 2010-01-27 08:04:38
|
Author: roy Date: 2010-01-27 09:04:27 +0100 (Wed, 27 Jan 2010) New Revision: 464 Modified: src/main/java/nl/improved/sqlclient/util/SQLParser.java src/test/java/nl/improved/sqlclient/util/SQLParserTest.java Log: fix duplication in group by Modified: src/main/java/nl/improved/sqlclient/util/SQLParser.java =================================================================== --- src/main/java/nl/improved/sqlclient/util/SQLParser.java 2010-01-27 08:00:57 UTC (rev 463) +++ src/main/java/nl/improved/sqlclient/util/SQLParser.java 2010-01-27 08:04:27 UTC (rev 464) @@ -232,7 +232,7 @@ } } } - if (allColumns.length() > 0) { + if (allColumns.length() > 0 && !possibleMatches.contains(allColumns.toString())) { possibleMatches.add(allColumns.toString()); } } Modified: src/test/java/nl/improved/sqlclient/util/SQLParserTest.java =================================================================== --- src/test/java/nl/improved/sqlclient/util/SQLParserTest.java 2010-01-27 08:00:57 UTC (rev 463) +++ src/test/java/nl/improved/sqlclient/util/SQLParserTest.java 2010-01-27 08:04:27 UTC (rev 464) @@ -744,6 +744,26 @@ assertTrue(matches.contains("to_char(mydate, 'yyyymm')")); assertTrue(matches.contains("to_char(mydate, 'yyyymm'), c2")); assertEquals("", info.getStart()); + + sqlCommand = Arrays.asList(new String[]{"SELECT to_char(mydate, 'yyyymm') , count(*) FROM A,B", "GROUP BY "}); + cursorPos = new Point(sqlCommand.get(1).length(),1); + info = SQLParser.getTabCompletionInfo(sqlCommand, cursorPos); + assertNotNull(info); + assertEquals(TabCompletionInfo.MatchType.OTHER, info.getMatchType()); + matches = info.getPossibleMatches(); + assertEquals(matches.toString(), 1, matches.size()); + assertTrue(matches.contains("to_char(mydate, 'yyyymm')")); + assertEquals("", info.getStart()); + + sqlCommand = Arrays.asList(new String[]{"SELECT count(*), to_char(mydate, 'yyyymm') FROM A,B", "GROUP BY "}); + cursorPos = new Point(sqlCommand.get(1).length(),1); + info = SQLParser.getTabCompletionInfo(sqlCommand, cursorPos); + assertNotNull(info); + assertEquals(TabCompletionInfo.MatchType.OTHER, info.getMatchType()); + matches = info.getPossibleMatches(); + assertEquals(matches.toString(), 1, matches.size()); + assertTrue(matches.contains("to_char(mydate, 'yyyymm')")); + assertEquals("", info.getStart()); } public void testOrderBy() { |