Issue #2675000 by alexpott: SQLBase::mapjoinable does not support SQLite part 2
							parent
							
								
									73f91709fb
								
							
						
					
					
						commit
						72d53b30d1
					
				| 
						 | 
				
			
			@ -263,6 +263,15 @@ abstract class SqlBase extends SourcePluginBase implements ContainerFactoryPlugi
 | 
			
		|||
    }
 | 
			
		||||
    $id_map_database_options = $id_map->getDatabase()->getConnectionOptions();
 | 
			
		||||
    $source_database_options = $this->getDatabase()->getConnectionOptions();
 | 
			
		||||
 | 
			
		||||
    // Special handling for sqlite which deals with files.
 | 
			
		||||
    if ($id_map_database_options['driver'] === 'sqlite' &&
 | 
			
		||||
      $source_database_options['driver'] === 'sqlite' &&
 | 
			
		||||
      $id_map_database_options['database'] != $source_database_options['database']
 | 
			
		||||
    ) {
 | 
			
		||||
      return FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    foreach (array('username', 'password', 'host', 'port', 'namespace', 'driver') as $key) {
 | 
			
		||||
      if (isset($source_database_options[$key])) {
 | 
			
		||||
        if ($id_map_database_options[$key] != $source_database_options[$key]) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,16 +107,33 @@ class SqlBaseTest extends UnitTestCase {
 | 
			
		|||
        FALSE,
 | 
			
		||||
        TRUE,
 | 
			
		||||
        TRUE,
 | 
			
		||||
        ['username' => 'different_from_map', 'password' => 'different_from_map'],
 | 
			
		||||
        ['username' => 'different_from_source', 'password' => 'different_from_source'],
 | 
			
		||||
        ['driver' => 'mysql', 'username' => 'different_from_map', 'password' => 'different_from_map'],
 | 
			
		||||
        ['driver' => 'mysql', 'username' => 'different_from_source', 'password' => 'different_from_source'],
 | 
			
		||||
      ],
 | 
			
		||||
      // Returns true because source and id map connection options are the same.
 | 
			
		||||
      [
 | 
			
		||||
        TRUE,
 | 
			
		||||
        TRUE,
 | 
			
		||||
        TRUE,
 | 
			
		||||
        ['username' => 'same_value', 'password' => 'same_value'],
 | 
			
		||||
        ['username' => 'same_value', 'password' => 'same_value'],
 | 
			
		||||
        ['driver' => 'pgsql', 'username' => 'same_value', 'password' => 'same_value'],
 | 
			
		||||
        ['driver' => 'pgsql', 'username' => 'same_value', 'password' => 'same_value'],
 | 
			
		||||
      ],
 | 
			
		||||
      // Returns false because driver is sqlite and the databases are not the
 | 
			
		||||
      // same.
 | 
			
		||||
      [
 | 
			
		||||
        FALSE,
 | 
			
		||||
        TRUE,
 | 
			
		||||
        TRUE,
 | 
			
		||||
        ['driver' => 'sqlite', 'database' => '1.sqlite', 'username' => '', 'password' => ''],
 | 
			
		||||
        ['driver' => 'sqlite', 'database' => '2.sqlite', 'username' => '', 'password' => ''],
 | 
			
		||||
      ],
 | 
			
		||||
      // Returns false because driver is not the same.
 | 
			
		||||
      [
 | 
			
		||||
        FALSE,
 | 
			
		||||
        TRUE,
 | 
			
		||||
        TRUE,
 | 
			
		||||
        ['driver' => 'pgsql', 'username' => 'same_value', 'password' => 'same_value'],
 | 
			
		||||
        ['driver' => 'mysql', 'username' => 'same_value', 'password' => 'same_value'],
 | 
			
		||||
      ],
 | 
			
		||||
    ];
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue