From 0be32298a8f70c9e5f98fd9b0dd65c3b04591b12 Mon Sep 17 00:00:00 2001
From: gmantele <gmantele@ari.uni-heidelberg.de>
Date: Thu, 30 Nov 2017 17:37:44 +0100
Subject: [PATCH] [ADQL] Based on the previous commit, fix and simplify the way
 SelectAllColummns are translated: the table part (if a reference to an
 aliased table) should be as declared in the DBTable (especially now that we
 have DBTableAlias to deal nicely with table aliases).

---
 src/adql/translator/JDBCTranslator.java | 22 +++-------------------
 1 file changed, 3 insertions(+), 19 deletions(-)

diff --git a/src/adql/translator/JDBCTranslator.java b/src/adql/translator/JDBCTranslator.java
index 2339b93..95573aa 100644
--- a/src/adql/translator/JDBCTranslator.java
+++ b/src/adql/translator/JDBCTranslator.java
@@ -19,9 +19,7 @@ package adql.translator;
  * Copyright 2017 - Astronomisches Rechen Institut (ARI)
  */
 
-import java.util.HashMap;
 import java.util.Iterator;
-import java.util.List;
 
 import adql.db.DBColumn;
 import adql.db.DBTable;
@@ -456,30 +454,17 @@ public abstract class JDBCTranslator implements ADQLTranslator {
 
 	@Override
 	public String translate(SelectAllColumns item) throws TranslationException{
-		HashMap<String,String> mapAlias = new HashMap<String,String>();
-
 		// Fetch the full list of columns to display:
 		Iterable<DBColumn> dbCols = null;
 		if (item.getAdqlTable() != null && item.getAdqlTable().getDBLink() != null){
 			ADQLTable table = item.getAdqlTable();
 			dbCols = table.getDBLink();
-			if (table.hasAlias()){
-				String key = getQualifiedTableName(table.getDBLink());
-				mapAlias.put(key, table.isCaseSensitive(IdentifierField.ALIAS) ? ("\"" + table.getAlias() + "\"") : table.getAlias());
-			}
 		}else if (item.getQuery() != null){
 			try{
 				dbCols = item.getQuery().getFrom().getDBColumns();
 			}catch(UnresolvedJoinException pe){
 				throw new TranslationException("Due to a join problem, the ADQL to SQL translation can not be completed!", pe);
 			}
-			List<ADQLTable> tables = item.getQuery().getFrom().getTables();
-			for(ADQLTable table : tables){
-				if (table.hasAlias()){
-					String key = getQualifiedTableName(table.getDBLink());
-					mapAlias.put(key, table.isCaseSensitive(IdentifierField.ALIAS) ? ("\"" + table.getAlias() + "\"") : table.getAlias());
-				}
-			}
 		}
 
 		// Write the DB name of all these columns:
@@ -489,11 +474,10 @@ public abstract class JDBCTranslator implements ADQLTranslator {
 				if (cols.length() > 0)
 					cols.append(',');
 				if (col.getTable() != null){
-					String fullDbName = getQualifiedTableName(col.getTable());
-					if (mapAlias.containsKey(fullDbName))
-						appendIdentifier(cols, mapAlias.get(fullDbName), false).append('.');
+					if (col.getTable() instanceof DBTableAlias)
+						cols.append(getTableName(col.getTable(), false)).append('.');
 					else
-						cols.append(fullDbName).append('.');
+						cols.append(getQualifiedTableName(col.getTable())).append('.');
 				}
 				appendIdentifier(cols, col.getDBName(), IdentifierField.COLUMN);
 				cols.append(" AS \"").append(col.getADQLName()).append('\"');
-- 
GitLab