You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(8) |
Oct
(34) |
Nov
(7) |
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(29) |
Feb
(10) |
Mar
(14) |
Apr
(4) |
May
(2) |
Jun
|
Jul
(14) |
Aug
(25) |
Sep
(6) |
Oct
(18) |
Nov
(4) |
Dec
(14) |
2009 |
Jan
(28) |
Feb
(15) |
Mar
(15) |
Apr
(8) |
May
|
Jun
|
Jul
(1) |
Aug
(4) |
Sep
(12) |
Oct
(1) |
Nov
|
Dec
(22) |
2010 |
Jan
(14) |
Feb
|
Mar
(2) |
Apr
|
May
(7) |
Jun
|
Jul
(3) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
From: SVN by r. <sv...@ca...> - 2010-08-25 07:45:36
|
Author: roy Date: 2010-08-25 09:18:46 +0200 (Wed, 25 Aug 2010) New Revision: 480 Modified: src/main/java/nl/improved/sqlclient/commands/ShowCommand.java Log: some coding style fixes Modified: src/main/java/nl/improved/sqlclient/commands/ShowCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/ShowCommand.java 2010-07-25 10:46:11 UTC (rev 479) +++ src/main/java/nl/improved/sqlclient/commands/ShowCommand.java 2010-08-25 07:18:46 UTC (rev 480) @@ -75,7 +75,7 @@ matches.add(match.toString()); } } - returnValue.append("\nTables with column name: '"+ columnName+"'\n"); + returnValue.append("\nTables with column name: '").append(columnName).append("'\n"); Iterator<String> iMatches = matches.iterator(); while (iMatches.hasNext()) { returnValue.append(" "); |
From: SVN by r. <sv...@ca...> - 2010-07-25 10:46:21
|
Author: roy Date: 2010-07-25 12:46:11 +0200 (Sun, 25 Jul 2010) New Revision: 479 Modified: src/main/java/nl/improved/sqlclient/QueryExecutor.java Log: catch error Modified: src/main/java/nl/improved/sqlclient/QueryExecutor.java =================================================================== --- src/main/java/nl/improved/sqlclient/QueryExecutor.java 2010-07-25 10:01:52 UTC (rev 478) +++ src/main/java/nl/improved/sqlclient/QueryExecutor.java 2010-07-25 10:46:11 UTC (rev 479) @@ -99,6 +99,13 @@ * @return the formatted value to display */ private CharSequence getDisplayValue(ResultSet rset, int column) throws SQLException { + try { + return getDisplayValueInternal(rset, column); + } catch(SQLException e) { + return "***ERR***"; + } + } + private CharSequence getDisplayValueInternal(ResultSet rset, int column) throws SQLException { ResultSetMetaData metadata = rset.getMetaData(); switch (metadata.getColumnType(column)) { |
From: SVN by r. <sv...@ca...> - 2010-07-25 10:02:02
|
Author: roy Date: 2010-07-25 12:01:52 +0200 (Sun, 25 Jul 2010) New Revision: 478 Modified: src/test/java/nl/improved/sqlclient/util/SQLParserTest.java Log: more tests Modified: src/test/java/nl/improved/sqlclient/util/SQLParserTest.java =================================================================== --- src/test/java/nl/improved/sqlclient/util/SQLParserTest.java 2010-07-19 13:17:56 UTC (rev 477) +++ src/test/java/nl/improved/sqlclient/util/SQLParserTest.java 2010-07-25 10:01:52 UTC (rev 478) @@ -23,6 +23,23 @@ } + public void testGetTableNames() { + List<SQLPart> result = SQLParser.parse("FROM a,b,c"); + SQLPart part =result.get(0);//new SQLPart(SQLPart.SQLType.FROM, "FROM a,b,c"); + List<String> tableNames = part.getTableNames(); + assertEquals(tableNames.toString(), 3, tableNames.size()); + assertTrue(tableNames.contains("a")); + assertTrue(tableNames.contains("b")); + assertTrue(tableNames.contains("c")); + + result = SQLParser.parse("FROM a,b,c;"); + part =result.get(0); //new SQLPart(SQLPart.SQLType.FROM, "FROM a,b,c;"); + tableNames = part.getTableNames(); + assertEquals(tableNames.toString(), 3, tableNames.size()); + assertTrue(tableNames.contains("a")); + assertTrue(tableNames.contains("b")); + assertTrue(tableNames.contains("c")); + } public void testGetColumnNames() { SQLPart part =new SQLPart(SQLPart.SQLType.SELECT, "SELECT a,b,c"); List<String> columnNames = part.getColumnNames(); |
From: SVN by r. <sv...@ca...> - 2010-07-19 14:20:11
|
Author: roy Date: 2010-07-19 15:17:56 +0200 (Mon, 19 Jul 2010) New Revision: 477 Modified: src/main/java/nl/improved/sqlclient/util/SQLParser.java src/main/java/nl/improved/sqlclient/util/SQLPart.java Log: fix column completion when statement ends with <tablename>; Modified: src/main/java/nl/improved/sqlclient/util/SQLParser.java =================================================================== --- src/main/java/nl/improved/sqlclient/util/SQLParser.java 2010-05-08 10:32:22 UTC (rev 476) +++ src/main/java/nl/improved/sqlclient/util/SQLParser.java 2010-07-19 13:17:56 UTC (rev 477) @@ -98,6 +98,8 @@ return getInsertTabCompletionInfo(part, parts, charsLeft); case VALUES : return getValuesTabCompletionInfo(part, parts, charsLeft); + case END : + return new TabCompletionInfo(TabCompletionInfo.MatchType.OTHER, null); } } else { charsLeft -=part.getPart().length(); @@ -109,13 +111,17 @@ } - static List<SQLPart> parse(CharSequence sqlSequence) { + static List<SQLPart> parse(CharSequence sqlPart) { List<SQLPart> returnValue = new ArrayList<SQLPart>(); - if (sqlSequence.length() == 0) { + if (sqlPart.length() == 0) { return returnValue; } SQLPart.SQLType sqlType; int start = 0; + CharSequence sqlSequence = sqlPart; + if (sqlPart.charAt(sqlPart.length()-1) ==';') { + sqlSequence = sqlPart.subSequence(0, sqlPart.length()-1); + } int end = sqlSequence.length(); String sql = sqlSequence.toString().toUpperCase(); //System.out.println("SQL: "+ sql); Modified: src/main/java/nl/improved/sqlclient/util/SQLPart.java =================================================================== --- src/main/java/nl/improved/sqlclient/util/SQLPart.java 2010-05-08 10:32:22 UTC (rev 476) +++ src/main/java/nl/improved/sqlclient/util/SQLPart.java 2010-07-19 13:17:56 UTC (rev 477) @@ -16,7 +16,7 @@ */ public class SQLPart { - enum SQLType {SELECT, INSERT, UPDATE, DELETE, WHERE, VALUES, FROM, GROUPBY, ORDERBY, OTHER, SET} + enum SQLType {SELECT, INSERT, UPDATE, DELETE, WHERE, VALUES, FROM, GROUPBY, ORDERBY, OTHER, SET, END} private SQLType sqlType; private CharSequence part; |
From: SVN by r. <sv...@ca...> - 2010-05-08 10:32:31
|
Author: roy Date: 2010-05-08 12:32:22 +0200 (Sat, 08 May 2010) New Revision: 476 Modified: ChangeLog Log: mention change Modified: ChangeLog =================================================================== --- ChangeLog 2010-05-08 10:31:50 UTC (rev 475) +++ ChangeLog 2010-05-08 10:32:22 UTC (rev 476) @@ -2,6 +2,7 @@ * Fix using variables in dump command * Added config setting ENTER_AT_END * Fix for databases where after invalid query the connection is in an invalid state (like Postgresql) + * Fix case sensitivity in 'show tables having...' 0.7 (2010-01-28) * Rewritten tab completion engine |
From: SVN by r. <sv...@ca...> - 2010-05-08 10:31:59
|
Author: roy Date: 2010-05-08 12:31:50 +0200 (Sat, 08 May 2010) New Revision: 475 Modified: src/main/java/nl/improved/sqlclient/commands/ShowCommand.java Log: fix case sensitivity in 'show tables having ...' Modified: src/main/java/nl/improved/sqlclient/commands/ShowCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/ShowCommand.java 2010-05-08 10:15:34 UTC (rev 474) +++ src/main/java/nl/improved/sqlclient/commands/ShowCommand.java 2010-05-08 10:31:50 UTC (rev 475) @@ -42,8 +42,9 @@ cmd = cmd.substring(0, cmd.length()-1); } StringBuilder returnValue = new StringBuilder(); - String subCommand = cmd.substring(cmd.indexOf(' ')).trim().toUpperCase(); - if (subCommand.startsWith("TABLES")) { + String subCommand = cmd.substring(cmd.indexOf(' ')).trim(); + String subCommandUp = subCommand.toUpperCase(); + if (subCommandUp.startsWith("TABLES")) { if (subCommand.indexOf(' ') > 0) { String otherCommand = subCommand.substring(subCommand.indexOf(' ')).trim(); String columnName = DBConnector.getInstance().translateDbVar(otherCommand.substring(otherCommand.indexOf(' ')).trim()); @@ -63,7 +64,7 @@ match.append('\t'); String columnSize = rs.getString("COLUMN_SIZE"); if (columnSize != null) { - match.append(rs.getString("TYPE_NAME") +"("+columnSize+")"); + match.append(rs.getString("TYPE_NAME")).append("(").append(columnSize).append(")"); } else { match.append(rs.getString("TYPE_NAME")); } |
From: SVN by r. <sv...@ca...> - 2010-05-08 10:15:42
|
Author: roy Date: 2010-05-08 12:15:34 +0200 (Sat, 08 May 2010) New Revision: 474 Modified: src/main/java/nl/improved/sqlclient/commands/DescCommand.java Log: some code cleanup Modified: src/main/java/nl/improved/sqlclient/commands/DescCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/DescCommand.java 2010-05-08 09:50:38 UTC (rev 473) +++ src/main/java/nl/improved/sqlclient/commands/DescCommand.java 2010-05-08 10:15:34 UTC (rev 474) @@ -15,6 +15,7 @@ */ package nl.improved.sqlclient.commands; +import java.sql.Connection; import nl.improved.sqlclient.SQLCommand; import java.util.List; import java.util.ArrayList; @@ -31,12 +32,16 @@ * Command to describe table properties. */ public class DescCommand implements Command { + + public static ResultSet getColumnMetaData(Connection conn, String tableName) throws SQLException { + return conn.getMetaData().getColumns(conn.getCatalog(), DBConnector.getInstance().getSchema(), tableName, "%"); + } /** * Execute the describe command. */ @Override public CommandResult execute(SQLCommand command) { - java.sql.Connection conn = DBConnector.getInstance().getConnection(); + Connection conn = DBConnector.getInstance().getConnection(); String cmd = command.getCommandString(); if (cmd.endsWith(";")) { cmd = cmd.substring(0, cmd.length()-1); @@ -50,7 +55,8 @@ boolean foundMatch = false; ResultSet rs = null; try { - rs = conn.getMetaData().getColumns(conn.getCatalog(), DBConnector.getInstance().getSchema(), tableName, "%"); + //rs = conn.getMetaData().getColumns(conn.getCatalog(), DBConnector.getInstance().getSchema(), tableName, "%"); + rs = getColumnMetaData(conn, tableName); int row = 0; while (rs.next()) { foundMatch = true; |
From: SVN by r. <sv...@ca...> - 2010-05-08 09:50:48
|
Author: roy Date: 2010-05-08 11:50:38 +0200 (Sat, 08 May 2010) New Revision: 473 Modified: ChangeLog Log: mention change Modified: ChangeLog =================================================================== --- ChangeLog 2010-05-08 09:49:05 UTC (rev 472) +++ ChangeLog 2010-05-08 09:50:38 UTC (rev 473) @@ -1,6 +1,7 @@ 0.8 * Fix using variables in dump command * Added config setting ENTER_AT_END + * Fix for databases where after invalid query the connection is in an invalid state (like Postgresql) 0.7 (2010-01-28) * Rewritten tab completion engine |
From: SVN by r. <sv...@ca...> - 2010-05-08 09:49:16
|
Author: roy Date: 2010-05-08 11:49:05 +0200 (Sat, 08 May 2010) New Revision: 472 Modified: README Log: more stuff Modified: README =================================================================== --- README 2010-05-08 09:48:51 UTC (rev 471) +++ README 2010-05-08 09:49:05 UTC (rev 472) @@ -1,5 +1,8 @@ INTENTION -The intention of writing this sqlclient/sqlshell is to provide a common interface to different databases we use in our company. But most important is that the interface to a commercial client we use is really not very usefull. Our goal is to add as many features as we can think of to this small utility class so that our daily work is made a lot easier. The initial functionality should contain: +The intention of writing this sqlclient/sqlshell is to provide a common interface to different databases we use +in our company. But most important is that the interface to a commercial client we use is really +not very usefull. Our goal is to add as many features as we can think of to this small utility class +so that our daily work is made a lot easier. The initial functionality should contain: - sql command history (key up/down) - tab completion (at least for select queries) - execute a sql file (@mystatements.sql) @@ -20,7 +23,7 @@ With Charva In order to run sqlshell using charva you need to have the charva libraries in the lib folder. -Currently charva is compiled for windows (32 bits) and linux intel 32 bits and amd 64 bits. If you don't +Currently charva is compiled for windows (32 bits) and linux intel 32 and 64 bits and amd 64 bits. If you don't own an intel 32 bits, you need to modify the contents of the lib/charva directory. With JCurses |
From: SVN by r. <sv...@ca...> - 2010-05-08 09:49:00
|
Author: roy Date: 2010-05-08 11:48:51 +0200 (Sat, 08 May 2010) New Revision: 471 Modified: src/test/java/nl/improved/sqlclient/SQLUtilTest.java Log: more test Modified: src/test/java/nl/improved/sqlclient/SQLUtilTest.java =================================================================== --- src/test/java/nl/improved/sqlclient/SQLUtilTest.java 2010-05-07 08:17:22 UTC (rev 470) +++ src/test/java/nl/improved/sqlclient/SQLUtilTest.java 2010-05-08 09:48:51 UTC (rev 471) @@ -554,6 +554,23 @@ assertTrue("Table name should match 'mytable', but was " + matches.get(0), matches.contains("mytable")); } + public void testGetLastBreak() { + String input = "abc def gh ijk"; + String expected = "abc def gh"; + int index = SQLUtil.getLastBreakIndex(input); + assertEquals(expected, input.substring(0, index)); + + input = "abc.def gh.ijk"; + expected = "abc.def gh"; + index = SQLUtil.getLastBreakIndex(input); + assertEquals(expected, input.substring(0, index)); + + input = "abc(def gh(ijk"; + expected = "abc(def gh"; + index = SQLUtil.getLastBreakIndex(input); + assertEquals(expected, input.substring(0, index)); + } + /* public void testTabCompletionInfoDESC() { List<String> sqlCommand = Arrays.asList(new String[]{"DESC "}); Point cursorPos = new Point(sqlCommand.get(0).length(),0); |
From: SVN by r. <sv...@ca...> - 2010-05-07 08:44:11
|
Author: roy Date: 2010-05-07 10:17:22 +0200 (Fri, 07 May 2010) New Revision: 470 Modified: src/main/java/nl/improved/sqlclient/QueryExecutor.java Log: fixes for postgres don't leave connection in an unusable state when a statement failed. call rollback on savepoint Modified: src/main/java/nl/improved/sqlclient/QueryExecutor.java =================================================================== --- src/main/java/nl/improved/sqlclient/QueryExecutor.java 2010-03-08 20:34:54 UTC (rev 469) +++ src/main/java/nl/improved/sqlclient/QueryExecutor.java 2010-05-07 08:17:22 UTC (rev 470) @@ -15,10 +15,12 @@ */ package nl.improved.sqlclient; +import java.sql.Connection; import java.sql.Date; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.sql.Savepoint; import java.sql.Time; import java.sql.Timestamp; import java.sql.Types; @@ -163,23 +165,37 @@ * @return the formatted result. * @throws SQLException if the database could not execute the SQL query for some reason. */ + private static int savePointCounter = 0; public Iterator<CharSequence> executeQuery(CharSequence command) throws SQLException { cancelled = false; long start = System.currentTimeMillis(); - ResultSet results = DBConnector.getInstance().getStatement().executeQuery(command.toString()); + Connection con = DBConnector.getInstance().getConnection(); + Savepoint savePoint = null; + if (!con.getAutoCommit()) { + String savePointName = "SavePoint"+(++savePointCounter); + savePoint = con.setSavepoint(savePointName); + } + try { + ResultSet results = DBConnector.getInstance().getStatement().executeQuery(command.toString()); - //StringBuffer separator = new StringBuffer(); - //StringBuffer displayValue = new StringBuffer(); + //StringBuffer separator = new StringBuffer(); + //StringBuffer displayValue = new StringBuffer(); - ResultSetMetaData metadata = results.getMetaData(); + ResultSetMetaData metadata = results.getMetaData(); - // TODO specify labels - List<String> labels = new ArrayList<String>(); - for ( int col = 1; col <= metadata.getColumnCount(); col++) { - labels.add(metadata.getColumnLabel(col)); + // TODO specify labels + List<String> labels = new ArrayList<String>(); + for ( int col = 1; col <= metadata.getColumnCount(); col++) { + labels.add(metadata.getColumnLabel(col)); + } + + return new QueryExecutorIterator(start, results, labels, metadata); + } catch(SQLException e) { + if (savePoint != null) { + try {con.rollback(savePoint);} catch(SQLException ex) {} + } + throw e; } - - return new QueryExecutorIterator(start, results, labels, metadata); } private class QueryExecutorIterator implements Iterator<CharSequence> { |
From: SVN by r. <sv...@ca...> - 2010-03-08 21:03:04
|
Author: roy Date: 2010-03-08 21:34:54 +0100 (Mon, 08 Mar 2010) New Revision: 469 Modified: ChangeLog Log: mention changes Modified: ChangeLog =================================================================== --- ChangeLog 2010-03-08 20:33:49 UTC (rev 468) +++ ChangeLog 2010-03-08 20:34:54 UTC (rev 469) @@ -1,5 +1,6 @@ 0.8 * Fix using variables in dump command + * Added config setting ENTER_AT_END 0.7 (2010-01-28) * Rewritten tab completion engine |
From: SVN by r. <sv...@ca...> - 2010-03-08 21:00:40
|
Author: roy Date: 2010-03-08 21:33:49 +0100 (Mon, 08 Mar 2010) New Revision: 468 Modified: src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java src/main/java/nl/improved/sqlclient/SQLProperties.java Log: allow for setting to make \n insert a line Modified: src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java =================================================================== --- src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java 2010-01-29 11:05:26 UTC (rev 467) +++ src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java 2010-03-08 20:33:49 UTC (rev 468) @@ -325,7 +325,7 @@ } StringBuffer lineBuffer = getEditableCommand().getEditableLines().get(cursorPosition.y); int previousBreak = SQLUtil.getLastBreakIndex(lineBuffer.substring(0, cursorPosition.x-1)); - if (lineBuffer.charAt(previousBreak) == ' ' || lineBuffer.charAt(previousBreak) == '\t') { + if (SQLUtil.isBreakCharacter(lineBuffer.charAt(previousBreak))) { previousBreak++; } lineBuffer.delete(previousBreak, cursorPosition.x); @@ -645,9 +645,27 @@ if (ke != null) { ke.execute(); } else { - if (inp.getCharacter() == '\n') { // newline... see if the command can be executed + if (inp.getCharacter() == '\n') { + //Y : insert a new line when the current line is not the last line + SQLCommand sqlCommand = getCommand(); + if ("Y".equals(SQLProperties.getProperty(SQLProperties.PropertyName.ENTER_AT_END))) { + Point cursorPosition = screen.getCursorPosition(); + if (sqlCommand.getLines().size() -1 > cursorPosition.y) { + StringBuffer newLine = new StringBuffer(); + StringBuffer currentLine = sqlCommand.getEditableLines().get(cursorPosition.y); + if (currentLine.length() > cursorPosition.x) { + newLine.append(currentLine.substring(cursorPosition.x)); + currentLine.delete(cursorPosition.x, currentLine.length()); + } + sqlCommand.getEditableLines().add(cursorPosition.y+1, newLine); + cursorPosition.x = 0; + cursorPosition.y++; + repaint(); + return; + } + } + // newline... see if the command can be executed // execute the command - SQLCommand sqlCommand = getCommand(); String command = sqlCommand.getCommandString(); // search command... if (command.length() > 0 && command.charAt(0) == '/') { // search in history Modified: src/main/java/nl/improved/sqlclient/SQLProperties.java =================================================================== --- src/main/java/nl/improved/sqlclient/SQLProperties.java 2010-01-29 11:05:26 UTC (rev 467) +++ src/main/java/nl/improved/sqlclient/SQLProperties.java 2010-03-08 20:33:49 UTC (rev 468) @@ -25,7 +25,7 @@ public class SQLProperties { - public static enum PropertyName {VERSION, CONFIG_VERSION, MOUSE_HANDLING}; + public static enum PropertyName {VERSION, CONFIG_VERSION, ENTER_AT_END}; private static SQLProperties instance; |
From: SVN by r. <sv...@ca...> - 2010-01-29 11:05:37
|
Author: ronald Date: 2010-01-29 12:05:26 +0100 (Fri, 29 Jan 2010) New Revision: 467 Added: lib/charva-intel64/ lib/charva-intel64/charva.jar Log: charva-intel64 jar Added: lib/charva-intel64/charva.jar =================================================================== (Binary files differ) Property changes on: lib/charva-intel64/charva.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream |
From: SVN by r. <sv...@ca...> - 2010-01-28 15:06:27
|
Author: roy Date: 2010-01-28 16:06:19 +0100 (Thu, 28 Jan 2010) New Revision: 466 Modified: ChangeLog pom.xml src/main/java/nl/improved/sqlclient/commands/DumpCommand.java Log: fix usage of variables in dump command Modified: ChangeLog =================================================================== --- ChangeLog 2010-01-28 07:44:16 UTC (rev 465) +++ ChangeLog 2010-01-28 15:06:19 UTC (rev 466) @@ -1,3 +1,6 @@ +0.8 + * Fix using variables in dump command + 0.7 (2010-01-28) * Rewritten tab completion engine - improved group by and order by Modified: pom.xml =================================================================== --- pom.xml 2010-01-28 07:44:16 UTC (rev 465) +++ pom.xml 2010-01-28 15:06:19 UTC (rev 466) @@ -19,7 +19,7 @@ <groupId>nl.improved</groupId> <artifactId>sqlshell</artifactId> <packaging>jar</packaging> - <version>0.7</version> + <version>0.8-SNAPSHOT</version> <name>SQLShell ~ the improved sqlclient</name> <url>http://sqlshell.sourceforge.org</url> <build> Modified: src/main/java/nl/improved/sqlclient/commands/DumpCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/DumpCommand.java 2010-01-28 07:44:16 UTC (rev 465) +++ src/main/java/nl/improved/sqlclient/commands/DumpCommand.java 2010-01-28 15:06:19 UTC (rev 466) @@ -113,7 +113,7 @@ hd.startElement("", "", "dump", atts); Connection c = DBConnector.getInstance().getConnection(); stmt = c.createStatement(); - rs = stmt.executeQuery(query); + rs = stmt.executeQuery(QueryCommand.replaceVariables(query)); SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT); while (rs.next() && !abort) { atts.clear(); |
From: SVN by r. <sv...@ca...> - 2010-01-28 07:44:28
|
Author: roy Date: 2010-01-28 08:44:16 +0100 (Thu, 28 Jan 2010) New Revision: 465 Modified: / ChangeLog pom.xml Log: 0.7 release Property changes on: ___________________________________________________________________ Name: svn:ignore - target .BUGS.txt.swp + target .BUGS.txt.swp .ChangeLog.swp .swp .swo .swm .swn .small.dmp.swp .log.txt.swp .log.txt.swo .fix.sed.swp .fix.swp .tmp .Test.java.swp .test.dtd.swp .test.xml.swp Modified: ChangeLog =================================================================== --- ChangeLog 2010-01-27 08:04:27 UTC (rev 464) +++ ChangeLog 2010-01-28 07:44:16 UTC (rev 465) @@ -1,4 +1,4 @@ -0.7 +0.7 (2010-01-28) * Rewritten tab completion engine - improved group by and order by - added support for aliases in table names Modified: pom.xml =================================================================== --- pom.xml 2010-01-27 08:04:27 UTC (rev 464) +++ pom.xml 2010-01-28 07:44:16 UTC (rev 465) @@ -19,7 +19,7 @@ <groupId>nl.improved</groupId> <artifactId>sqlshell</artifactId> <packaging>jar</packaging> - <version>0.7-SNAPSHOT</version> + <version>0.7</version> <name>SQLShell ~ the improved sqlclient</name> <url>http://sqlshell.sourceforge.org</url> <build> |
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() { |
From: SVN by r. <sv...@ca...> - 2010-01-27 08:01:08
|
Author: roy Date: 2010-01-27 09:00:57 +0100 (Wed, 27 Jan 2010) New Revision: 463 Modified: src/main/java/nl/improved/sqlclient/util/SQLParser.java src/main/java/nl/improved/sqlclient/util/SQLPart.java src/test/java/nl/improved/sqlclient/util/SQLParserTest.java Log: fix group by tab completion when using to_char(date, 'format') Modified: src/main/java/nl/improved/sqlclient/util/SQLParser.java =================================================================== --- src/main/java/nl/improved/sqlclient/util/SQLParser.java 2010-01-24 14:35:18 UTC (rev 462) +++ src/main/java/nl/improved/sqlclient/util/SQLParser.java 2010-01-27 08:00:57 UTC (rev 463) @@ -220,42 +220,21 @@ List<String> possibleMatches = new ArrayList<String>(); for (SQLPart pPart : parts) { if (pPart.getSQLType() == SQLPart.SQLType.SELECT) { - String pSubPart = pPart.getPart().toString().substring("SELECT".length()).trim(); - int lastIndex = 0; - int newIndex; - StringBuffer bestMatch = new StringBuffer(); - while ( (newIndex = pSubPart.indexOf(',', lastIndex)) > 0) { - String colName = pSubPart.substring(lastIndex, newIndex).trim(); - if (colName.indexOf(' ') >=0) { - colName = colName.substring(colName.lastIndexOf(' ')); - } + StringBuffer allColumns = new StringBuffer(); + for (String colName : pPart.getColumnNames()) { if (!possibleMatches.contains(colName)) { - possibleMatches.add(colName); if (colName.indexOf("max") < 0 && colName.indexOf("min") < 0 && colName.indexOf("count") < 0) { - if (bestMatch.length() > 0) { - bestMatch.append(','); + possibleMatches.add(colName); + if (allColumns.length() > 0) { + allColumns.append(", "); } - bestMatch.append(colName); + allColumns.append(colName); } } - lastIndex = newIndex+1; } - String colName = pSubPart.substring(lastIndex).trim(); - if (colName.indexOf(' ') >=0) { // alias - colName = colName.substring(colName.lastIndexOf(' ')); + if (allColumns.length() > 0) { + possibleMatches.add(allColumns.toString()); } - if (!possibleMatches.contains(colName) && colName.length() > 0) { - possibleMatches.add(colName); - if (colName.indexOf("max") < 0 && colName.indexOf("min") < 0 && colName.indexOf("count") < 0) { - if (bestMatch.length() > 0) { - bestMatch.append(','); - } - bestMatch.append(colName); - } - } - if (bestMatch.length() > 0 && !possibleMatches.contains(bestMatch)) { - possibleMatches.add(0, bestMatch.toString()); - } } } if (subPart.trim().length() == 0 || subPart.trim().endsWith(",")) { Modified: src/main/java/nl/improved/sqlclient/util/SQLPart.java =================================================================== --- src/main/java/nl/improved/sqlclient/util/SQLPart.java 2010-01-24 14:35:18 UTC (rev 462) +++ src/main/java/nl/improved/sqlclient/util/SQLPart.java 2010-01-27 08:00:57 UTC (rev 463) @@ -49,7 +49,47 @@ } public List<String> getColumnNames() { + if (sqlType != SQLType.SELECT) { + throw new IllegalStateException("Table names are only available for SELECT ("+ sqlType+")"); + } + List<String> returnValue = new ArrayList<String>(); + int openQuotes = 0; + int openRondeHaakjes = 0; + String stringPart = getPart().toString(); + char[] sub = stringPart.substring(stringPart.toUpperCase().indexOf("SELECT")+"SELECT".length()).toCharArray(); + + StringBuffer colName = new StringBuffer(); + for (char c : sub) { + if (c == '\'') { + openQuotes++; + } else if (c == '(') { + if (openQuotes %2 == 0) { // don't count ( in strings + openRondeHaakjes++; + } + } else if (c == ')') { + if (openQuotes %2 == 0) { // don't count ( in strings + openRondeHaakjes--; + } + } + if (c == ',' && openQuotes % 2 == 0 && openRondeHaakjes % 2 == 0) { + String col = colName.toString().trim(); + // TODO cut off alias + returnValue.add(col); + colName = new StringBuffer(); + } else { + colName.append(c); + } + } + if (colName.length() > 0) { + returnValue.add(colName.toString().trim()); // TODO cut off alias + + } + return returnValue; + + } + public List<String> _getColumnNames() { + if (sqlType == SQLType.SELECT) { String stringPart = getPart().toString(); String sub = stringPart.substring(stringPart.toUpperCase().indexOf("SELECT")+"SELECT".length()); Modified: src/test/java/nl/improved/sqlclient/util/SQLParserTest.java =================================================================== --- src/test/java/nl/improved/sqlclient/util/SQLParserTest.java 2010-01-24 14:35:18 UTC (rev 462) +++ src/test/java/nl/improved/sqlclient/util/SQLParserTest.java 2010-01-27 08:00:57 UTC (rev 463) @@ -23,6 +23,31 @@ } + public void testGetColumnNames() { + SQLPart part =new SQLPart(SQLPart.SQLType.SELECT, "SELECT a,b,c"); + List<String> columnNames = part.getColumnNames(); + assertEquals(columnNames.toString(), 3, columnNames.size()); + assertTrue(columnNames.contains("a")); + assertTrue(columnNames.contains("b")); + assertTrue(columnNames.contains("c")); + + part =new SQLPart(SQLPart.SQLType.SELECT, "SELECT a,b,count(*)"); + columnNames = part.getColumnNames(); + assertEquals(columnNames.toString(), 3, columnNames.size()); + assertTrue(columnNames.contains("a")); + assertTrue(columnNames.contains("b")); + assertTrue(columnNames.contains("count(*)")); + + + part =new SQLPart(SQLPart.SQLType.SELECT, "SELECT to_char(mydate, 'yyyymm'),b,count(*)"); + columnNames = part.getColumnNames(); + assertEquals(columnNames.toString(), 3, columnNames.size()); + assertTrue(columnNames.contains("to_char(mydate, 'yyyymm')")); + assertTrue(columnNames.contains("b")); + assertTrue(columnNames.contains("count(*)")); + + + } /** * Test of parse method, of class SQLParser. */ @@ -645,11 +670,10 @@ assertNotNull(info); assertEquals(TabCompletionInfo.MatchType.OTHER, info.getMatchType()); List<String> matches = info.getPossibleMatches(); - assertEquals(4, matches.size()); + assertEquals(matches.toString(), 3, matches.size()); assertTrue(matches.contains("c1")); assertTrue(matches.contains("c2")); - assertTrue(matches.contains("count(*)")); - assertTrue(matches.contains("c1,c2")); + assertTrue(matches.contains("c1, c2")); assertEquals("", info.getStart()); @@ -708,6 +732,18 @@ matches = info.getPossibleMatches(); assertTrue(matches.contains("c1")); assertEquals("", info.getStart()); + + sqlCommand = Arrays.asList(new String[]{"SELECT to_char(mydate, 'yyyymm') , c2 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(), 3, matches.size()); + assertTrue(matches.contains("c2")); + assertTrue(matches.contains("to_char(mydate, 'yyyymm')")); + assertTrue(matches.contains("to_char(mydate, 'yyyymm'), c2")); + assertEquals("", info.getStart()); } public void testOrderBy() { |
From: SVN by r. <sv...@ca...> - 2010-01-24 14:36:07
|
Author: roy Date: 2010-01-24 15:35:18 +0100 (Sun, 24 Jan 2010) New Revision: 462 Modified: ChangeLog Log: mention changes Modified: ChangeLog =================================================================== --- ChangeLog 2010-01-24 14:35:05 UTC (rev 461) +++ ChangeLog 2010-01-24 14:35:18 UTC (rev 462) @@ -14,6 +14,7 @@ - fix for really large files (tested 7,934,149 rows, 4,9G datafile) * Paste long text breaking up into multiple lines fixes * PageUp now shows last row of previous 'page' + * Added Set command to change settings and set variables that can be used in queries 0.6.2 (2009-02-20) * Commandline input support |
From: SVN by r. <sv...@ca...> - 2010-01-24 14:35:27
|
Author: roy Date: 2010-01-24 15:35:05 +0100 (Sun, 24 Jan 2010) New Revision: 461 Modified: src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java src/main/java/nl/improved/sqlclient/TabCompletionInfo.java src/main/java/nl/improved/sqlclient/util/SQLParser.java src/test/java/nl/improved/sqlclient/util/SQLParserTest.java Log: variables(@) tab completion support added Modified: src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java =================================================================== --- src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java 2010-01-24 14:34:35 UTC (rev 460) +++ src/main/java/nl/improved/sqlclient/AbstractSQLShellWindow.java 2010-01-24 14:35:05 UTC (rev 461) @@ -1002,6 +1002,13 @@ }*/ return nullToEmpty(findMatch(getColumnNames(info.getPossibleMatches()), info.getStart())); } + if (info.getMatchType() == TabCompletionInfo.MatchType.VARIABLE) { + List<String> vars = new ArrayList<String>(); + for (String var : QueryCommand.getVariables().keySet()) { + vars.add("@"+var); + } + return nullToEmpty(findMatch(vars, info.getStart())); + } if (info.getMatchType() == TabCompletionInfo.MatchType.OTHER) { return nullToEmpty(findMatch(info.getPossibleMatches(), info.getStart())); } Modified: src/main/java/nl/improved/sqlclient/TabCompletionInfo.java =================================================================== --- src/main/java/nl/improved/sqlclient/TabCompletionInfo.java 2010-01-24 14:34:35 UTC (rev 460) +++ src/main/java/nl/improved/sqlclient/TabCompletionInfo.java 2010-01-24 14:35:05 UTC (rev 461) @@ -18,7 +18,7 @@ import java.util.List; public class TabCompletionInfo { - public enum MatchType {SQL_KEYWORD, TABLE_NAMES, COLUMN_NAMES, FILE_NAMES, OTHER} + public enum MatchType {SQL_KEYWORD, TABLE_NAMES, COLUMN_NAMES, FILE_NAMES, VARIABLE, OTHER} private MatchType type; private List<String> possibleMatches; Modified: src/main/java/nl/improved/sqlclient/util/SQLParser.java =================================================================== --- src/main/java/nl/improved/sqlclient/util/SQLParser.java 2010-01-24 14:34:35 UTC (rev 460) +++ src/main/java/nl/improved/sqlclient/util/SQLParser.java 2010-01-24 14:35:05 UTC (rev 461) @@ -530,6 +530,10 @@ lastIndex = Math.max(lastIndex, tmpCommand.lastIndexOf('>')); end = tmpCommand.substring(lastIndex+1); } + if (end.trim().startsWith("@")) { + return new TabCompletionInfo(TabCompletionInfo.MatchType.VARIABLE + , Arrays.asList(new String[0]), end); + } return new TabCompletionInfo(TabCompletionInfo.MatchType.SQL_KEYWORD , Arrays.asList(new String[]{"AND", "OR", "IN", "GROUP BY", "ORDER BY"}), end); } Modified: src/test/java/nl/improved/sqlclient/util/SQLParserTest.java =================================================================== --- src/test/java/nl/improved/sqlclient/util/SQLParserTest.java 2010-01-24 14:34:35 UTC (rev 460) +++ src/test/java/nl/improved/sqlclient/util/SQLParserTest.java 2010-01-24 14:35:05 UTC (rev 461) @@ -49,6 +49,18 @@ assertEquals(expResult, result); } + public void testParseWhereUsingVars() { + CharSequence sql = "SELECT * FROM TESTTABLE WHERE A=@B"; + List<SQLPart> expResult = Arrays.asList(new SQLPart[]{ + new SQLPart(SQLPart.SQLType.SELECT, "SELECT * "), + new SQLPart(SQLPart.SQLType.FROM, "FROM TESTTABLE "), + new SQLPart(SQLPart.SQLType.WHERE, "WHERE A=@B") + }); + List<SQLPart> result = SQLParser.parse(sql); + assertEquals(expResult.size(), result.size()); + assertEquals(expResult, result); + } + public void testParseGroupBy() { CharSequence sql = "SELECT * FROM TESTTABLE WHERE A=B GROUP BY test.a"; List<SQLPart> expResult = Arrays.asList(new SQLPart[]{ @@ -940,4 +952,14 @@ assertTrue("Table name should match 'testtable', but was " + matches.get(0), matches.contains("testtable")); } + public void testGetVariable() { + List<String> sqlCommand = Arrays.asList(new String[]{"select * from a where a=@a"}); + Point cursorPos = new Point(sqlCommand.get(0).length(),0); + TabCompletionInfo info = SQLParser.getTabCompletionInfo(sqlCommand, cursorPos); + assertNotNull(info); + assertEquals(TabCompletionInfo.MatchType.VARIABLE, info.getMatchType()); + List<String> matches = info.getPossibleMatches(); + assertEquals(0, matches.size()); + assertEquals("@a", info.getStart()); + } } |
From: SVN by r. <sv...@ca...> - 2010-01-24 14:34:43
|
Author: roy Date: 2010-01-24 15:34:35 +0100 (Sun, 24 Jan 2010) New Revision: 460 Modified: src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java Log: more info in help and on failure Modified: src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java 2010-01-24 14:05:15 UTC (rev 459) +++ src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java 2010-01-24 14:34:35 UTC (rev 460) @@ -56,7 +56,7 @@ return new SimpleCommandResult(true, "Registred variable '"+varName+"' to value '"+varValue+"'"); } - return new SimpleCommandResult(false, "Please provide a valid argument"); + return new SimpleCommandResult(false, "Please provide a valid argument (or place @ before the variable name to set a variable), see 'help set'"); } @@ -70,11 +70,15 @@ public CharSequence getHelp() { StringBuffer result = new StringBuffer(); - result.append("Change settings of sqlshell properties" + - "Settings are:\n"+ - "hSeparatorChar (current value: '"+ResultBuilder.getHorizontalSeparator()+"')\n"+ - "vSeparatorChar (values Y/N) (current value: '"+ResultBuilder.getVerticalSeparator()+"')\n" + - "readAutoCommit (current value: '"+(ReadCommand.getAutoCommit() ? "Y" :"N")+"')\n" + + result.append("Change settings of sqlshell properties or variables/parameters that can be used in queries." + + "An example of a variable:\n"+ + " set @name='SQLShell'\n" + + " select * from programs where name=@name\n" + + "\n"+ + "Available Settings are:\n"+ + " hSeparatorChar (current value: '"+ResultBuilder.getHorizontalSeparator()+"')\n"+ + " vSeparatorChar (values Y/N) (current value: '"+ResultBuilder.getVerticalSeparator()+"')\n" + + " readAutoCommit (current value: '"+(ReadCommand.getAutoCommit() ? "Y" :"N")+"')\n" + "@variable=value\n"); Map<String, String> variables = QueryCommand.getVariables(); |
From: SVN by r. <sv...@ca...> - 2010-01-24 14:05:24
|
Author: roy Date: 2010-01-24 15:05:15 +0100 (Sun, 24 Jan 2010) New Revision: 459 Modified: src/main/java/nl/improved/sqlclient/commands/QueryCommand.java src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java Log: display settings values and variables Modified: src/main/java/nl/improved/sqlclient/commands/QueryCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/QueryCommand.java 2010-01-24 13:59:02 UTC (rev 458) +++ src/main/java/nl/improved/sqlclient/commands/QueryCommand.java 2010-01-24 14:05:15 UTC (rev 459) @@ -2,6 +2,7 @@ import nl.improved.sqlclient.*; import java.sql.SQLException; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -36,6 +37,11 @@ return variables.remove(var); } + public static Map<String, String> getVariables() { + return Collections.unmodifiableMap(variables); + + } + /** * Execute the sql query. * @param cmd the sqlcommand containing the sql query Modified: src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java 2010-01-24 13:59:02 UTC (rev 458) +++ src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java 2010-01-24 14:05:15 UTC (rev 459) @@ -5,6 +5,7 @@ package nl.improved.sqlclient.commands; +import java.util.Map; import nl.improved.sqlclient.SQLCommand; import nl.improved.sqlclient.Point; import nl.improved.sqlclient.TabCompletionInfo; @@ -68,12 +69,26 @@ } public CharSequence getHelp() { - return "Change settings of sqlshell properties" + + StringBuffer result = new StringBuffer(); + result.append("Change settings of sqlshell properties" + "Settings are:\n"+ "hSeparatorChar (current value: '"+ResultBuilder.getHorizontalSeparator()+"')\n"+ "vSeparatorChar (values Y/N) (current value: '"+ResultBuilder.getVerticalSeparator()+"')\n" + "readAutoCommit (current value: '"+(ReadCommand.getAutoCommit() ? "Y" :"N")+"')\n" + - "@variable=value"; + "@variable=value\n"); + + Map<String, String> variables = QueryCommand.getVariables(); + if (variables.size() == 0) { + result.append(" No variables set"); + } else { + for (String key : variables.keySet()) { + result.append(" - "+ key+" = "); + result.append(variables.get(key)); + result.append('\n'); + } + } + + return result; } public boolean abort() { |
From: SVN by r. <sv...@ca...> - 2010-01-24 13:59:14
|
Author: roy Date: 2010-01-24 14:59:02 +0100 (Sun, 24 Jan 2010) New Revision: 458 Modified: src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java Log: fix set command stacktrace when no arguments provided Modified: src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java =================================================================== --- src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java 2010-01-24 13:48:20 UTC (rev 457) +++ src/main/java/nl/improved/sqlclient/commands/SettingsCommand.java 2010-01-24 13:59:02 UTC (rev 458) @@ -20,6 +20,9 @@ } public CommandResult execute(SQLCommand cmd) { + if (cmd.getUntrimmedCommandString().length() <=4) { + return new SimpleCommandResult(false, "Failure: See help set for usage"); + } String cmdString = cmd.getUntrimmedCommandString().substring("set ".length()).trim(); String setter = cmdString.substring(0, cmdString.indexOf('=')); if (setter.equals("hSeparatorChar")) { @@ -67,9 +70,9 @@ public CharSequence getHelp() { return "Change settings of sqlshell properties" + "Settings are:\n"+ - "hSeparatorChar\n"+ - "vSeparatorChar (values Y/N)\n" + - "readAutoCommit\n" + + "hSeparatorChar (current value: '"+ResultBuilder.getHorizontalSeparator()+"')\n"+ + "vSeparatorChar (values Y/N) (current value: '"+ResultBuilder.getVerticalSeparator()+"')\n" + + "readAutoCommit (current value: '"+(ReadCommand.getAutoCommit() ? "Y" :"N")+"')\n" + "@variable=value"; } |
From: SVN by r. <sv...@ca...> - 2010-01-24 13:55:09
|
Author: roy Date: 2010-01-24 14:48:20 +0100 (Sun, 24 Jan 2010) New Revision: 457 Modified: src/main/java/nl/improved/sqlclient/SQLProperties.java Log: fix version in help Modified: src/main/java/nl/improved/sqlclient/SQLProperties.java =================================================================== --- src/main/java/nl/improved/sqlclient/SQLProperties.java 2010-01-24 13:24:57 UTC (rev 456) +++ src/main/java/nl/improved/sqlclient/SQLProperties.java 2010-01-24 13:48:20 UTC (rev 457) @@ -55,7 +55,7 @@ try { Properties pomProps = new Properties(); pomProps.load(getClass().getResourceAsStream("/META-INF/maven/nl.improved/sqlshell/pom.properties")); - props.put(PropertyName.VERSION, props.get("version")); + props.put(PropertyName.VERSION.name(), pomProps.get("version")); } catch(Exception e) { //System.err.println("Failed to load pom.properties"); } |
From: SVN by r. <sv...@ca...> - 2010-01-24 13:25:05
|
Author: roy Date: 2010-01-24 14:24:57 +0100 (Sun, 24 Jan 2010) New Revision: 456 Modified: ChangeLog Log: mention changes Modified: ChangeLog =================================================================== --- ChangeLog 2010-01-24 13:23:17 UTC (rev 455) +++ ChangeLog 2010-01-24 13:24:57 UTC (rev 456) @@ -5,13 +5,15 @@ * Added initial settings command (to change for the current login session) the horizontal or vertical separator character * Added initial support for variables (in settings command.. see 'help set' for more information) * History completion -* Dump / Read updates + * Dump / Read updates - dump as <filename> support added - dump/read progress output added - read autocommit (after every 100,000 rows) setting added - set readAutoCommit=Y; to autocommit after successfull read (and every 10,000 rows) - fix encoding problems - fix for really large files (tested 7,934,149 rows, 4,9G datafile) + * Paste long text breaking up into multiple lines fixes + * PageUp now shows last row of previous 'page' 0.6.2 (2009-02-20) * Commandline input support |