You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Adriano Crestani (JIRA)" <tu...@ws.apache.org> on 2007/04/24 23:05:15 UTC

[jira] Commented: (TUSCANY-952) DAS must support queries that reference tables in different "schemas"

    [ https://issues.apache.org/jira/browse/TUSCANY-952?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12491452 ] 

Adriano Crestani commented on TUSCANY-952:
------------------------------------------

Amita, I was revising your classes and found some problems:

 - The following constructor:

...
    public QualifiedColumn(String name, boolean isDatabaseSchemaNameSupported) {
        int index = name.indexOf('.');
        if ( index == -1 ) {
            throw new RuntimeException("Column " + name + " must be qualified with a table name and optional schema name");
        }
...

If a new QualifiedColumn("table", false) is invoked, it will throw an RuntimeException because it doesn't check if on the first condition the variable isDatabaseSchemaNameSupported.

I suggest a modification on the first condition:

...
if ( index == -1 && !isDatabaseSchemaNameSupported) {
            throw new RuntimeException("Column " + name + " must be qualified with a table name and optional schema name");
        }
...

-------------------------------------

Another doubt on MappingWrapper.addRelationship(Vector parentNames, Vector childNames) that you create two Vector<QualifiedColumn> and add new QualifiedColumns are being created with QualifiedColumn(String tableName) constructor. This way it will not load the schema name. I commented it on the code bellow:

...
public Relationship addRelationship(Vector parentNames, Vector childNames) {
        //create vector for each
        if(parentNames.size() != childNames.size()){
            throw new RuntimeException("Can not for relationship for multiple keys, different sizes");
        }
        
        Vector parentColumns = new Vector();
        Vector childColumns = new Vector();
        
        for(int i=0; i<parentNames.size(); i++){
            //>>>> it should be checked if the schema name is supported and use another constructor for it  
            QualifiedColumn parent = new QualifiedColumn((String)parentNames.get(i));
            QualifiedColumn child = new QualifiedColumn((String)childNames.get(i));
            
            parentColumns.add(parent);
            childColumns.add(child);
        }

        //all parent columns should be from same table and schema
        //all child columns should be from same table and schema
        checkTableNames(parentColumns);
    	checkSchemaNames(parentColumns);
        
        checkTableNames(childColumns);
    	checkSchemaNames(childColumns);
        
        Relationship r = FACTORY.createRelationship();
        //JIRA-952
        if(this.config.isDatabaseSchemaNameSupported()){      
 
           //>>>>> As the QualifiedColumns are being created with QualifiedName(String name) constructor, the method getShemaName will always return ""
  	
            r.setName(((QualifiedColumn)childColumns.get(0)).getSchemaName()+"."
            		+((QualifiedColumn)childColumns.get(0)).getTableName());
            r.setPrimaryKeyTable(((QualifiedColumn)parentColumns.get(0)).getSchemaName()+"."
            		+((QualifiedColumn)parentColumns.get(0)).getTableName());
            r.setForeignKeyTable(((QualifiedColumn)childColumns.get(0)).getSchemaName()+"."
            		+((QualifiedColumn)childColumns.get(0)).getTableName());        	
        }
        else{
        r.setName(((QualifiedColumn)childColumns.get(0)).getTableName());
        r.setPrimaryKeyTable(((QualifiedColumn)parentColumns.get(0)).getTableName());
        r.setForeignKeyTable(((QualifiedColumn)childColumns.get(0)).getTableName());
        }
...

-----------------------------

I didn't check all your code yet, I will wait for clarifications ; )

Adriano Crestani

> DAS must support queries that reference tables in different "schemas"
> ---------------------------------------------------------------------
>
>                 Key: TUSCANY-952
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-952
>             Project: Tuscany
>          Issue Type: Bug
>          Components: Java DAS RDB
>            Reporter: Kevin Williams
>             Fix For: Java-DAS-Mx
>
>         Attachments: DAS-JIRA-952-Apr24-Amita.txt, JIRA-952-Details.doc, JIRA-952-Feb16-Amita.jar, JIRA-952-Mar01-Amita.jar
>
>
> The DAS is curently ignorant of database schema designations.  This means the DAS will generate incorrect write statements when it processes the change summary from a data graph that originated from a query that uses schema names that are different from the default schema.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org