diff --git a/lib/dml/simpletest/testdml.php b/lib/dml/simpletest/testdml.php index 1a59cb8..cae4b24 100755 --- a/lib/dml/simpletest/testdml.php +++ b/lib/dml/simpletest/testdml.php @@ -1932,6 +1932,46 @@ class dml_test extends UnitTestCase { $this->assertEqual(0, $DB->count_records($tablename)); } } + + public function test_get_join_naming() { + $DB = $this->tdb; + $dbman = $DB->get_manager(); + + $testtables = array('unit_table1', 'unit_table2'); + + foreach($testtables as $tablename){ + $table = $this->get_test_table($tablename); + + $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); + $table->add_field('course', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0'); + $table->add_field('name', XMLDB_TYPE_CHAR, '255', null, null, null, '0'); + $table->add_index('course', XMLDB_INDEX_NOTUNIQUE, array('course')); + $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); + $dbman->create_table($table); + $this->tables[$tablename] = $table; + } + + $data = array(array('id' => 1, 'course' => 1, 'name' => 'record1'), + array('id' => 2, 'course' => 2, 'name' => 'record2'), + array('id' => 3, 'course' => 3, 'name' => 'record3')); + + foreach ($data as $record) { + $DB->insert_record($testtables[0], $record); + $DB->insert_record($testtables[1], $record); + } + + $sql = "SELECT one.name, one.course + FROM {{$testtables[1]}} one + JOIN (SELECT x.* FROM {{$testtables[0]}} x) zero + ON zero.course = one.course + WHERE zero.name = ?"; + + $this->assertTrue( $record = $DB->get_record_sql($sql, array('record3'))); + + $this->assertEqual('record3', $record->name); + $this->assertEqual(3, $record->course); + + } } /**