Skip to content

Commit 384023f

Browse files
author
GWA
committed
Bug fix: SQL result tab header marks:
The option "Compare SQLs disregarding comments, line feeds and other white spaces" did not work properly. The option can be found at menu File --> Global Preferences --> tab SQL --> section "SQL result tab header".
1 parent 3d1c3e8 commit 384023f

File tree

4 files changed

+36
-15
lines changed

4 files changed

+36
-15
lines changed

sql12/core/doc/changes.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ Table cell data popup now offers find, Xml/Json-reformatting and export function
7979

8080
Bug fixes:
8181

82+
SQL result tab header marks:
83+
The option "Compare SQLs disregarding comments, line feeds and other white spaces" did not work properly.
84+
The option can be found at menu File --> Global Preferences --> tab SQL --> section "SQL result tab header".
85+
8286
Fixed NullPointer in class NullValueColorHandler.
8387

8488
https://github.com/squirrel-sql-client/squirrel-sql-code/issues/46

sql12/core/src/net/sourceforge/squirrel_sql/client/session/mainpanel/resulttabheader/NormalizedSqlCompareCache.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package net.sourceforge.squirrel_sql.client.session.mainpanel.resulttabheader;
22

3+
import java.util.ArrayList;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
37
import net.sourceforge.squirrel_sql.client.session.ISession;
48
import net.sourceforge.squirrel_sql.client.session.mainpanel.IResultTab;
59
import net.sourceforge.squirrel_sql.client.util.codereformat.CodeReformator;
610
import net.sourceforge.squirrel_sql.client.util.codereformat.CodeReformatorConfigFactory;
711
import net.sourceforge.squirrel_sql.fw.id.IntegerIdentifier;
8-
9-
import java.util.ArrayList;
10-
import java.util.HashMap;
11-
import java.util.Map;
12+
import net.sourceforge.squirrel_sql.fw.sql.commentandliteral.SQLCommentRemover;
1213

1314
public class NormalizedSqlCompareCache
1415
{
@@ -26,20 +27,26 @@ public String getResultTabSqlNormalized(ISession session, IResultTab sqlResultTa
2627

2728
if(null == resultTabEntry)
2829
{
29-
resultTabEntry = new NormalizedSqlCompareCacheEntry(getReformator(session).getNormalizedSql(sqlResultTab.getSqlString()), ++_resultTabCounter);
30+
resultTabEntry = new NormalizedSqlCompareCacheEntry(normalizeAndRemoveComments(session, sqlResultTab.getOriginalSqlString()), ++_resultTabCounter);
3031
_resultTabIdToEntry.put(sqlResultTab.getIdentifier(), resultTabEntry);
3132
}
3233

3334
return resultTabEntry.getNormalizedSql();
3435
}
3536

37+
private String normalizeAndRemoveComments(ISession session, String sql)
38+
{
39+
sql = SQLCommentRemover.removeComments(sql);
40+
return getReformator(session).getNormalizedSql(sql);
41+
}
42+
3643
public String getEditorSqlNormalized(ISession session, String editorSql)
3744
{
3845
NormalizedSqlCompareCacheEntry editorEntry = _editorSqlToEntry.get(editorSql);
3946

4047
if(null == editorEntry)
4148
{
42-
editorEntry = new NormalizedSqlCompareCacheEntry(getReformator(session).getNormalizedSql(editorSql), ++_editorSqlCounter);
49+
editorEntry = new NormalizedSqlCompareCacheEntry(normalizeAndRemoveComments(session, editorSql), ++_editorSqlCounter);
4350
_editorSqlToEntry.put(editorSql, editorEntry);
4451
}
4552
return editorEntry.getNormalizedSql();

sql12/core/src/net/sourceforge/squirrel_sql/client/session/mainpanel/resulttabheader/ResultTabMatchingCurrentSqlHandler.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
package net.sourceforge.squirrel_sql.client.session.mainpanel.resulttabheader;
22

3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.Comparator;
6+
import java.util.List;
7+
import javax.swing.JTabbedPane;
8+
import javax.swing.Timer;
9+
310
import net.sourceforge.squirrel_sql.client.Main;
411
import net.sourceforge.squirrel_sql.client.session.ISQLEntryPanel;
512
import net.sourceforge.squirrel_sql.client.session.editorpaint.TextAreaPaintListener;
@@ -9,13 +16,6 @@
916
import net.sourceforge.squirrel_sql.fw.sql.querytokenizer.IQueryTokenizer;
1017
import org.apache.commons.lang3.StringUtils;
1118

12-
import javax.swing.JTabbedPane;
13-
import javax.swing.Timer;
14-
import java.util.ArrayList;
15-
import java.util.Collections;
16-
import java.util.Comparator;
17-
import java.util.List;
18-
1919
public class ResultTabMatchingCurrentSqlHandler
2020
{
2121
private boolean _resultTabHeaderMarkingActive;
@@ -93,7 +93,7 @@ private void onTextAreaPaint(boolean activateLastMarked)
9393
else
9494
{
9595
String resultTabSqlNormalized = _normalizedSqlCompareCache.getResultTabSqlNormalized(_entryPanel.getSession(), sqlResultTab);
96-
String sqlToBeExecutedNormalized = _normalizedSqlCompareCache.getEditorSqlNormalized(_entryPanel.getSession(), qt.nextQuery().getCleanQuery());
96+
String sqlToBeExecutedNormalized = _normalizedSqlCompareCache.getEditorSqlNormalized(_entryPanel.getSession(), qt.nextQuery().getOriginalQuery());
9797

9898
tabMatchesSqlToBeExecuted = StringUtils.equalsIgnoreCase(resultTabSqlNormalized, sqlToBeExecutedNormalized);
9999
}

sql12/core/src/net/sourceforge/squirrel_sql/fw/sql/commentandliteral/SQLCommentRemover.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
package net.sourceforge.squirrel_sql.fw.sql.commentandliteral;
22

3+
import net.sourceforge.squirrel_sql.client.Main;
4+
import net.sourceforge.squirrel_sql.fw.util.StringUtilities;
5+
36
public class SQLCommentRemover
47
{
58
public static String removeComments(String sql)
69
{
7-
final SQLCommentAndLiteralHandler commentAndLiteralHandler = new SQLCommentAndLiteralHandler(sql, "--", true, true);
10+
String lineCommentBegin = "--";
11+
12+
if(StringUtilities.isNotEmpty(Main.getApplication().getSquirrelPreferences().getSessionProperties().getStartOfLineComment(), true))
13+
{
14+
lineCommentBegin = Main.getApplication().getSquirrelPreferences().getSessionProperties().getStartOfLineComment();
15+
}
16+
17+
final SQLCommentAndLiteralHandler commentAndLiteralHandler = new SQLCommentAndLiteralHandler(sql, lineCommentBegin, true, true);
818

919
StringBuilder ret = new StringBuilder();
1020
for (int i = 0; i < sql.length(); ++i)

0 commit comments

Comments
 (0)