[Mondrian] //open/mondrian/src/main/mondrian/xmla/XmlaHandler.java Rev 41 and 42

Richard Emberson remberson at edgedynamics.com
Tue Jul 10 17:55:45 EDT 2007


My mistake! Thanks.

Richard


Julian Hyde wrote:
>  
>> Richard Emberson wrote:
>>
>> In Rev 41 the writeHierarchyInfo method was changed as 
>> follows by thiyagu:
> 
> <snip>
> 
>> With Rev 42 this was removed moving back to Rev 40 version by jhyde.
> 
> I don't see any changes to the writeHierarchyInfo or getAttributes methods
> in #42. Here are the changes I made:
> 
> $ p4 diff2 .../XmlaHandler.java#{41,42}
> ==== //open/mondrian/src/main/mondrian/xmla/XmlaHandler.java#41 (ktext) -
> //open/mondrian/src/ma
> in/mondrian/xmla/XmlaHandler.java#42 (ktext) ==== content
> 837d836
> <         ResultSet rs = null;
> 860,861c859,862
> <                 Statement stmt = sqlConn.createStatement();
> <                 List<List<String>> fields = new ArrayList<List<String>>();
> ---
>>                 Statement stmt = null;
>>                 try {
>>                     stmt = sqlConn.createStatement();
>>                     List<List<String>> fields = new
> ArrayList<List<String>>();
> 863,878c864,883
> <                 Map<String, List<String>> tableFieldMap =
> <                     new HashMap<String, List<String>>();
> <                 for (MondrianDef.Relation relation1 : relationList) {
> <                     final String tableName = relation1.toString();
> <                     List<String> fieldNameList = new ArrayList<String>();
> <                     // FIXME: Quote table name
> <                     dtSql = "SELECT * FROM " + tableName + " WHERE 1=2";
> <                     rs = stmt.executeQuery(dtSql);
> <                     ResultSetMetaData rsMeta = rs.getMetaData();
> <                     for (int j = 1; j <= rsMeta.getColumnCount(); j++) {
> <                         String colName = rsMeta.getColumnName(j);
> <                         boolean colNameExists = false;
> <                         for (List<String> prvField : fields) {
> <                             if (prvField.contains(colName)) {
> <                                 colNameExists = true;
> <                                 break;
> ---
>>                     Map<String, List<String>> tableFieldMap =
>>                         new HashMap<String, List<String>>();
>>                     for (MondrianDef.Relation relation1 : relationList) {
>>                         final String tableName = relation1.toString();
>>                         List<String> fieldNameList = new
> ArrayList<String>();
>>                         // FIXME: Quote table name
>>                         dtSql = "SELECT * FROM " + tableName + " WHERE
> 1=2";
>>                         ResultSet rs = stmt.executeQuery(dtSql);
>>                         ResultSetMetaData rsMeta = rs.getMetaData();
>>                         for (int j = 1; j <= rsMeta.getColumnCount(); j++)
> {
>>                             String colName = rsMeta.getColumnName(j);
>>                             boolean colNameExists = false;
>>                             for (List<String> prvField : fields) {
>>                                 if (prvField.contains(colName)) {
>>                                     colNameExists = true;
>>                                     break;
>>                                 }
>>                             }
>>                             if (!colNameExists) {
>>
> fieldNameList.add(rsMeta.getColumnName(j));
> 881,882c886,897
> <                         if (!colNameExists) {
> <                             fieldNameList.add(rsMeta.getColumnName(j));
> ---
>>                         fields.add(fieldNameList);
>>                         String truncatedTableName =
>>                             tableName.substring(tableName.lastIndexOf(".")
> + 1);
>>                         truncatedTableList.add(truncatedTableName);
>>                         tableFieldMap.put(truncatedTableName,
> fieldNameList);
>>                     }
>>                     return new TabularRowSet(tableFieldMap,
> truncatedTableList);
>>                 } finally {
>>                     if (stmt != null) {
>>                         try {
>>                             stmt.close();
>>                         } catch (SQLException ignored) {
> 885,889d899
> <                     fields.add(fieldNameList);
> <                     String truncatedTableName =
> <                         tableName.substring(tableName.lastIndexOf(".") +
> 1);
> <                     truncatedTableList.add(truncatedTableName);
> <                     tableFieldMap.put(truncatedTableName, fieldNameList);
> 891d900
> <                 return new TabularRowSet(tableFieldMap,
> truncatedTableList);
> 903c912,913
> <                 SqlQuery.Dialect dialect = ((RolapSchema)
> connection.getSchema()).getDialect()
> ;
> ---
>>                 SqlQuery.Dialect dialect =
>>                     ((RolapSchema) connection.getSchema()).getDialect();
> 910c920
> <                 SqlStatement stmt =
> ---
>>                 SqlStatement stmt2 =
> 917c927
> <                     stmt, request.drillThroughMaxRows(),
> ---
>>                     stmt2, request.drillThroughMaxRows(),
> 936,942c946,950
> <             try {
> <                 if (rs != null) rs.close();
> <             } catch (SQLException ignored) {
> <             }
> <             try {
> <                 if (sqlConn != null && !sqlConn.isClosed())
> sqlConn.close();
> <             } catch (SQLException ignored) {
> ---
>>             if (sqlConn != null) {
>>                 try {
>>                     sqlConn.close();
>>                 } catch (SQLException ignored) {
>>                 }
> 2334c2342
> <         if ((dsCatalog == null) && (catalogName == null)) {
> ---
>>         if ((dsCatalog == null) && (catalogName != null)) {
> 
> 
> 
>> The XmlaCognosTest.ref.xml file reflects Rev 41 not Rev 42 
>> (or 40 and earlier).
>> Which is correct?
> 
> I don't understand. Also, XmlaCognosTest passes for me.
> 
> Julian
> 
> _______________________________________________
> Mondrian mailing list
> Mondrian at pentaho.org
> http://lists.pentaho.org/mailman/listinfo/mondrian
> 


-- 
Quis custodiet ipsos custodes:
This email message is for the sole use of the intended recipient(s) and
may contain confidential information.  Any unauthorized review, use,
disclosure or distribution is prohibited.  If you are not the intended
recipient, please contact the sender by reply email and destroy all
copies of the original message.



More information about the Mondrian mailing list