summaryrefslogtreecommitdiffstats
path: root/tests/testdatabase.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testdatabase.c')
-rw-r--r--tests/testdatabase.c1242
1 files changed, 5 insertions, 1237 deletions
diff --git a/tests/testdatabase.c b/tests/testdatabase.c
index 48685f8..0607b3d 100644
--- a/tests/testdatabase.c
+++ b/tests/testdatabase.c
@@ -692,358 +692,6 @@ static void test_msibadqueries(void)
ok(r == true, "file didn't exist after commit\n");
}
-static void test_querymodify(void)
-{
- LibmsiDatabase *hdb = 0;
- LibmsiQuery *hquery = 0;
- LibmsiRecord *hrec = 0;
- unsigned r;
- LibmsiDBError err;
- const char *sql;
- char buffer[0x100];
- unsigned sz;
-
- DeleteFile(msifile);
-
- /* just libmsi_database_open should not create a file */
- r = libmsi_database_open(msifile, LIBMSI_DB_OPEN_CREATE, &hdb);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open failed\n");
-
- sql = "CREATE TABLE `phone` ( "
- "`id` INT, `name` CHAR(32), `number` CHAR(32) "
- "PRIMARY KEY `id`)";
- r = run_query( hdb, 0, sql );
- ok(r == LIBMSI_RESULT_SUCCESS, "query failed\n");
-
- sql = "CREATE TABLE `_Validation` ( "
- "`Table` CHAR(32) NOT NULL, `Column` CHAR(32) NOT NULL, "
- "`Nullable` CHAR(4) NOT NULL, `MinValue` INT, `MaxValue` INT, "
- "`KeyTable` CHAR(255), `KeyColumn` SHORT, `Category` CHAR(32), "
- "`Set` CHAR(255), `Description` CHAR(255) PRIMARY KEY `Table`, `Column`)";
- r = run_query( hdb, 0, sql );
- ok(r == LIBMSI_RESULT_SUCCESS, "query failed\n");
-
- sql = "INSERT INTO `_Validation` ( `Table`, `Column`, `Nullable` ) "
- "VALUES('phone', 'id', 'N')";
- r = run_query( hdb, 0, sql );
- ok(r == LIBMSI_RESULT_SUCCESS, "query failed\n");
-
- /* check what the error function reports without doing anything */
- sz = 0;
- /* passing NULL as the 3rd param make function to crash on older platforms */
- err = libmsi_query_get_error( 0, NULL, &sz );
- ok(err == LIBMSI_DB_ERROR_INVALIDARG, "libmsi_query_get_error return\n");
-
- /* open a query */
- sql = "SELECT * FROM `phone`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
-
- /* see what happens with a good hquery and bad args */
- err = libmsi_query_get_error( hquery, NULL, NULL );
- ok(err == LIBMSI_DB_ERROR_INVALIDARG || err == LIBMSI_DB_ERROR_NOERROR,
- "libmsi_query_get_error returns %u (expected -3)\n", err);
- err = libmsi_query_get_error( hquery, buffer, NULL );
- ok(err == LIBMSI_DB_ERROR_INVALIDARG, "libmsi_query_get_error return\n");
-
- /* see what happens with a zero length buffer */
- sz = 0;
- buffer[0] = 'x';
- err = libmsi_query_get_error( hquery, buffer, &sz );
- ok(err == LIBMSI_DB_ERROR_MOREDATA, "libmsi_query_get_error return\n");
- ok(buffer[0] == 'x', "buffer cleared\n");
- ok(sz == 0, "size not zero\n");
-
- /* ok this one is strange */
- sz = 0;
- err = libmsi_query_get_error( hquery, NULL, &sz );
- ok(err == LIBMSI_DB_ERROR_NOERROR, "libmsi_query_get_error return\n");
- ok(sz == 0, "size not zero\n");
-
- /* see if it really has an error */
- sz = sizeof buffer;
- buffer[0] = 'x';
- err = libmsi_query_get_error( hquery, buffer, &sz );
- ok(err == LIBMSI_DB_ERROR_NOERROR, "libmsi_query_get_error return\n");
- ok(buffer[0] == 0, "buffer not cleared\n");
- ok(sz == 0, "size not zero\n");
-
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
-
- /* try some invalid records */
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_INSERT, 0 );
- ok(r == LIBMSI_RESULT_INVALID_HANDLE, "libmsi_query_modify failed\n");
- r = libmsi_query_modify(hquery, -1, 0 );
- ok(r == LIBMSI_RESULT_INVALID_HANDLE, "libmsi_query_modify failed\n");
-
- /* try an small record */
- hrec = libmsi_record_create(1);
- r = libmsi_query_modify(hquery, -1, hrec );
- ok(r == LIBMSI_RESULT_INVALID_DATA, "libmsi_query_modify failed\n");
-
- sz = sizeof buffer;
- buffer[0] = 'x';
- err = libmsi_query_get_error( hquery, buffer, &sz );
- ok(err == LIBMSI_DB_ERROR_NOERROR, "libmsi_query_get_error return\n");
- ok(buffer[0] == 0, "buffer not cleared\n");
- ok(sz == 0, "size not zero\n");
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- /* insert a valid record */
- hrec = libmsi_record_create(3);
-
- r = libmsi_record_set_int(hrec, 1, 1);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
- r = libmsi_record_set_string(hrec, 2, "bob");
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set string\n");
- r = libmsi_record_set_string(hrec, 3, "7654321");
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set string\n");
-
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_INSERT_TEMPORARY, hrec );
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_modify failed\n");
-
- /* validate it */
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_VALIDATE_NEW, hrec );
- ok(r == LIBMSI_RESULT_INVALID_DATA, "libmsi_query_modify failed %u\n", r);
-
- sz = sizeof buffer;
- buffer[0] = 'x';
- err = libmsi_query_get_error( hquery, buffer, &sz );
- ok(err == LIBMSI_DB_ERROR_DUPLICATEKEY, "libmsi_query_get_error returned %u\n", err);
- ok(!strcmp(buffer, "id"), "expected \"id\" c, got \"%s\"\n", buffer);
- ok(sz == 2, "size not 2\n");
-
- /* insert the same thing again */
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
-
- /* should fail ... */
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_INSERT_TEMPORARY, hrec );
- ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "libmsi_query_modify failed\n");
-
- /* try to merge the same record */
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_MERGE, hrec );
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_modify failed\n");
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- /* try merging a new record */
- hrec = libmsi_record_create(3);
-
- r = libmsi_record_set_int(hrec, 1, 10);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
- r = libmsi_record_set_string(hrec, 2, "pepe");
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set string\n");
- r = libmsi_record_set_string(hrec, 3, "7654321");
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set string\n");
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_MERGE, hrec );
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_modify failed\n");
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- sql = "SELECT * FROM `phone`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
-
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_record_get_string failed\n");
- ok(!strcmp(buffer, "bob"), "Expected bob, got %s\n", buffer);
-
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 3, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_record_get_string failed\n");
- ok(!strcmp(buffer, "7654321"), "Expected 7654321, got %s\n", buffer);
-
- /* update the query, non-primary key */
- r = libmsi_record_set_string(hrec, 3, "3141592");
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_record_set_string failed\n");
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_UPDATE, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_modify failed\n");
-
- /* do it again */
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_UPDATE, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_modify failed: %d\n", r);
-
- /* update the query, primary key */
- r = libmsi_record_set_int(hrec, 1, 5);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_record_set_int failed\n");
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_UPDATE, hrec);
- ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "libmsi_query_modify failed\n");
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- sql = "SELECT * FROM `phone`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
-
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_record_get_string failed\n");
- ok(!strcmp(buffer, "bob"), "Expected bob, got %s\n", buffer);
-
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 3, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_record_get_string failed\n");
- ok(!strcmp(buffer, "3141592"), "Expected 3141592, got %s\n", buffer);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- /* use a record that doesn't come from a query fetch */
- hrec = libmsi_record_create(3);
- ok(hrec != 0, "libmsi_record_create failed\n");
-
- r = libmsi_record_set_int(hrec, 1, 3);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
- r = libmsi_record_set_string(hrec, 2, "jane");
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set string\n");
- r = libmsi_record_set_string(hrec, 3, "112358");
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set string\n");
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_UPDATE, hrec);
- ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "Expected LIBMSI_RESULT_FUNCTION_FAILED, got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- /* use a record that doesn't come from a query fetch, primary key matches */
- hrec = libmsi_record_create(3);
- ok(hrec != 0, "libmsi_record_create failed\n");
-
- r = libmsi_record_set_int(hrec, 1, 1);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
- r = libmsi_record_set_string(hrec, 2, "jane");
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set string\n");
- r = libmsi_record_set_string(hrec, 3, "112358");
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set string\n");
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_UPDATE, hrec);
- ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "libmsi_query_modify failed\n");
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- hrec = libmsi_record_create(3);
-
- r = libmsi_record_set_int(hrec, 1, 2);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
- r = libmsi_record_set_string(hrec, 2, "nick");
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set string\n");
- r = libmsi_record_set_string(hrec, 3, "141421");
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set string\n");
-
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_INSERT_TEMPORARY, hrec );
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_modify failed\n");
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- sql = "SELECT * FROM `phone` WHERE `id` = 1";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- /* change the id to match the second row */
- r = libmsi_record_set_int(hrec, 1, 2);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
- r = libmsi_record_set_string(hrec, 2, "jerry");
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set string\n");
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_UPDATE, hrec);
- ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "libmsi_query_modify failed\n");
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- /* broader search */
- sql = "SELECT * FROM `phone` ORDER BY `id`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- /* change the id to match the second row */
- r = libmsi_record_set_int(hrec, 1, 2);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
- r = libmsi_record_set_string(hrec, 2, "jerry");
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set string\n");
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_UPDATE, hrec);
- ok(r == LIBMSI_RESULT_FUNCTION_FAILED, "libmsi_query_modify failed\n");
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- r = libmsi_unref( hdb );
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open close failed\n");
-}
-
static LibmsiDatabase *create_db(void)
{
LibmsiDatabase *hdb = 0;
@@ -3777,63 +3425,6 @@ static void test_join(void)
ok( r == LIBMSI_RESULT_BAD_QUERY_SYNTAX,
"Expected LIBMSI_RESULT_BAD_QUERY_SYNTAX, got %d\n", r );
- /* try updating a row in a join table */
- sql = "SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
- "FROM `Component`, `FeatureComponents` "
- "WHERE `Component`.`Component` = `FeatureComponents`.`Component_` "
- "ORDER BY `Feature_`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to open query: %d\n", r );
-
- r = libmsi_query_execute(hquery, 0);
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to execute query: %d\n", r );
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to fetch query: %d\n", r );
-
- r = libmsi_record_set_string( hrec, 1, "epicranius" );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to set string: %d\n", r );
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_UPDATE, hrec);
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to update row: %d\n", r );
-
- /* try another valid operation for joins */
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_REFRESH, hrec);
- todo_wine ok( r == LIBMSI_RESULT_SUCCESS, "failed to refresh row: %d\n", r );
-
- /* try an invalid operation for joins */
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_DELETE, hrec);
- ok( r == LIBMSI_RESULT_FUNCTION_FAILED, "unexpected result: %d\n", r );
-
- r = libmsi_record_set_string( hrec, 2, "epicranius" );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to set string: %d\n", r );
-
- /* primary key cannot be updated */
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_UPDATE, hrec);
- ok( r == LIBMSI_RESULT_FUNCTION_FAILED, "failed to update row: %d\n", r );
-
- libmsi_unref(hrec);
- libmsi_query_close(hquery);
- libmsi_unref(hquery);
-
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
-
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- size = MAX_PATH;
- r = libmsi_record_get_string( hrec, 1, buf, &size );
- ok( r == LIBMSI_RESULT_SUCCESS, "failed to get record string: %d\n", r );
- ok( !strcmp( buf, "epicranius" ), "expected 'epicranius', got %s\n", buf );
-
- libmsi_unref(hrec);
- libmsi_query_close(hquery);
- libmsi_unref(hquery);
-
libmsi_unref(hdb);
DeleteFile(msifile);
}
@@ -5228,389 +4819,6 @@ static void test_select_markers(void)
DeleteFile(msifile);
}
-static void test_querymodify_update(void)
-{
- LibmsiDatabase *hdb = 0;
- LibmsiQuery *hquery = 0;
- LibmsiRecord *hrec = 0;
- unsigned i, test_max, offset, count;
- const char *sql;
- unsigned r;
-
- DeleteFile(msifile);
-
- r = libmsi_database_open(msifile, LIBMSI_DB_OPEN_CREATE, &hdb);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open failed\n");
-
- sql = "CREATE TABLE `table` (`A` INT, `B` INT PRIMARY KEY `A`)";
- r = run_query( hdb, 0, sql );
- ok(r == LIBMSI_RESULT_SUCCESS, "query failed\n");
-
- sql = "INSERT INTO `table` (`A`, `B`) VALUES (1, 2)";
- r = run_query( hdb, 0, sql );
- ok(r == LIBMSI_RESULT_SUCCESS, "query failed\n");
-
- sql = "INSERT INTO `table` (`A`, `B`) VALUES (3, 4)";
- r = run_query( hdb, 0, sql );
- ok(r == LIBMSI_RESULT_SUCCESS, "query failed\n");
-
- sql = "INSERT INTO `table` (`A`, `B`) VALUES (5, 6)";
- r = run_query( hdb, 0, sql );
- ok(r == LIBMSI_RESULT_SUCCESS, "query failed\n");
-
- sql = "SELECT `B` FROM `table`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- r = libmsi_record_set_int(hrec, 1, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_UPDATE, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_modify failed: %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- sql = "SELECT * FROM `table`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 0, "Expected 0, got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 3, "Expected 3, got %d\n", r);
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 4, "Expected 4, got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 5, "Expected 5, got %d\n", r);
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 6, "Expected 6, got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_NO_MORE_ITEMS, "Expected LIBMSI_RESULT_NO_MORE_ITEMS, got %d\n", r);
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- /* loop through all elements */
- sql = "SELECT `B` FROM `table`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
-
- while (true)
- {
- r = libmsi_query_fetch(hquery, &hrec);
- if (r != LIBMSI_RESULT_SUCCESS)
- break;
-
- r = libmsi_record_set_int(hrec, 1, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_UPDATE, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_modify failed: %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
- }
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- sql = "SELECT * FROM `table`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 0, "Expected 0, got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 3, "Expected 3, got %d\n", r);
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 0, "Expected 0, got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 5, "Expected 5, got %d\n", r);
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 0, "Expected 0, got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_NO_MORE_ITEMS, "Expected LIBMSI_RESULT_NO_MORE_ITEMS, got %d\n", r);
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- sql = "CREATE TABLE `table2` (`A` INT, `B` INT PRIMARY KEY `A`)";
- r = run_query( hdb, 0, sql );
- ok(r == LIBMSI_RESULT_SUCCESS, "query failed\n");
-
- sql = "INSERT INTO `table2` (`A`, `B`) VALUES (?, ?)";
- r = libmsi_database_open_query( hdb, sql, &hquery );
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
-
- test_max = 100;
- offset = 1234;
- for(i = 0; i < test_max; i++)
- {
-
- hrec = libmsi_record_create( 2 );
- libmsi_record_set_int( hrec, 1, test_max - i );
- libmsi_record_set_int( hrec, 2, i );
-
- r = libmsi_query_execute( hquery, hrec );
- ok(r == LIBMSI_RESULT_SUCCESS, "Got %d\n", r);
-
- r = libmsi_unref( hrec );
- ok(r == LIBMSI_RESULT_SUCCESS, "Got %d\n", r);
- }
-
- r = libmsi_query_close( hquery );
- ok(r == LIBMSI_RESULT_SUCCESS, "Got %d\n", r);
- r = libmsi_unref( hquery );
- ok(r == LIBMSI_RESULT_SUCCESS, "Got %d\n", r);
-
- /* Update. */
- sql = "SELECT * FROM `table2` ORDER BY `B`";
- r = libmsi_database_open_query( hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- r = libmsi_query_execute( hquery, 0 );
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
-
- count = 0;
- while (libmsi_query_fetch( hquery, &hrec ) == LIBMSI_RESULT_SUCCESS)
- {
- unsigned b = libmsi_record_get_integer( hrec, 2 );
-
- r = libmsi_record_set_int( hrec, 2, b + offset);
- ok(r == LIBMSI_RESULT_SUCCESS, "Got %d\n", r);
-
- r = libmsi_query_modify( hquery, LIBMSI_MODIFY_UPDATE, hrec );
- ok(r == LIBMSI_RESULT_SUCCESS, "Got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
- count++;
- }
- ok(count == test_max, "Got count %d\n", count);
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- /* Recheck. */
- sql = "SELECT * FROM `table2` ORDER BY `B`";
- r = libmsi_database_open_query( hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- r = libmsi_query_execute( hquery, 0 );
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
-
- count = 0;
- while (libmsi_query_fetch( hquery, &hrec ) == LIBMSI_RESULT_SUCCESS)
- {
- unsigned a = libmsi_record_get_integer( hrec, 1 );
- unsigned b = libmsi_record_get_integer( hrec, 2 );
- ok( ( test_max - a + offset) == b, "Got (%d, %d), expected (%d, %d)\n",
- a, b, test_max - a + offset, b);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
- count++;
- }
- ok(count == test_max, "Got count %d\n", count);
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- r = libmsi_unref( hdb );
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open close failed\n");
-}
-
-static void test_querymodify_assign(void)
-{
- LibmsiDatabase *hdb = 0;
- LibmsiQuery *hquery = 0;
- LibmsiRecord *hrec = 0;
- const char *sql;
- unsigned r;
-
- /* setup database */
- DeleteFile(msifile);
-
- r = libmsi_database_open(msifile, LIBMSI_DB_OPEN_CREATE, &hdb);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open failed\n");
-
- sql = "CREATE TABLE `table` (`A` INT, `B` INT PRIMARY KEY `A`)";
- r = run_query( hdb, 0, sql );
- ok(r == LIBMSI_RESULT_SUCCESS, "query failed\n");
-
- /* assign to query, new primary key */
- sql = "SELECT * FROM `table`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
-
- hrec = libmsi_record_create(2);
- ok(hrec != 0, "libmsi_record_create failed\n");
-
- r = libmsi_record_set_int(hrec, 1, 1);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
- r = libmsi_record_set_int(hrec, 2, 2);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_ASSIGN, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_modify failed: %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- sql = "SELECT * FROM `table`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_NO_MORE_ITEMS, "Expected LIBMSI_RESULT_NO_MORE_ITEMS, got %d\n", r);
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- /* assign to query, primary key matches */
- sql = "SELECT * FROM `table`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
-
- hrec = libmsi_record_create(2);
- ok(hrec != 0, "libmsi_record_create failed\n");
-
- r = libmsi_record_set_int(hrec, 1, 1);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
- r = libmsi_record_set_int(hrec, 2, 4);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to set integer\n");
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_ASSIGN, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_modify failed: %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- sql = "SELECT * FROM `table`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open_query failed\n");
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_execute failed\n");
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_fetch failed\n");
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 4, "Expected 4, got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "failed to close record\n");
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_NO_MORE_ITEMS, "Expected LIBMSI_RESULT_NO_MORE_ITEMS, got %d\n", r);
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_query_close failed\n");
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_unref failed\n");
-
- /* close database */
- r = libmsi_unref( hdb );
- ok(r == LIBMSI_RESULT_SUCCESS, "libmsi_database_open close failed\n");
-}
-
static const WCHAR data10[] = { /* MOO */
0x8001, 0x000b,
};
@@ -5684,36 +4892,16 @@ static void test_stringtable(void)
r = run_query(hdb, 0, sql);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- /* open a query */
- sql = "SELECT * FROM `MOO`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- hrec = libmsi_record_create(2);
-
- r = libmsi_record_set_int(hrec, 1, 3);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_record_set_string(hrec, 2, "three");
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- /* insert a nonpersistent row */
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_INSERT_TEMPORARY, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
/* insert persistent row */
sql = "INSERT INTO `MOO` (`A`, `B`) VALUES (4, 'four')";
r = run_query(hdb, 0, sql);
ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
+ /* delete persistent row */
+ sql = "DELETE FROM `MOO` WHERE `A` = 4";
+ r = run_query(hdb, 0, sql);
+ ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
+
/* insert persistent row */
sql = "INSERT INTO `AAR` (`C`, `D`) VALUES (5, 'five')";
r = run_query(hdb, 0, sql);
@@ -5880,106 +5068,6 @@ static void test_stringtable(void)
DeleteFileA(msifile);
}
-static void test_querymodify_delete(void)
-{
- LibmsiDatabase *hdb = 0;
- LibmsiQuery *hquery = 0;
- LibmsiRecord *hrec = 0;
- unsigned r;
- const char *sql;
- char buffer[0x100];
- unsigned sz;
-
- DeleteFile(msifile);
-
- /* just libmsi_database_open should not create a file */
- r = libmsi_database_open(msifile, LIBMSI_DB_OPEN_CREATE, &hdb);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "CREATE TABLE `phone` ( "
- "`id` INT, `name` CHAR(32), `number` CHAR(32) "
- "PRIMARY KEY `id`)";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "INSERT INTO `phone` ( `id`, `name`, `number` )"
- "VALUES('1', 'Alan', '5030581')";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "INSERT INTO `phone` ( `id`, `name`, `number` )"
- "VALUES('2', 'Barry', '928440')";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "INSERT INTO `phone` ( `id`, `name`, `number` )"
- "VALUES('3', 'Cindy', '2937550')";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "SELECT * FROM `phone` WHERE `id` <= 2";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- /* delete 1 */
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_DELETE, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- /* delete 2 */
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_DELETE, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "SELECT * FROM `phone`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 3, "Expected 3, got %d\n", r);
-
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 2, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "Cindy"), "Expected Cindy, got %s\n", buffer);
-
- sz = sizeof(buffer);
- r = libmsi_record_get_string(hrec, 3, buffer, &sz);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "2937550"), "Expected 2937550, got %s\n", buffer);
-
- r = libmsi_unref(hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_NO_MORE_ITEMS, "Expected LIBMSI_RESULT_NO_MORE_ITEMS, got %d\n", r);
-
- r = libmsi_query_close(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_unref(hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_unref(hdb);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-}
-
static const WCHAR _Tables[] = {0x4840, 0x3f7f, 0x4164, 0x422f, 0x4836, 0};
static const WCHAR _StringData[] = {0x4840, 0x3f3f, 0x4577, 0x446c, 0x3b6a, 0x45e4, 0x4824, 0};
static const WCHAR _StringPool[] = {0x4840, 0x3f3f, 0x4577, 0x446c, 0x3e6a, 0x44b2, 0x482f, 0};
@@ -6345,124 +5433,6 @@ static void test_order(void)
libmsi_unref(hdb);
}
-static void test_querymodify_delete_temporary(void)
-{
- LibmsiDatabase *hdb;
- LibmsiQuery *hquery;
- LibmsiRecord *hrec;
- const char *sql;
- unsigned r;
-
- DeleteFile(msifile);
-
- r = libmsi_database_open(msifile, LIBMSI_DB_OPEN_CREATE, &hdb);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "CREATE TABLE `Table` ( `A` SHORT PRIMARY KEY `A` )";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "SELECT * FROM `Table`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- hrec = libmsi_record_create(1);
- libmsi_record_set_int(hrec, 1, 1);
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_INSERT, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- libmsi_unref(hrec);
-
- hrec = libmsi_record_create(1);
- libmsi_record_set_int(hrec, 1, 2);
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_INSERT_TEMPORARY, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- libmsi_unref(hrec);
-
- hrec = libmsi_record_create(1);
- libmsi_record_set_int(hrec, 1, 3);
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_INSERT, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- libmsi_unref(hrec);
-
- hrec = libmsi_record_create(1);
- libmsi_record_set_int(hrec, 1, 4);
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_INSERT_TEMPORARY, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- libmsi_unref(hrec);
- libmsi_query_close(hquery);
- libmsi_unref(hquery);
-
- sql = "SELECT * FROM `Table` WHERE `A` = 2";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_DELETE, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- libmsi_unref(hrec);
- libmsi_query_close(hquery);
- libmsi_unref(hquery);
-
- sql = "SELECT * FROM `Table` WHERE `A` = 3";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_DELETE, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- libmsi_unref(hrec);
- libmsi_query_close(hquery);
- libmsi_unref(hquery);
-
- sql = "SELECT * FROM `Table` ORDER BY `A`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- libmsi_unref(hrec);
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 4, "Expected 4, got %d\n", r);
-
- libmsi_unref(hrec);
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_NO_MORE_ITEMS, "Expected LIBMSI_RESULT_NO_MORE_ITEMS, got %d\n", r);
-
- libmsi_query_close(hquery);
- libmsi_unref(hquery);
- libmsi_unref(hdb);
- DeleteFileA(msifile);
-}
-
static void test_deleterow(void)
{
LibmsiDatabase *hdb;
@@ -7119,201 +6089,6 @@ static void test_forcecodepage(void)
DeleteFileA("forcecodepage.idt");
}
-static void test_querymodify_refresh(void)
-{
- LibmsiDatabase *hdb;
- LibmsiQuery *hquery;
- LibmsiRecord *hrec;
- const char *sql;
- char buffer[MAX_PATH];
- unsigned r;
- unsigned size;
-
- DeleteFile(msifile);
-
- r = libmsi_database_open(msifile, LIBMSI_DB_OPEN_CREATE, &hdb);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL, `B` INT PRIMARY KEY `A` )";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "INSERT INTO `Table` ( `A`, `B` ) VALUES ( 'hi', 1 )";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "SELECT * FROM `Table`";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "UPDATE `Table` SET `B` = 2 WHERE `A` = 'hi'";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_REFRESH, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = libmsi_record_get_string(hrec, 1, buffer, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "hi"), "Expected \"hi\", got \"%s\"\n", buffer);
- ok(size == 2, "Expected 2, got %d\n", size);
-
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- libmsi_unref(hrec);
- libmsi_query_close(hquery);
- libmsi_unref(hquery);
-
- sql = "INSERT INTO `Table` ( `A`, `B` ) VALUES ( 'hello', 3 )";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "SELECT * FROM `Table` WHERE `B` = 3";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "UPDATE `Table` SET `B` = 2 WHERE `A` = 'hello'";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "INSERT INTO `Table` ( `A`, `B` ) VALUES ( 'hithere', 3 )";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_REFRESH, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = libmsi_record_get_string(hrec, 1, buffer, &size);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- ok(!strcmp(buffer, "hello"), "Expected \"hello\", got \"%s\"\n", buffer);
- ok(size == 5, "Expected 5, got %d\n", size);
-
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- libmsi_unref(hrec);
- libmsi_query_close(hquery);
- libmsi_unref(hquery);
- libmsi_unref(hdb);
- DeleteFileA(msifile);
-}
-
-static void test_where_querymodify(void)
-{
- LibmsiDatabase *hdb;
- LibmsiQuery *hquery;
- LibmsiRecord *hrec;
- const char *sql;
- unsigned r;
-
- DeleteFile(msifile);
-
- r = libmsi_database_open(msifile, LIBMSI_DB_OPEN_CREATE, &hdb);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "CREATE TABLE `Table` ( `A` INT, `B` INT PRIMARY KEY `A` )";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "INSERT INTO `Table` ( `A`, `B` ) VALUES ( 1, 2 )";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "INSERT INTO `Table` ( `A`, `B` ) VALUES ( 3, 4 )";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- sql = "INSERT INTO `Table` ( `A`, `B` ) VALUES ( 5, 6 )";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- /* `B` = 3 doesn't match, but the query shouldn't be executed */
- sql = "SELECT * FROM `Table` WHERE `B` = 3";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- hrec = libmsi_record_create(2);
- libmsi_record_set_int(hrec, 1, 7);
- libmsi_record_set_int(hrec, 2, 8);
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_INSERT_TEMPORARY, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- libmsi_unref(hrec);
- libmsi_query_close(hquery);
- libmsi_unref(hquery);
-
- sql = "SELECT * FROM `Table` WHERE `A` = 7";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 7, "Expected 7, got %d\n", r);
-
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 8, "Expected 8, got %d\n", r);
-
- libmsi_record_set_int(hrec, 2, 9);
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_UPDATE, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- libmsi_unref(hrec);
- libmsi_query_close(hquery);
- libmsi_unref(hquery);
-
- sql = "SELECT * FROM `Table` WHERE `A` = 7";
- r = libmsi_database_open_query(hdb, sql, &hquery);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
- r = libmsi_query_execute(hquery, 0);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_query_fetch(hquery, &hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 7, "Expected 7, got %d\n", r);
-
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 9, "Expected 9, got %d\n", r);
-
- sql = "UPDATE `Table` SET `B` = 10 WHERE `A` = 7";
- r = run_query(hdb, 0, sql);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_query_modify(hquery, LIBMSI_MODIFY_REFRESH, hrec);
- ok(r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r);
-
- r = libmsi_record_get_integer(hrec, 1);
- ok(r == 7, "Expected 7, got %d\n", r);
-
- r = libmsi_record_get_integer(hrec, 2);
- ok(r == 10, "Expected 10, got %d\n", r);
-
- libmsi_unref(hrec);
- libmsi_query_close(hquery);
- libmsi_unref(hquery);
- libmsi_unref(hdb);
-}
-
static bool create_storage(const char *name)
{
WCHAR nameW[MAX_PATH];
@@ -9459,7 +8234,6 @@ void main()
test_msidatabase();
test_msiinsert();
test_msibadqueries();
- test_querymodify();
test_querygetcolumninfo();
test_getcolinfo();
test_msiexport();
@@ -9482,20 +8256,14 @@ void main()
test_tables_order();
test_rows_order();
test_select_markers();
- test_querymodify_update();
- test_querymodify_assign();
test_stringtable();
- test_querymodify_delete();
test_defaultdatabase();
test_order();
- test_querymodify_delete_temporary();
test_deleterow();
test_quotes();
test_carriagereturn();
test_noquotes();
test_forcecodepage();
- test_querymodify_refresh();
- test_where_querymodify();
test_storages_table();
test_droptable();
#if 0