33static const char *
msifile =
"winetest-db.msi";
34static const char *
msifile2 =
"winetst2-db.msi";
35static const char *
mstfile =
"winetst-db.mst";
57 "field %u: expected \"%s\", got \"%s\"\n",
i,
expect,
buffer);
62#define check_record(rec, ...) check_record_(__LINE__, rec, __VA_ARGS__)
168 ok (
res,
"Got zero res.\n" );
184 ok(
res ==
TRUE,
"Failed to delete database\n" );
187 ok(
res ==
TRUE,
"Failed to delete database\n" );
250 "CREATE TABLE `Component` ( "
251 "`Component` CHAR(72) NOT NULL, "
252 "`ComponentId` CHAR(38), "
253 "`Directory_` CHAR(72) NOT NULL, "
254 "`Attributes` SHORT NOT NULL, "
255 "`Condition` CHAR(255), "
256 "`KeyPath` CHAR(72) "
257 "PRIMARY KEY `Component`)" );
265 "CREATE TABLE `CustomAction` ( "
266 "`Action` CHAR(72) NOT NULL, "
267 "`Type` SHORT NOT NULL, "
268 "`Source` CHAR(72), "
269 "`Target` CHAR(255) "
270 "PRIMARY KEY `Action`)" );
278 "CREATE TABLE `Directory` ( "
279 "`Directory` CHAR(255) NOT NULL, "
280 "`Directory_Parent` CHAR(255), "
281 "`DefaultDir` CHAR(255) NOT NULL "
282 "PRIMARY KEY `Directory`)" );
290 "CREATE TABLE `FeatureComponents` ( "
291 "`Feature_` CHAR(38) NOT NULL, "
292 "`Component_` CHAR(72) NOT NULL "
293 "PRIMARY KEY `Feature_`, `Component_` )" );
301 "CREATE TABLE `StdDlls` ( "
302 "`File` CHAR(255) NOT NULL, "
303 "`Binary_` CHAR(72) NOT NULL "
304 "PRIMARY KEY `File` )" );
312 "CREATE TABLE `Binary` ( "
313 "`Name` CHAR(72) NOT NULL, "
314 "`Data` CHAR(72) NOT NULL "
315 "PRIMARY KEY `Name` )" );
334#define add_component_entry(hdb, values) add_entry(__FILE__, __LINE__, "Component", hdb, values, \
335 "INSERT INTO `Component` " \
336 "(`Component`, `ComponentId`, `Directory_`, " \
337 "`Attributes`, `Condition`, `KeyPath`) VALUES( %s )")
339#define add_custom_action_entry(hdb, values) add_entry(__FILE__, __LINE__, "CustomAction", hdb, values, \
340 "INSERT INTO `CustomAction` " \
341 "(`Action`, `Type`, `Source`, `Target`) VALUES( %s )")
343#define add_feature_components_entry(hdb, values) add_entry(__FILE__, __LINE__, "FeatureComponents", hdb, values, \
344 "INSERT INTO `FeatureComponents` " \
345 "(`Feature_`, `Component_`) VALUES( %s )")
347#define add_std_dlls_entry(hdb, values) add_entry(__FILE__, __LINE__, "StdDlls", hdb, values, \
348 "INSERT INTO `StdDlls` (`File`, `Binary_`) VALUES( %s )")
350#define add_binary_entry(hdb, values) add_entry(__FILE__, __LINE__, "Binary", hdb, values, \
351 "INSERT INTO `Binary` (`Name`, `Data`) VALUES( %s )")
355 MSIHANDLE hdb = 0, hview = 0, hview2 = 0, hrec = 0;
368 query =
"CREATE TABLE `phone` ( "
369 "`id` INT, `name` CHAR(32), `number` CHAR(32) "
380 query =
"SELECT * FROM phone WHERE number = '8675309'";
389 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
390 "VALUES('1', 'Abe', '8675309')";
414 query =
"SELECT * FROM `phone` WHERE `id` = 1";
420 ok(
r == 3,
"record count wrong\n");
423 ok(
r ==
FALSE,
"field 0 not null\n");
426 ok(
r == 1,
"field 1 contents wrong\n");
430 ok(!
strcmp(
buf,
"Abe"),
"field 2 content incorrect\n");
434 ok(!
strcmp(
buf,
"8675309"),
"field 3 content incorrect\n");
441 query =
"SELECT * FROM `phone` WHERE `id` >= 10";
444 ok(hrec == 0,
"hrec should be null\n");
449 query =
"SELECT * FROM `phone` WHERE `id` < 0";
453 query =
"SELECT * FROM `phone` WHERE `id` <= 0";
457 query =
"SELECT * FROM `phone` WHERE `id` <> 1";
461 query =
"SELECT * FROM `phone` WHERE `id` > 10";
466 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
481 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
508 ok(
r ==
TRUE,
"file didn't exist after commit\n");
522 if (!pMsiDecomposeDescriptorA)
526 desc =
"']gAVn-}f(ZXfeAR6.jiFollowTheWhiteRabbit>3w2x^IGfe?CxI5heAvk.";
528 prod[0] =
feature[0] = comp[0] = 0;
532 ok(
strcmp(prod,
"{90110409-6000-11D3-8CFE-0150048383C9}")==0,
"product wrong\n");
534 ok(
strcmp(comp,
"{A7CD68DB-EF74-49C8-FBB2-A7C463B2AC24}")==0,
"component wrong\n");
537 desc =
"']gAVn-}f(ZXfeAR6.ji"
538 "ThisWillFailIfTheresMoreThanAGuidsChars>"
539 "3w2x^IGfe?CxI5heAvk.";
545 desc =
"']gAVn-}f(ZXfeAR6.jiFollowTheWhiteRabbit<3w2x^IGfe?CxI5heAvk.";
552 ok(!
strcmp(prod,
"{90110409-6000-11D3-8CFE-0150048383C9}"),
"got '%s'\n", prod);
554 ok(!comp[0],
"got '%s'\n", comp);
559 r = pMsiDecomposeDescriptorA(
"yh1BVN)8A$!!!!!MKKSkAlwaysInstalledIntl_1033<", prod,
feature, comp, &
len);
562 ok(!
strcmp(prod,
"{90150000-006E-0409-0000-0000000FF1CE}"),
"got '%s'\n", prod);
564 ok(!comp[0],
"got '%s'\n", comp);
570 desc =
"']gAVn-}f(ZXfeAR6.ji"
571 "ThisWillWorkIfTheresLTEThanAGuidsChars>"
572 "3w2x^IGfe?CxI5heAvk."
597 ok(
len == 0,
"length wrong\n");
690 r =
try_query( hdb,
"CREATE TABLE `a` (`b`)");
693 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) )");
696 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL)");
699 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY)");
702 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY)");
705 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY)");
708 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY 'b')");
711 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY `b')");
714 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY `b')");
717 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHA(72) NOT NULL PRIMARY KEY `b`)");
720 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(-1) NOT NULL PRIMARY KEY `b`)");
723 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(720) NOT NULL PRIMARY KEY `b`)");
726 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL KEY `b`)");
729 r =
try_query( hdb,
"CREATE TABLE `a` (`` CHAR(72) NOT NULL PRIMARY KEY `b`)");
732 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY `b`)");
735 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY `b`)");
738 r =
try_query( hdb,
"CREATE TABLE `aa` (`b` CHAR(72) NOT NULL, `c` "
739 "CHAR(72), `d` CHAR(255) NOT NULL LOCALIZABLE PRIMARY KEY `b`)");
745 r =
try_query( hdb,
"CREATE TABLE `blah` (`foo` CHAR(72) NOT NULL "
746 "PRIMARY KEY `foo`)");
755 r =
try_query( hdb,
"CREATE TABLE `boo` (`foo` CHAR(72) NOT NULL "
756 "PRIMARY KEY `ba`)");
759 r =
try_query( hdb,
"CREATE TABLE `bee` (`foo` CHAR(72) NOT NULL )");
762 r =
try_query( hdb,
"CREATE TABLE `temp` (`t` CHAR(72) NOT NULL "
766 r =
try_query( hdb,
"CREATE TABLE `c` (`b` CHAR NOT NULL PRIMARY KEY `b`)");
772 r =
try_query( hdb,
"select * from c where b = 'x");
775 r =
try_query( hdb,
"select * from c where b = 'x'");
784 r =
try_query( hdb,
"select * from c where b = x");
787 r =
try_query( hdb,
"select * from c where b = \"x\"");
790 r =
try_query( hdb,
"select * from c where b = 'x'");
793 r =
try_query( hdb,
"select * from c where b = '\"x'");
798 r =
try_query( hdb,
"select * from c where b = '\\\'x'");
805 r =
try_query( hdb,
"select `c`.`b` from `c` order by `c`.`order`");
808 r =
try_query( hdb,
"select `c`.b` from `c`");
811 r =
try_query( hdb,
"select `c`.`b from `c`");
817 r =
try_query( hdb,
"select `c.`b` from `c`");
820 r =
try_query( hdb,
"select c`.`b` from `c`");
826 r =
try_query( hdb,
"select `c`.`b` from c`");
829 r =
try_query( hdb,
"select `c`.`b` from `c");
835 r =
try_query( hdb,
"CREATE TABLE `\5a` (`b` CHAR NOT NULL PRIMARY KEY `b`)" );
841 r =
try_query( hdb,
"CREATE TABLE `a\5` (`b` CHAR NOT NULL PRIMARY KEY `b`)" );
847 r =
try_query( hdb,
"CREATE TABLE `-a` (`b` CHAR NOT NULL PRIMARY KEY `b`)" );
853 r =
try_query( hdb,
"CREATE TABLE `a-` (`b` CHAR NOT NULL PRIMARY KEY `b`)" );
863 ok(
r ==
TRUE,
"file didn't exist after commit\n");
881 query =
"CREATE TABLE `phone` ( "
882 "`id` INT, `name` CHAR(32), `number` CHAR(32) "
887 query =
"CREATE TABLE `_Validation` ( "
888 "`Table` CHAR(32) NOT NULL, `Column` CHAR(32) NOT NULL, "
889 "`Nullable` CHAR(4) NOT NULL, `MinValue` INT, `MaxValue` INT, "
890 "`KeyTable` CHAR(255), `KeyColumn` SHORT, `Category` CHAR(32), "
891 "`Set` CHAR(255), `Description` CHAR(255) PRIMARY KEY `Table`, `Column`)";
895 query =
"INSERT INTO `_Validation` ( `Table`, `Column`, `Nullable` ) "
896 "VALUES('phone', 'id', 'N')";
900 query =
"SELECT * FROM `phone`";
910 ok(sz == 0,
"got size %lu\n", sz);
931 ok(sz == 0,
"got size %lu\n", sz);
963 ok(sz == 2,
"got size %lu\n", sz);
1005 query =
"SELECT * FROM `phone`";
1042 query =
"SELECT * FROM `phone`";
1057 ok(hrec != 0,
"MsiCreateRecord failed\n");
1074 ok(hrec != 0,
"MsiCreateRecord failed\n");
1110 query =
"SELECT * FROM `phone` WHERE `id` = 1";
1135 query =
"SELECT * FROM `phone` ORDER BY `id`";
1189 ok( hdb,
"failed to create db\n");
1218 ok( rec == 0,
"returned a record\n");
1290 ok( hdb,
"failed to create db\n");
1293 "CREATE TABLE `Properties` "
1294 "( `Property` CHAR(255), "
1295 " `Value` CHAR(1), "
1297 " `Integervalue` INTEGER, "
1298 " `Shortvalue` SHORT, "
1299 " `Longvalue` LONG, "
1300 " `Longcharvalue` LONGCHAR, "
1301 " `Charvalue` CHAR, "
1302 " `Localizablevalue` CHAR LOCALIZABLE "
1303 " PRIMARY KEY `Property`)" );
1308 ok( rec,
"failed to get column info record\n" );
1309 check_record(rec, 9,
"S255",
"S1",
"I2",
"I2",
"I2",
"I4",
"S0",
"S0",
"L0");
1325 ok( rec,
"failed to get column info record\n" );
1326 check_record(rec, 9,
"Property",
"Value",
"Intvalue",
"Integervalue",
"Shortvalue",
1327 "Longvalue",
"Longcharvalue",
"Charvalue",
"Localizablevalue");
1331 "CREATE TABLE `Binary` "
1332 "( `Name` CHAR(255), `Data` OBJECT PRIMARY KEY `Name`)" );
1337 ok( rec,
"failed to get column info record\n" );
1347 ok( rec,
"failed to get column info record\n" );
1352 "CREATE TABLE `UIText` "
1353 "( `Key` CHAR(72) NOT NULL, `Text` CHAR(255) LOCALIZABLE PRIMARY KEY `Key`)" );
1360 ok( rec,
"failed to get column info record\n" );
1365 ok( rec,
"failed to get column info record\n" );
1378 const char file[] =
"phone.txt";
1383 "id\tname\tnumber\r\n"
1386 "1\tAbe\t8675309\r\n";
1395 query =
"CREATE TABLE `phone` ( "
1396 "`id` INT, `name` CHAR(32), `number` CHAR(32) "
1397 "PRIMARY KEY `id`)";
1408 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
1409 "VALUES('1', 'Abe', '8675309')";
1440 ok(0,
"failed to open file %s\n",
path);
1449 const char insert_query[] =
1450 "INSERT INTO `strings` ( `id`, `val` ) VALUES('1', 'Z')";
1464 "CREATE TABLE `strings` ( `id` INT, `val` CHAR(0) PRIMARY KEY `id`)");
1469 len =
strchr(insert_query,
'Z') - insert_query;
1526#define create_file(name) create_file_data(name, name, 0)
1537 ok( hdb,
"failed to create db\n");
1540 "CREATE TABLE `Properties` "
1541 "( `Property` CHAR(255), `Value` CHAR(1) PRIMARY KEY `Property`)" );
1545 "INSERT INTO `Properties` "
1546 "( `Value`, `Property` ) VALUES ( 'Prop', 'value' )" );
1559 ok( rec,
"failed to get column info record\n" );
1565 ok( rec,
"failed to get column info record\n" );
1570 "SELECT * FROM `_Streams` WHERE `Name` = '\5SummaryInformation'", &
view );
1596 "SELECT * FROM `_Streams` WHERE `Name` = '\5SummaryInformation'", &
view );
1621 "INSERT INTO `_Streams` ( `Name`, `Data` ) VALUES ( ?, ? )", &
view );
1643 "INSERT INTO `_Streams` ( `Name`, `Data` ) VALUES ( ?, ? )", &
view );
1665 "INSERT INTO `_Streams` ( `Name`, `Data` ) VALUES ( ?, ? )", &
view );
1676 "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data'", &
view );
1694 ok( !
lstrcmpA(
buf,
"test.txt\n"),
"Expected 'test.txt\\n', got %s\n",
buf);
1701 "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data1'", &
view );
1719 ok( !
lstrcmpA(
buf,
"test1.txt\n"),
"Expected 'test1.txt\\n', got %s\n",
buf);
1735 "UPDATE `_Streams` SET `Data` = ? WHERE `Name` = 'data1'", &
view );
1746 "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data1'", &
view );
1764 ok( !
lstrcmpA(
buf,
"test2.txt\n"),
"Expected 'test2.txt\\n', got %s\n",
buf);
1775 ok( hdb,
"failed to create db\n");
1783 "INSERT INTO `_Streams` ( `Name`, `Data` ) VALUES ( ?, ? )", &
view );
1795 "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data'", &
view );
1817 "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data'", &
view );
1828 "DELETE FROM `_Streams` WHERE `Name` = 'data'", &
view );
1864 query =
"CREATE TABLE `Binary` ( `Name` CHAR(72) NOT NULL, `ID` INT NOT NULL, `Data` OBJECT PRIMARY KEY `Name`, `ID`)";
1875 query =
"INSERT INTO `Binary` ( `Name`, `ID`, `Data` ) VALUES ( 'encryption.dll.CB4E6205_F99A_4C51_ADD4_184506EFAB87', 10000, ? )";
1891 query =
"CREATE TABLE `Binary` ( `Name` CHAR(72) NOT NULL, `ID` INT NOT NULL, `Data` OBJECT PRIMARY KEY `Name`, `ID`)";
1901 query =
"INSERT INTO `Binary` ( `Name`, `ID`, `Data` ) VALUES ( 'filename1', 1, ? )";
1905 query =
"INSERT INTO `Binary` ( `Name`, `ID`, `Data` ) VALUES ( 'filename1', 1, ? )";
1922 query =
"SELECT * FROM `_Streams`";
1929 ok( !
lstrcmpA(
file,
"Binary.filename1.1"),
"Expected 'Binary.filename1.1', got %s\n",
file );
1935 ok( !
lstrcmpA(
buf,
"test.txt\n"),
"Expected 'test.txt\\n', got %s\n",
buf );
1941 query =
"SELECT * FROM `Binary`";
1954 ok( !
lstrcmpA(
buf,
"test.txt\n"),
"Expected 'test.txt\\n', got %s\n",
buf );
1972 ok( hdb,
"failed to create db\n");
1975 "CREATE TABLE `IESTable` ("
1976 "`Action` CHAR(64), "
1977 "`Condition` CHAR(64), "
1978 "`Sequence` LONG PRIMARY KEY `Sequence`)");
1979 ok(
r ==
S_OK,
"Cannot create IESTable table: %d\n",
r);
1982 "CREATE TABLE `CATable` ("
1983 "`Action` CHAR(64), "
1984 "`Type` LONG PRIMARY KEY `Type`)");
1985 ok(
r ==
S_OK,
"Cannot create CATable table: %d\n",
r);
1987 r =
run_query(hdb, 0,
"INSERT INTO `IESTable` "
1988 "( `Action`, `Condition`, `Sequence`) "
1989 "VALUES ( 'clean', 'cond4', 4)");
1990 ok(
r ==
S_OK,
"cannot add entry to IESTable table:%d\n",
r );
1992 r =
run_query(hdb, 0,
"INSERT INTO `IESTable` "
1993 "( `Action`, `Condition`, `Sequence`) "
1994 "VALUES ( 'depends', 'cond1', 1)");
1995 ok(
r ==
S_OK,
"cannot add entry to IESTable table:%d\n",
r );
1997 r =
run_query(hdb, 0,
"INSERT INTO `IESTable` "
1998 "( `Action`, `Condition`, `Sequence`) "
1999 "VALUES ( 'build', 'cond2', 2)");
2000 ok(
r ==
S_OK,
"cannot add entry to IESTable table:%d\n",
r );
2002 r =
run_query(hdb, 0,
"INSERT INTO `IESTable` "
2003 "( `Action`, `Condition`, `Sequence`) "
2004 "VALUES ( 'build2', 'cond6', 6)");
2005 ok(
r ==
S_OK,
"cannot add entry to IESTable table:%d\n",
r );
2007 r =
run_query(hdb, 0,
"INSERT INTO `IESTable` "
2008 "( `Action`, `Condition`, `Sequence`) "
2009 "VALUES ( 'build', 'cond3', 3)");
2010 ok(
r ==
S_OK,
"cannot add entry to IESTable table:%d\n",
r );
2012 r =
run_query(hdb, 0,
"INSERT INTO `CATable` "
2013 "( `Action`, `Type` ) "
2014 "VALUES ( 'build', 32)");
2015 ok(
r ==
S_OK,
"cannot add entry to CATable table:%d\n",
r );
2017 r =
run_query(hdb, 0,
"INSERT INTO `CATable` "
2018 "( `Action`, `Type` ) "
2019 "VALUES ( 'depends', 64)");
2020 ok(
r ==
S_OK,
"cannot add entry to CATable table:%d\n",
r );
2022 r =
run_query(hdb, 0,
"INSERT INTO `CATable` "
2023 "( `Action`, `Type` ) "
2024 "VALUES ( 'clean', 63)");
2025 ok(
r ==
S_OK,
"cannot add entry to CATable table:%d\n",
r );
2027 r =
run_query(hdb, 0,
"INSERT INTO `CATable` "
2028 "( `Action`, `Type` ) "
2029 "VALUES ( 'build2', 34)");
2030 ok(
r ==
S_OK,
"cannot add entry to CATable table:%d\n",
r );
2031 query =
"Select IESTable.Condition from CATable, IESTable where "
2032 "CATable.Action = IESTable.Action and CATable.Type = 32";
2064 ok( hdb,
"failed to create db\n");
2067 "CREATE TABLE `Media` ("
2068 "`DiskId` SHORT NOT NULL, "
2069 "`LastSequence` LONG, "
2070 "`DiskPrompt` CHAR(64) LOCALIZABLE, "
2071 "`Cabinet` CHAR(255), "
2072 "`VolumeLabel` CHAR(32), "
2073 "`Source` CHAR(72) "
2074 "PRIMARY KEY `DiskId`)" );
2075 ok(
r ==
S_OK,
"cannot create Media table: %d\n",
r );
2077 r =
run_query( hdb, 0,
"INSERT INTO `Media` "
2078 "( `DiskId`, `LastSequence`, `DiskPrompt`, `Cabinet`, `VolumeLabel`, `Source` ) "
2079 "VALUES ( 1, 0, '', 'zero.cab', '', '' )" );
2080 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r );
2082 r =
run_query( hdb, 0,
"INSERT INTO `Media` "
2083 "( `DiskId`, `LastSequence`, `DiskPrompt`, `Cabinet`, `VolumeLabel`, `Source` ) "
2084 "VALUES ( 2, 1, '', 'one.cab', '', '' )" );
2085 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r );
2087 r =
run_query( hdb, 0,
"INSERT INTO `Media` "
2088 "( `DiskId`, `LastSequence`, `DiskPrompt`, `Cabinet`, `VolumeLabel`, `Source` ) "
2089 "VALUES ( 3, 2, '', 'two.cab', '', '' )" );
2090 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r );
2092 query =
"SELECT * FROM `Media`";
2095 check_record(rec, 6,
"1",
"0",
"",
"zero.cab",
"",
"");
2098 query =
"SELECT * FROM `Media` WHERE `LastSequence` >= 1";
2104 query =
"SELECT `DiskId` FROM `Media` WHERE `LastSequence` >= 1 AND DiskId >= 0";
2130 query =
"SELECT * FROM `Media` WHERE `DiskPrompt` IS NULL";
2136 query =
"SELECT * FROM `Media` WHERE `DiskPrompt` < 'Cabinet'";
2142 query =
"SELECT * FROM `Media` WHERE `DiskPrompt` > 'Cabinet'";
2148 query =
"SELECT * FROM `Media` WHERE `DiskPrompt` <> 'Cabinet'";
2154 query =
"SELECT * FROM `Media` WHERE `DiskPrompt` = 'Cabinet'";
2162 query =
"SELECT * FROM `Media` WHERE `DiskPrompt` = ?";
2183static const CHAR test_data[] =
"FirstPrimaryColumn\tSecondPrimaryColumn\tShortInt\tShortIntNullable\tLongInt\tLongIntNullable\tString\tLocalizableString\tLocalizableStringNullable\n"
2184 "s255\ti2\ti2\tI2\ti4\tI4\tS255\tS0\ts0\n"
2185 "TestTable\tFirstPrimaryColumn\n"
2186 "stringage\t5\t2\t\t2147483640\t-2147483640\tanother string\tlocalizable\tduh\n";
2190 "TwoPrimary\tPrimaryOne\tPrimaryTwo\n"
2195 "s72\ts72\ts72\ts72\ts72\ts72\n"
2197 "a\tb\tc\td\te\tf\n"
2198 "g\th\ti\t\rj\tk\tl\r\n";
2201 "s72\ts72\ts72\ts72\ts72\ts72\n"
2203 "a\tb\tc\td\te\tf\n"
2204 "g\th\ti\tj\tk\tl\r\n";
2208 "_SummaryInformation\tPropertyId\n"
2210 "2\tInstaller Database\n"
2211 "3\tInstaller description\n"
2214 "6\tInstaller comments\n"
2215 "7\tIntel;1033,2057\n"
2216 "9\t{12345678-1234-1234-1234-123456789012}\n"
2217 "12\t2009/04/12 15:46:11\n"
2218 "13\t2009/04/12 15:46:11\n"
2265 query =
"SELECT * FROM `_SummaryInformation`";
2282 ok(int_value == 1252,
"Expected 1252, got %d\n", int_value);
2284 size =
sizeof(str_value);
2288 ok(
size == 18,
"Expected 18, got %lu\n",
size);
2289 ok(!
strcmp(str_value,
"Installer Database"),
2290 "Expected \"Installer Database\", got %s\n", str_value);
2292 size =
sizeof(str_value);
2296 ok(!
strcmp(str_value,
"Installer description"),
2297 "Expected \"Installer description\", got %s\n", str_value);
2299 size =
sizeof(str_value);
2304 "Expected \"WineHQ\", got %s\n", str_value);
2306 size =
sizeof(str_value);
2310 ok(!
strcmp(str_value,
"Installer"),
2311 "Expected \"Installer\", got %s\n", str_value);
2313 size =
sizeof(str_value);
2317 ok(!
strcmp(str_value,
"Installer comments"),
2318 "Expected \"Installer comments\", got %s\n", str_value);
2320 size =
sizeof(str_value);
2324 ok(!
strcmp(str_value,
"Intel;1033,2057"),
2325 "Expected \"Intel;1033,2057\", got %s\n", str_value);
2327 size =
sizeof(str_value);
2331 ok(!
strcmp(str_value,
"{12345678-1234-1234-1234-123456789012}"),
2332 "Expected \"{12345678-1234-1234-1234-123456789012}\", got %s\n", str_value);
2345 ok(int_value == 200,
"Expected 200, got %d\n", int_value);
2350 ok(int_value == 2,
"Expected 2, got %d\n", int_value);
2355 ok(int_value == 2,
"Expected 2, got %d\n", int_value);
2357 size =
sizeof(str_value);
2361 ok(!
strcmp(str_value,
"Vim"),
"Expected \"Vim\", got %s\n", str_value);
2397 query =
"SELECT * FROM `TestTable`";
2403 check_record(rec, 9,
"FirstPrimaryColumn",
"SecondPrimaryColumn",
"ShortInt",
2404 "ShortIntNullable",
"LongInt",
"LongIntNullable",
"String",
2405 "LocalizableString",
"LocalizableStringNullable");
2410 check_record(rec, 9,
"s255",
"i2",
"i2",
"I2",
"i4",
"I4",
"S255",
"S0",
"s0");
2413 query =
"SELECT * FROM `TestTable`";
2416 check_record(rec, 9,
"stringage",
"5",
"2",
"",
"2147483640",
"-2147483640",
2417 "another string",
"localizable",
"duh");
2423 query =
"SELECT * FROM `TwoPrimary`";
2452 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
2459 query =
"SELECT * FROM `Table`";
2470 check_record(rec, 6,
"s72",
"s72",
"s72",
"s72",
"s72",
"s72");
2476 query =
"SELECT * FROM `Table`";
2495 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
2506 "filename1\tfilename1.ibd\r\n";
2533 query =
"SELECT * FROM `Binary`";
2546 ok(!
lstrcmpA(
buf,
"just some words"),
"Expected 'just some words', got %s\n",
buf);
2566 ok( hdb,
"failed to create db\n");
2574 query =
"CREATE TABLE `Table` ( `One` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
2582 query =
"CREATE TABLE `?` ( `One` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
2595 query =
"CREATE TABLE ? ( `One` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
2601 query =
"CREATE TABLE `Mable` ( `?` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
2610 query =
"CREATE TABLE `Mable` ( `?` SHORT NOT NULL, `?` CHAR(255) PRIMARY KEY `One`)";
2620 query =
"CREATE TABLE `Mable` ( `?` SHORT NOT NULL, `?` CHAR(255) PRIMARY KEY `?`)";
2625 query =
"CREATE TABLE `Mable` ( `?`, `?` PRIMARY KEY `?`)";
2630 query =
"CREATE TABLE `Mable` ( ? SHORT NOT NULL, ? CHAR(255) PRIMARY KEY ?)";
2638 query =
"CREATE TABLE `Mable` ( ? )";
2649 query =
"CREATE TABLE `?` ( `?` SHORT NOT NULL, `?` CHAR(255) PRIMARY KEY `?`)";
2655 query =
"INSERT INTO `Table` ( `One`, `Two` ) VALUES ( 5, 'hello' )";
2666 query =
"INSERT INTO `Table` ( `One`, `Two` ) VALUES ( ?, '?' )";
2677 query =
"INSERT INTO `Table` ( `?`, `?` ) VALUES ( ?, '?' )";
2686 query =
"INSERT INTO `Table` ( `?`, `?` ) VALUES ( 3, 'yellow' )";
2694 query =
"INSERT INTO `?` ( `One`, `Two` ) VALUES ( 2, 'green' )";
2704 query =
"INSERT INTO `?` ( `One`, `Two` ) VALUES ( ?, '?' )";
2716 query =
"INSERT INTO `?` ( `?`, `?` ) VALUES ( ?, '?' )";
2725 query =
"INSERT INTO `Table` ( `One`, `Two` ) VALUES ( ?, '?' )";
2734 query =
"INSERT INTO `Table` ( `One`, `Two` ) VALUES ( ?, ? )";
2743#define MY_NVIEWS 4000
2753 ok( hdb,
"failed to create db\n");
2755 memset(hviews, 0,
sizeof(hviews));
2758 static char szQueryBuf[256] =
"SELECT * from `_Tables`";
2759 hviews[
i] = 0xdeadbeeb;
2762 hviews[
i] == 0 || (
i && (hviews[
i] == hviews[
i-1])))
2769 if (hviews[
i] != 0 && hviews[
i] != 0xdeadbeeb) {
2807 query =
"CREATE TABLE `AAR` ( `BAR` SHORT NOT NULL, `CAR` CHAR(255) PRIMARY KEY `CAR`)";
2811 query =
"INSERT INTO `AAR` ( `BAR`, `CAR` ) VALUES ( 1, 'vw' )";
2815 query =
"INSERT INTO `AAR` ( `BAR`, `CAR` ) VALUES ( 2, 'bmw' )";
2819 query =
"UPDATE `MOO` SET `OOO` = 'c' WHERE `NOO` = 1";
2823 query =
"DELETE FROM `MOO` WHERE `NOO` = 3";
2835 query =
"INSERT INTO `BINARY` ( `ID`, `BLOB` ) VALUES ( ?, ? )";
2841 query =
"ALTER TABLE `MOO` ADD `COW` INTEGER";
2845 query =
"ALTER TABLE `MOO` ADD `PIG` INTEGER";
2849 query =
"UPDATE `MOO` SET `PIG` = 5 WHERE `NOO` = 1";
2853 query =
"CREATE TABLE `Property` ( `Property` CHAR(72) NOT NULL, "
2854 "`Value` CHAR(0) PRIMARY KEY `Property`)";
2858 query =
"INSERT INTO `Property` ( `Property`, `Value` ) VALUES ( 'prop', 'val' )";
2878static const WCHAR name2[] = { 0x4840, 0x3b3f, 0x43f2, 0x4438, 0x45b1, 0 };
2879static const WCHAR name3[] = { 0x4840, 0x3f7f, 0x4164, 0x422f, 0x4836, 0 };
2880static const WCHAR name4[] = { 0x4840, 0x3f3f, 0x4577, 0x446c, 0x3b6a, 0x45e4, 0x4824, 0 };
2881static const WCHAR name5[] = { 0x4840, 0x3f3f, 0x4577, 0x446c, 0x3e6a, 0x44b2, 0x482f, 0 };
2883static const WCHAR name7[] = { 0x4840, 0x3c8b, 0x3a97, 0x409b, 0 };
2884static const WCHAR name8[] = { 0x3c8b, 0x3a97, 0x409b, 0x387e, 0 };
2885static const WCHAR name9[] = { 0x4840, 0x4559, 0x44f2, 0x4568, 0x4737, 0 };
2889 0x0201, 0x0008, 0x8001,
2890 0x0201, 0x0009, 0x8002,
2893 0x0401, 0x0001, 0x8003, 0x0002, 0x9502,
2894 0x0401, 0x0001, 0x8004, 0x0003, 0x9502,
2895 0x0401, 0x0005, 0x0000, 0x0006, 0xbdff,
2896 0x0401, 0x0005, 0x0000, 0x0007, 0x8502,
2897 0x0401, 0x000a, 0x0000, 0x000a, 0xad48,
2898 0x0401, 0x000a, 0x0000, 0x000b, 0x9d00,
2905 "MOOCOWPIGcAARCARBARvwbmwPropertyValuepropval";
2925 0x000a, 0x8001, 0x0004, 0x8005,
2930 0x0201, 0x8001, 0x0001,
2937 0x0201, 0x000c, 0x000d,
2940static const struct {
2966 const CLSID CLSID_MsiTransform = { 0xc1082,0,0,{0xc0,0,0,0,0,0,0,0x46}};
2971 ok(
r ==
S_OK,
"failed to create storage\n");
2975 r = IStorage_SetClass( stg, &CLSID_MsiTransform );
2976 ok(
r ==
S_OK,
"failed to set storage type\n");
2984 ok(0,
"failed to create stream %#lx\n",
r);
2991 ok(0,
"failed to write stream\n");
2992 IStream_Release(stm);
2995 IStorage_Release(stg);
3008 "Installation Database");
3012 "Installation Database");
3024 "{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}");
3072 sprintf(szPackage,
"#%lu", hdb);
3090 static const struct {
3097 {
"MOO",
"OOO",
"1",
"c",
"a" },
3098 {
"MOO",
"COW",
"",
"5378",
"3" },
3099 {
"MOO",
"PIG",
"",
"5378",
"4" },
3100 {
"MOO",
"PIG",
"1",
"5",
"" },
3101 {
"MOO",
"DELETE",
"3",
"",
"" },
3102 {
"BINARY",
"BLOB",
"1",
"BINARY.1",
"" },
3103 {
"BINARY",
"INSERT",
"1",
"",
"" },
3104 {
"AAR",
"CREATE",
"",
"",
"" },
3105 {
"AAR",
"CAR",
"",
"15871",
"1" },
3106 {
"AAR",
"BAR",
"",
"1282",
"2" },
3107 {
"AAR",
"BAR",
"vw",
"1",
"" },
3108 {
"AAR",
"BAR",
"bmw",
"2",
"" },
3109 {
"AAR",
"INSERT",
"vw",
"",
"" },
3110 {
"AAR",
"INSERT",
"bmw",
"",
"" },
3111 {
"Property",
"CREATE",
"",
"",
"" },
3112 {
"Property",
"Property",
"",
"11592",
"1" },
3113 {
"Property",
"Value",
"",
"7424",
"2" },
3114 {
"Property",
"Value",
"prop",
"val",
"" },
3115 {
"Property",
"INSERT",
"prop",
"",
"" }
3130 ok(hdb,
"Failed to create package db\n");
3132 query =
"CREATE TABLE `MOO` ( `NOO` SHORT NOT NULL, `OOO` CHAR(255) PRIMARY KEY `NOO`)";
3136 query =
"INSERT INTO `MOO` ( `NOO`, `OOO` ) VALUES ( 1, 'a' )";
3140 query =
"INSERT INTO `MOO` ( `NOO`, `OOO` ) VALUES ( 2, 'b' )";
3144 query =
"INSERT INTO `MOO` ( `NOO`, `OOO` ) VALUES ( 3, 'c' )";
3148 query =
"CREATE TABLE `BINARY` ( `ID` SHORT NOT NULL, `BLOB` OBJECT PRIMARY KEY `ID`)";
3160 query =
"INSERT INTO `BINARY` ( `ID`, `BLOB` ) VALUES ( ?, ? )";
3188 query =
"select * from `_TransformView`";
3196 check_record(hrec, 5,
"Table",
"Column",
"Row",
"Data",
"Current");
3209 for (
i = 1;
i <= 5;
i++) {
3238 query =
"ALTER TABLE `_TransformView` FREE";
3252 query =
"select `BAR`,`CAR` from `AAR` where `BAR` = 1 AND `CAR` = 'vw'";
3257 query =
"select `BAR`,`CAR` from `AAR` where `BAR` = 2 AND `CAR` = 'bmw'";
3265 query =
"select `NOO`,`OOO` from `MOO` where `NOO` = 1 AND `OOO` = 'c'";
3272 query =
"select `NOO`,`OOO` from `MOO` where `NOO` = 2 AND `OOO` = 'b'";
3279 query =
"select * from `MOO` where `NOO` = 3";
3286 query =
"select `BLOB` from `BINARY` where `ID` = 1";
3295 ok(sz == 9,
"stream data was wrong size\n");
3300 query =
"select * from `MOO`";
3328 skip(
"Not enough rights to perform tests\n");
3348 {
"alveolar",
"procerus" },
3349 {
"septum",
"procerus" },
3350 {
"septum",
"nasalis" },
3351 {
"ramus",
"nasalis" },
3352 {
"malar",
"mentalis" },
3357 {
"nasal",
"septum" },
3358 {
"mandible",
"ramus" },
3363 {
"msvcp.dll",
"abcdefgh" },
3364 {
"msvcr.dll",
"ijklmnop" },
3369 {
"msvcp.dll.01234",
"single.dll.31415" },
3374 {
"malar",
"procerus" },
3379 {
"malar",
"procerus" },
3380 {
"malar",
"procerus" },
3381 {
"malar",
"nasalis" },
3382 {
"malar",
"nasalis" },
3383 {
"malar",
"nasalis" },
3384 {
"malar",
"mentalis" },
3389 {
"malar",
"nasalis" },
3390 {
"malar",
"nasalis" },
3391 {
"malar",
"nasalis" },
3396 {
"msvcp.dll",
"msvcp.dll.01234",
"msvcp.dll.01234",
"abcdefgh" },
3397 {
"msvcr.dll",
"msvcr.dll.56789",
"msvcp.dll.01234",
"abcdefgh" },
3398 {
"msvcp.dll",
"msvcp.dll.01234",
"msvcr.dll.56789",
"ijklmnop" },
3399 {
"msvcr.dll",
"msvcr.dll.56789",
"msvcr.dll.56789",
"ijklmnop" },
3400 {
"msvcp.dll",
"msvcp.dll.01234",
"single.dll.31415",
"msvcp.dll" },
3401 {
"msvcr.dll",
"msvcr.dll.56789",
"single.dll.31415",
"msvcp.dll" },
3406 {
"1",
"2",
"3",
"4",
"7",
"8" },
3407 {
"1",
"2",
"5",
"6",
"7",
"8" },
3408 {
"1",
"2",
"3",
"4",
"9",
"10" },
3409 {
"1",
"2",
"5",
"6",
"9",
"10" },
3410 {
"1",
"2",
"3",
"4",
"11",
"12" },
3411 {
"1",
"2",
"5",
"6",
"11",
"12" },
3422 ok( hdb,
"failed to create db\n");
3447 query =
"CREATE TABLE `One` (`A` SHORT, `B` SHORT PRIMARY KEY `A`)";
3451 query =
"CREATE TABLE `Two` (`C` SHORT, `D` SHORT PRIMARY KEY `C`)";
3455 query =
"CREATE TABLE `Three` (`E` SHORT, `F` SHORT PRIMARY KEY `E`)";
3459 query =
"INSERT INTO `One` (`A`, `B`) VALUES (1, 2)";
3463 query =
"INSERT INTO `Two` (`C`, `D`) VALUES (3, 4)";
3467 query =
"INSERT INTO `Two` (`C`, `D`) VALUES (5, 6)";
3471 query =
"INSERT INTO `Three` (`E`, `F`) VALUES (7, 8)";
3475 query =
"INSERT INTO `Three` (`E`, `F`) VALUES (9, 10)";
3479 query =
"INSERT INTO `Three` (`E`, `F`) VALUES (11, 12)";
3483 query =
"CREATE TABLE `Four` (`G` SHORT, `H` SHORT PRIMARY KEY `G`)";
3487 query =
"CREATE TABLE `Five` (`I` SHORT, `J` SHORT PRIMARY KEY `I`)";
3491 query =
"INSERT INTO `Five` (`I`, `J`) VALUES (13, 14)";
3495 query =
"INSERT INTO `Five` (`I`, `J`) VALUES (15, 16)";
3499 query =
"SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
3500 "FROM `Component`, `FeatureComponents` "
3501 "WHERE `Component`.`Component` = `FeatureComponents`.`Component_` "
3502 "ORDER BY `Feature_`";
3516 ok(
i == 5,
"Expected 5 rows, got %lu\n",
i );
3523 query =
"SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
3524 "FROM `Component`, `FeatureComponents` ";
3537 ok(
i == 24,
"Expected 24 rows, got %lu\n",
i );
3542 query =
"SELECT DISTINCT Component, ComponentId FROM FeatureComponents, Component "
3543 "WHERE FeatureComponents.Component_=Component.Component "
3544 "AND (Feature_='nasalis') ORDER BY Feature_";
3559 ok(
i == 2,
"Expected 2 rows, got %lu\n",
i );
3565 query =
"SELECT `StdDlls`.`File`, `Binary`.`Data` "
3566 "FROM `StdDlls`, `Binary` "
3567 "WHERE `StdDlls`.`Binary_` = `Binary`.`Name` "
3582 ok(
i == 2,
"Expected 2 rows, got %lu\n",
i );
3588 query =
"SELECT `StdDlls`.`Binary_`, `Binary`.`Name` "
3589 "FROM `StdDlls`, `Binary` "
3590 "WHERE `StdDlls`.`File` = `Binary`.`Data` "
3605 ok(
i == 1,
"Expected 1 rows, got %lu\n",
i );
3611 query =
"SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
3612 "FROM `Component`, `FeatureComponents` "
3613 "WHERE `Component`.`Component` = 'zygomatic' "
3614 "AND `FeatureComponents`.`Component_` = 'maxilla' "
3615 "ORDER BY `Feature_`";
3629 ok(
i == 1,
"Expected 1 rows, got %lu\n",
i );
3635 query =
"SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
3636 "FROM `Component`, `FeatureComponents` "
3637 "WHERE `Component` = 'zygomatic' "
3638 "ORDER BY `Feature_`";
3652 ok(
i == 6,
"Expected 6 rows, got %lu\n",
i );
3658 query =
"SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
3659 "FROM `Component`, `FeatureComponents` "
3660 "WHERE `Component` = 'zygomatic' "
3661 "AND `Feature_` = 'nasalis' "
3662 "ORDER BY `Feature_`";
3676 ok(
i == 3,
"Expected 3 rows, got %lu\n",
i );
3682 query =
"SELECT `StdDlls`.`File`, `Binary`.`Data` "
3683 "FROM `StdDlls`, `Binary` ";
3697 ok(
i == 6,
"Expected 6 rows, got %lu\n",
i );
3703 query =
"SELECT * FROM `StdDlls`, `Binary` ";
3718 ok(
i == 6,
"Expected 6 rows, got %lu\n",
i );
3724 query =
"SELECT * FROM `One`, `Two`, `Three` ";
3740 ok(
i == 6,
"Expected 6 rows, got %lu\n",
i );
3746 query =
"SELECT * FROM `Four`, `Five`";
3759 query =
"SELECT * FROM `Nonexistent`, `One`";
3762 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r );
3765 query =
"SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
3766 "FROM `Component`, `FeatureComponents` "
3767 "WHERE `Component`.`Component` = `FeatureComponents`.`Component_` "
3768 "ORDER BY `Feature_`";
3869 ok( hdb,
"failed to create db\n");
3886 query =
"CREATE TABLE `P` ( `B` SHORT NOT NULL, `C` CHAR(255) PRIMARY KEY `C`)";
3893 query =
"CREATE TABLE `P2` ( `B` SHORT NOT NULL, `C` CHAR(255) PRIMARY KEY `C`) HOLD";
3900 query =
"CREATE TABLE `T` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`) HOLD";
3907 query =
"CREATE TABLE `T2` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`)";
3911 query =
"SELECT * FROM `T2`";
3914 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
3919 query =
"CREATE TABLE `T3` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) PRIMARY KEY `C`)";
3926 query =
"CREATE TABLE `T4` ( `B` SHORT NOT NULL, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`)";
3933 query =
"CREATE TABLE `T5` ( `B` SHORT NOT NULL TEMP, `C` CHAR(255) TEMP PRIMARY KEY `C`) HOLD";
3937 query =
"select * from `T`";
3950 r =
do_query(hdb,
"select * from `_Tables` where `Name` = 'T'", &rec);
3956 r =
do_query(hdb,
"select * from `_Columns` where `Table` = 'T' AND `Name` = 'B'", &rec);
3960 r =
do_query(hdb,
"select * from `_Columns` where `Table` = 'T' AND `Name` = 'C'", &rec);
3976 ok( hdb,
"failed to create db\n");
3978 query =
"CREATE TABLE `T` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`)";
3982 query =
"SELECT * FROM `T`";
3986 query =
"CREATE TABLE `T` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`) HOLD";
3990 query =
"SELECT * FROM `T`";
3997 query =
"ALTER TABLE `T` HOLD";
4001 query =
"ALTER TABLE `T` FREE";
4005 query =
"ALTER TABLE `T` FREE";
4009 query =
"ALTER TABLE `T` FREE";
4013 query =
"ALTER TABLE `T` HOLD";
4018 query =
"SELECT * FROM `T`";
4023 query =
"CREATE TABLE `U` ( `A` INTEGER, `B` INTEGER PRIMARY KEY `B`)";
4028 query =
"ALTER TABLE `U` HOLD";
4033 query =
"ALTER TABLE `U` ADD `C`";
4037 query =
"ALTER TABLE `U` ADD `C` INTEGER";
4041 query =
"SELECT * FROM `_Columns` WHERE `Table` = 'U' AND `Name` = 'C'";
4046 query =
"ALTER TABLE `U` ADD `C` INTEGER";
4050 query =
"ALTER TABLE `U` ADD `D` INTEGER TEMPORARY";
4054 query =
"INSERT INTO `U` ( `A`, `B`, `C`, `D` ) VALUES ( 1, 2, 3, 4 )";
4058 query =
"ALTER TABLE `U` ADD `D` INTEGER TEMPORARY HOLD";
4062 query =
"SELECT * FROM `_Columns` WHERE `Table` = 'U' AND `Name` = 'D'";
4066 query =
"INSERT INTO `U` ( `A`, `B`, `C`, `D` ) VALUES ( 5, 6, 7, 8 )";
4070 query =
"SELECT * FROM `U` WHERE `D` = 8";
4074 query =
"ALTER TABLE `U` ADD `D` INTEGER TEMPORARY FREE";
4078 query =
"ALTER COLUMN `D` FREE";
4083 query =
"ALTER TABLE `U` FREE";
4088 query =
"SELECT * FROM `U`";
4093 query =
"SELECT * FROM `U` WHERE `D` = 8";
4097 query =
"INSERT INTO `U` ( `A`, `B`, `C`, `D` ) VALUES ( 9, 10, 11, 12 )";
4102 query =
"ALTER TABLE `U` ADD `E` INTEGER TEMPORARY HOLD";
4107 query =
"ALTER TABLE `U` HOLD";
4111 query =
"INSERT INTO `U` ( `A`, `B`, `C`, `E` ) VALUES ( 13, 14, 15, 16 )";
4115 query =
"SELECT * FROM `U` WHERE `E` = 16";
4120 query =
"ALTER TABLE `U` FREE";
4124 query =
"INSERT INTO `U` ( `A`, `B`, `C`, `E` ) VALUES ( 17, 18, 19, 20 )";
4128 query =
"SELECT * FROM `U` WHERE `E` = 20";
4133 query =
"ALTER TABLE `U` FREE";
4138 query =
"SELECT * FROM `U`";
4143 query =
"SELECT * FROM `U` WHERE `E` = 20";
4147 query =
"INSERT INTO `U` ( `A`, `B`, `C`, `E` ) VALUES ( 20, 21, 22, 23 )";
4152 query =
"ALTER TABLE `U` FREE";
4157 query =
"SELECT * FROM `U`";
4177 query =
"CREATE TABLE `integers` ( "
4178 "`one` SHORT, `two` INT, `three` INTEGER, `four` LONG, "
4179 "`five` SHORT NOT NULL, `six` INT NOT NULL, "
4180 "`seven` INTEGER NOT NULL, `eight` LONG NOT NULL "
4181 "PRIMARY KEY `one`)";
4191 query =
"SELECT * FROM `integers`";
4197 check_record(rec, 8,
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight");
4202 check_record(rec, 8,
"I2",
"I2",
"I2",
"I4",
"i2",
"i2",
"i2",
"i4");
4209 query =
"INSERT INTO `integers` ( `one`, `two`, `three`, `four`, `five`, `six`, `seven`, `eight` )"
4210 "VALUES('', '', '', '', '', '', '', '')";
4219 query =
"SELECT * FROM `integers`";
4224 ok(
r == -1,
"record count wrong: %d\n",
r);
4229 query =
"INSERT INTO `integers` ( `one`, `two`, `three`, `four`, `five`, `six`, `seven`, `eight` )"
4230 "VALUES('', '2', '', '4', '5', '6', '7', '8')";
4236 query =
"SELECT * FROM `integers`";
4241 ok(
r == 8,
"record count wrong: %d\n",
r);
4248 ok(
i == 2,
"Expected 2, got %lu\n",
i);
4250 ok(
i == 4,
"Expected 4, got %lu\n",
i);
4252 ok(
i == 5,
"Expected 5, got %lu\n",
i);
4254 ok(
i == 6,
"Expected 6, got %lu\n",
i);
4256 ok(
i == 7,
"Expected 7, got %lu\n",
i);
4258 ok(
i == 8,
"Expected 8, got %lu\n",
i);
4271 ok(
r ==
TRUE,
"file didn't exist after commit\n");
4285 query =
"CREATE TABLE `Control` ( "
4286 "`Dialog_` CHAR(72) NOT NULL, `Control` CHAR(50) NOT NULL, `Type` SHORT NOT NULL, "
4287 "`X` SHORT NOT NULL, `Y` SHORT NOT NULL, `Width` SHORT NOT NULL, `Height` SHORT NOT NULL,"
4288 "`Attributes` LONG, `Property` CHAR(50), `Text` CHAR(0) LOCALIZABLE, "
4289 "`Control_Next` CHAR(50), `Help` CHAR(50) LOCALIZABLE PRIMARY KEY `Dialog_`, `Control`)";
4300 query =
"INSERT INTO `Control` ( "
4301 "`Dialog_`, `Control`, `Type`, `X`, `Y`, `Width`, `Height`, "
4302 "`Property`, `Text`, `Control_Next`, `Help` )"
4303 "VALUES('ErrorDialog', 'ErrorText', '1', '5', '5', '5', '5', '', '', '', '')";
4314 query =
"INSERT INTO `Control` ( "
4315 "`Dialog_`, `Control`, `Type`, `X`, `Y`, `Width`, `Height`, "
4316 "`Property`, `Text`, `Control_Next`, `Help` )"
4317 "VALUES('ErrorDialog', 'Button', '1', '5', '5', '5', '5', '', '', '', '')";
4328 query =
"INSERT INTO `Control` ( "
4329 "`Dialog_`, `Control`, `Type`, `X`, `Y`, `Width`, `Height`, "
4330 "`Property`, `Text`, `Control_Next`, `Help` )"
4331 "VALUES('AnotherDialog', 'ErrorText', '1', '5', '5', '5', '5', '', '', '', '')";
4342 query =
"UPDATE `NotATable` SET `Text` = 'this is text' WHERE `Dialog_` = 'ErrorDialog'";
4347 query =
"UPDATE `Control` SET `NotAColumn` = 'this is text' WHERE `Dialog_` = 'ErrorDialog'";
4352 query =
"UPDATE `Control` SET `Text` = 'this is text' WHERE `NotAColumn` = 'ErrorDialog'";
4357 query =
"UPDATE `Control` SET `Text` = 'this is text' WHERE `Dialog_` = 'ErrorDialog'";
4368 query =
"SELECT `Text` FROM `Control` WHERE `Control` = 'ErrorText'";
4393 query =
"UPDATE `Control` SET `Text` = 'this is text' WHERE `Dialog_` = 'ErrorDialog' AND `Control` = 'ErrorText'";
4404 query =
"SELECT `Text` FROM `Control` WHERE `Control` = 'ErrorText'";
4429 query =
"UPDATE `Control` SET `Text` = 'this is text'";
4440 query =
"SELECT `Text` FROM `Control`";
4469 query =
"CREATE TABLE `Apple` ( `Banana` CHAR(72) NOT NULL, "
4470 "`Orange` CHAR(72), `Pear` INT PRIMARY KEY `Banana`)";
4474 query =
"INSERT INTO `Apple` ( `Banana`, `Orange`, `Pear` )"
4475 "VALUES('one', 'two', 3)";
4479 query =
"INSERT INTO `Apple` ( `Banana`, `Orange`, `Pear` )"
4480 "VALUES('three', 'four', 5)";
4484 query =
"INSERT INTO `Apple` ( `Banana`, `Orange`, `Pear` )"
4485 "VALUES('six', 'two', 7)";
4493 query =
"UPDATE `Apple` SET `Pear` = ? WHERE `Orange` = ?";
4499 query =
"SELECT `Pear` FROM `Apple` ORDER BY `Orange`";
4509 ok(
r == 8,
"Expected 8, got %d\n",
r);
4517 ok(
r == 8,
"Expected 8, got %d\n",
r);
4525 ok(
r == 5,
"Expected 5, got %d\n",
r);
4552 query =
"CREATE TABLE `_Properties` ( "
4553 "`foo` INT NOT NULL, `bar` INT LOCALIZABLE PRIMARY KEY `foo`)";
4557 query =
"CREATE TABLE `_Storages` ( "
4558 "`foo` INT NOT NULL, `bar` INT LOCALIZABLE PRIMARY KEY `foo`)";
4562 query =
"CREATE TABLE `_Streams` ( "
4563 "`foo` INT NOT NULL, `bar` INT LOCALIZABLE PRIMARY KEY `foo`)";
4567 query =
"CREATE TABLE `_Tables` ( "
4568 "`foo` INT NOT NULL, `bar` INT LOCALIZABLE PRIMARY KEY `foo`)";
4572 query =
"CREATE TABLE `_Columns` ( "
4573 "`foo` INT NOT NULL, `bar` INT LOCALIZABLE PRIMARY KEY `foo`)";
4590 query =
"CREATE TABLE `foo` ( "
4591 "`baz` INT NOT NULL PRIMARY KEY `baz`)";
4595 query =
"CREATE TABLE `bar` ( "
4596 "`foo` INT NOT NULL PRIMARY KEY `foo`)";
4600 query =
"CREATE TABLE `baz` ( "
4601 "`bar` INT NOT NULL, "
4602 "`baz` INT NOT NULL, "
4603 "`foo` INT NOT NULL PRIMARY KEY `bar`)";
4610 query =
"SELECT `Name` FROM `_Tables`";
4642 query =
"SELECT `Table`, `Number`, `Name` FROM `_Columns`";
4698 query =
"CREATE TABLE `foo` ( "
4699 "`bar` LONGCHAR NOT NULL PRIMARY KEY `bar`)";
4704 "( `bar` ) VALUES ( 'A' )");
4708 "( `bar` ) VALUES ( 'B' )");
4712 "( `bar` ) VALUES ( 'C' )");
4716 "( `bar` ) VALUES ( 'D' )");
4720 "( `bar` ) VALUES ( 'E' )");
4724 "( `bar` ) VALUES ( 'F' )");
4727 query =
"CREATE TABLE `bar` ( "
4728 "`foo` LONGCHAR NOT NULL, "
4729 "`baz` LONGCHAR NOT NULL "
4730 "PRIMARY KEY `foo` )";
4735 "( `foo`, `baz` ) VALUES ( 'C', 'E' )");
4739 "( `foo`, `baz` ) VALUES ( 'F', 'A' )");
4743 "( `foo`, `baz` ) VALUES ( 'A', 'B' )");
4747 "( `foo`, `baz` ) VALUES ( 'D', 'E' )");
4754 query =
"SELECT * FROM `bar`";
4807 query =
"CREATE TABLE `bar` ( "
4808 "`foo` LONGCHAR NOT NULL, "
4809 "`baz` LONGCHAR NOT NULL "
4810 "PRIMARY KEY `foo` )";
4818 "( `foo`, `baz` ) VALUES ( '\2', 'A' )");
4822 "( `foo`, `baz` ) VALUES ( '\1', 'B' )");
4825 r =
run_queryW(hdb, 0,
L"INSERT INTO `bar` (`foo`,`baz`) VALUES ('a\x30a','C')");
4828 r =
run_queryW(hdb, 0,
L"INSERT INTO `bar` (`foo`,`baz`) VALUES ('\xe5','D')");
4831 r =
run_queryW(hdb, 0,
L"CREATE TABLE `baz` ( `a\x30a` LONGCHAR NOT NULL, `\xe5` LONGCHAR NOT NULL PRIMARY KEY `a\x30a`)");
4834 r =
run_queryW(hdb, 0,
L"CREATE TABLE `a\x30a` ( `foo` LONGCHAR NOT NULL PRIMARY KEY `foo`)");
4837 r =
run_queryW(hdb, 0,
L"CREATE TABLE `\xe5` ( `foo` LONGCHAR NOT NULL PRIMARY KEY `foo`)");
4840 query =
"SELECT * FROM `bar`";
4875 ok(!
memcmp(bufferW,
L"a\x30a",
sizeof(
L"a\x30a")),
4888 ok(!
memcmp(bufferW,
L"\xe5",
sizeof(
L"\xe5")),
4911 ok(!
memcmp(bufferW,
L"\xe5",
sizeof(
L"\xe5")),
4940 ok( hdb,
"failed to create db\n");
4943 "CREATE TABLE `Table` (`One` CHAR(72), `Two` CHAR(72), `Three` SHORT PRIMARY KEY `One`, `Two`, `Three`)");
4944 ok(
r ==
S_OK,
"cannot create table: %d\n",
r);
4947 "( `One`, `Two`, `Three` ) VALUES ( 'apple', 'one', 1 )");
4948 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r);
4951 "( `One`, `Two`, `Three` ) VALUES ( 'apple', 'two', 1 )");
4952 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r);
4955 "( `One`, `Two`, `Three` ) VALUES ( 'apple', 'two', 2 )");
4956 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r);
4959 "( `One`, `Two`, `Three` ) VALUES ( 'banana', 'three', 3 )");
4960 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r);
4966 query =
"SELECT * FROM `Table` WHERE `One`=? AND `Two`=? ORDER BY `Three`";
4994 query =
"SELECT * FROM `Table` WHERE `Two`<>? AND `Three`>? ORDER BY `Three`";
5032 query =
"CREATE TABLE `table` (`A` INT, `B` INT PRIMARY KEY `A`)";
5036 query =
"INSERT INTO `table` (`A`, `B`) VALUES (1, 2)";
5040 query =
"INSERT INTO `table` (`A`, `B`) VALUES (3, 4)";
5044 query =
"INSERT INTO `table` (`A`, `B`) VALUES (5, 6)";
5048 query =
"SELECT `B` FROM `table`";
5070 query =
"SELECT * FROM `table`";
5079 ok(
r == 1,
"Expected 1, got %d\n",
r);
5081 ok(
r == 0,
"Expected 0, got %d\n",
r);
5090 ok(
r == 3,
"Expected 3, got %d\n",
r);
5092 ok(
r == 4,
"Expected 4, got %d\n",
r);
5101 ok(
r == 5,
"Expected 5, got %d\n",
r);
5103 ok(
r == 6,
"Expected 6, got %d\n",
r);
5117 query =
"SELECT `B` FROM `table`";
5144 query =
"SELECT * FROM `table`";
5153 ok(
r == 1,
"Expected 1, got %d\n",
r);
5155 ok(
r == 0,
"Expected 0, got %d\n",
r);
5164 ok(
r == 3,
"Expected 3, got %d\n",
r);
5166 ok(
r == 0,
"Expected 0, got %d\n",
r);
5175 ok(
r == 5,
"Expected 5, got %d\n",
r);
5177 ok(
r == 0,
"Expected 0, got %d\n",
r);
5190 query =
"CREATE TABLE `table2` (`A` INT, `B` INT PRIMARY KEY `A`)";
5194 query =
"INSERT INTO `table2` (`A`, `B`) VALUES (?, ?)";
5200 for(
i = 0;
i < test_max;
i++)
5220 query =
"SELECT * FROM `table2` ORDER BY `B`";
5249 query =
"SELECT * FROM `table2` ORDER BY `B`";
5260 ok( ( test_max -
a +
offset) ==
b,
"Got (%d, %d), expected (%d, %d)\n",
5290 query =
"CREATE TABLE `table` (`A` INT, `B` INT PRIMARY KEY `A`)";
5295 query =
"SELECT * FROM `table`";
5302 ok(hrec != 0,
"MsiCreateRecord failed\n");
5320 query =
"SELECT * FROM `table`";
5340 query =
"SELECT * FROM `table`";
5347 ok(hrec != 0,
"MsiCreateRecord failed\n");
5365 query =
"SELECT * FROM `table`";
5384 r =
run_query(hdb, 0,
"CREATE TABLE `table2` (`A` INT, `B` INT, `C` INT, `D` INT PRIMARY KEY `A`,`B`)");
5385 ok(!
r,
"got %u\n",
r);
5388 ok(!
r,
"got %u\n",
r);
5390 ok(!
r,
"got %u\n",
r);
5398 ok(!
r,
"got %u\n",
r);
5404 ok(!
r,
"got %u\n",
r);
5406 ok(!
r,
"got %u\n",
r);
5409 ok(!
r,
"got %u\n",
r);
5418 ok(!
r,
"got %u\n",
r);
5420 ok(!
r,
"got %u\n",
r);
5428 ok(!
r,
"got %u\n",
r);
5434 ok(!
r,
"got %u\n",
r);
5436 ok(!
r,
"got %u\n",
r);
5439 ok(!
r,
"got %u\n",
r);
5444 ok(!
r,
"got %u\n",
r);
5453 ok(!
r,
"got %u\n",
r);
5455 ok(!
r,
"got %u\n",
r);
5461 ok(!
r,
"got %u\n",
r);
5464 ok(!
r,
"got %u\n",
r);
5470 ok(!
r,
"got %u\n",
r);
5472 ok(!
r,
"got %u\n",
r);
5475 ok(!
r,
"got %u\n",
r);
5480 ok(!
r,
"got %u\n",
r);
5485 ok(!
r,
"got %u\n",
r);
5490 ok(!
r,
"got %u\n",
r);
5499 ok(!
r,
"got %u\n",
r);
5501 ok(!
r,
"got %u\n",
r);
5508 ok(!
r,
"got %u\n",
r);
5514 ok(!
r,
"got %u\n",
r);
5516 ok(!
r,
"got %u\n",
r);
5519 ok(!
r,
"got %u\n",
r);
5524 ok(!
r,
"got %u\n",
r);
5529 ok(!
r,
"got %u\n",
r);
5534 ok(!
r,
"got %u\n",
r);
5555 "MOOABAARCDonetwofourfive";
5590 static const WCHAR stringdata[] = {0x4840, 0x3f3f, 0x4577, 0x446c, 0x3b6a, 0x45e4, 0x4824, 0};
5591 static const WCHAR stringpool[] = {0x4840, 0x3f3f, 0x4577, 0x446c, 0x3e6a, 0x44b2, 0x482f, 0};
5592 static const WCHAR moo[] = {0x4840, 0x3e16, 0x4818, 0};
5593 static const WCHAR aar[] = {0x4840, 0x3a8a, 0x481b, 0};
5600 query =
"CREATE TABLE `MOO` (`A` INT, `B` CHAR(72) PRIMARY KEY `A`)";
5604 query =
"CREATE TABLE `AAR` (`C` INT, `D` CHAR(72) PRIMARY KEY `C`)";
5609 query =
"INSERT INTO `MOO` (`A`, `B`) VALUES (1, 'one')";
5614 query =
"INSERT INTO `AAR` (`C`, `D`) VALUES (2, 'two')";
5619 query =
"SELECT * FROM `MOO`";
5644 query =
"INSERT INTO `MOO` (`A`, `B`) VALUES (4, 'four')";
5649 query =
"INSERT INTO `AAR` (`C`, `D`) VALUES (5, 'five')";
5662 query =
"SELECT * FROM `MOO`";
5685 query =
"SELECT * FROM `AAR`";
5718 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5719 ok(stg !=
NULL,
"Expected non-NULL storage\n");
5722 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5723 ok(stm !=
NULL,
"Expected non-NULL stream\n");
5726 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5727 ok(
read == 4,
"Expected 4, got %lu\n",
read);
5730 hr = IStream_Release(stm);
5731 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5734 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5735 ok(stm !=
NULL,
"Expected non-NULL stream\n");
5738 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5739 ok(
read == 8,
"Expected 8, got %lu\n",
read);
5745 hr = IStream_Release(stm);
5746 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5749 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5750 ok(stm !=
NULL,
"Expected non-NULL stream\n");
5753 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5754 ok(
read == 24,
"Expected 24, got %lu\n",
read);
5757 hr = IStream_Release(stm);
5758 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5761 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5762 ok(stm !=
NULL,
"Expected non-NULL stream\n");
5765 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5768 ok(
read == 64,
"Expected 64, got %lu\n",
read);
5772 hr = IStream_Release(stm);
5773 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5775 hr = IStorage_Release(stg);
5776 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5793 query =
"CREATE TABLE `phone` ( "
5794 "`id` INT, `name` CHAR(32), `number` CHAR(32) "
5795 "PRIMARY KEY `id`)";
5799 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
5800 "VALUES('1', 'Alan', '5030581')";
5804 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
5805 "VALUES('2', 'Barry', '928440')";
5809 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
5810 "VALUES('3', 'Cindy', '2937550')";
5814 query =
"SELECT * FROM `phone` WHERE `id` <= 2";
5843 query =
"SELECT * FROM `phone`";
5874static const struct {
5898 hr = IStorage_EnumElements(stg, 0,
NULL, 0, &stgenum);
5899 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5905 hr = IEnumSTATSTG_Next(stgenum, 1, &
stat, &
count);
5910 "Expected table %lu name to match\n",
n);
5913 hr = IStorage_OpenStream(stg,
stat.pwcsName,
NULL,
5915 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5916 ok(stm !=
NULL,
"Expected non-NULL stream\n");
5923 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5932 "Expected table %lu data to match\n",
n);
5934 IStream_Release(stm);
5938 ok(
n == 3,
"Expected 3, got %lu\n",
n);
5940 IEnumSTATSTG_Release(stgenum);
5961 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5962 ok(stg !=
NULL,
"Expected non-NULL stg\n");
5966 IStorage_Release(stg);
5978 ok(hdb,
"failed to create db\n");
5980 query =
"CREATE TABLE `Empty` ( `A` SHORT NOT NULL PRIMARY KEY `A`)";
5984 query =
"CREATE TABLE `Mesa` ( `A` SHORT NOT NULL, `B` SHORT, `C` SHORT PRIMARY KEY `A`)";
5988 query =
"INSERT INTO `Mesa` ( `A`, `B`, `C` ) VALUES ( 1, 2, 9 )";
5992 query =
"INSERT INTO `Mesa` ( `A`, `B`, `C` ) VALUES ( 3, 4, 7 )";
5996 query =
"INSERT INTO `Mesa` ( `A`, `B`, `C` ) VALUES ( 5, 6, 8 )";
6000 query =
"CREATE TABLE `Sideboard` ( `D` SHORT NOT NULL, `E` SHORT, `F` SHORT PRIMARY KEY `D`)";
6004 query =
"INSERT INTO `Sideboard` ( `D`, `E`, `F` ) VALUES ( 10, 11, 18 )";
6008 query =
"INSERT INTO `Sideboard` ( `D`, `E`, `F` ) VALUES ( 12, 13, 16 )";
6012 query =
"INSERT INTO `Sideboard` ( `D`, `E`, `F` ) VALUES ( 14, 15, 17 )";
6016 query =
"SELECT `A`, `B` FROM `Mesa` ORDER BY `C`";
6026 ok(
val == 3,
"Expected 3, got %d\n",
val);
6029 ok(
val == 4,
"Expected 3, got %d\n",
val);
6037 ok(
val == 5,
"Expected 5, got %d\n",
val);
6040 ok(
val == 6,
"Expected 6, got %d\n",
val);
6048 ok(
val == 1,
"Expected 1, got %d\n",
val);
6051 ok(
val == 2,
"Expected 2, got %d\n",
val);
6061 query =
"SELECT `A`, `D` FROM `Mesa`, `Sideboard` ORDER BY `F`";
6071 ok(
val == 1,
"Expected 1, got %d\n",
val);
6074 ok(
val == 12,
"Expected 12, got %d\n",
val);
6082 ok(
val == 3,
"Expected 3, got %d\n",
val);
6085 ok(
val == 12,
"Expected 12, got %d\n",
val);
6093 ok(
val == 5,
"Expected 5, got %d\n",
val);
6096 ok(
val == 12,
"Expected 12, got %d\n",
val);
6104 ok(
val == 1,
"Expected 1, got %d\n",
val);
6107 ok(
val == 14,
"Expected 14, got %d\n",
val);
6115 ok(
val == 3,
"Expected 3, got %d\n",
val);
6118 ok(
val == 14,
"Expected 14, got %d\n",
val);
6126 ok(
val == 5,
"Expected 5, got %d\n",
val);
6129 ok(
val == 14,
"Expected 14, got %d\n",
val);
6137 ok(
val == 1,
"Expected 1, got %d\n",
val);
6140 ok(
val == 10,
"Expected 10, got %d\n",
val);
6148 ok(
val == 3,
"Expected 3, got %d\n",
val);
6151 ok(
val == 10,
"Expected 10, got %d\n",
val);
6159 ok(
val == 5,
"Expected 5, got %d\n",
val);
6162 ok(
val == 10,
"Expected 10, got %d\n",
val);
6172 query =
"SELECT * FROM `Empty` ORDER BY `A`";
6184 query =
"CREATE TABLE `Buffet` ( `One` CHAR(72), `Two` SHORT PRIMARY KEY `One`)";
6188 query =
"INSERT INTO `Buffet` ( `One`, `Two` ) VALUES ( 'uno', 2)";
6192 query =
"INSERT INTO `Buffet` ( `One`, `Two` ) VALUES ( 'dos', 3)";
6196 query =
"INSERT INTO `Buffet` ( `One`, `Two` ) VALUES ( 'tres', 1)";
6200 query =
"SELECT * FROM `Buffet` WHERE `One` = 'dos' ORDER BY `Two`";
6230 query =
"CREATE TABLE `Table` ( `A` SHORT PRIMARY KEY `A` )";
6234 query =
"SELECT * FROM `Table`";
6274 query =
"SELECT * FROM `Table` WHERE `A` = 2";
6289 query =
"SELECT * FROM `Table` WHERE `A` = 3";
6304 query =
"SELECT * FROM `Table` ORDER BY `A`";
6314 ok(
r == 1,
"Expected 1, got %d\n",
r);
6322 ok(
r == 4,
"Expected 4, got %d\n",
r);
6346 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6350 query =
"INSERT INTO `Table` (`A`) VALUES ('one')";
6354 query =
"INSERT INTO `Table` (`A`) VALUES ('two')";
6358 query =
"DELETE FROM `Table` WHERE `A` = 'one'";
6370 query =
"SELECT * FROM `Table`";
6393 "This is a new 'string' ok\n";
6406 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6410 query =
"INSERT INTO `Table` ( `A` ) VALUES ( 'This is a 'string' ok' )";
6413 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6415 query =
"INSERT INTO `Table` ( `A` ) VALUES ( \"This is a 'string' ok\" )";
6418 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6420 query =
"INSERT INTO `Table` ( `A` ) VALUES ( \"test\" )";
6423 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6425 query =
"INSERT INTO `Table` ( `A` ) VALUES ( 'This is a ''string'' ok' )";
6429 query =
"INSERT INTO `Table` ( `A` ) VALUES ( 'This is a '''string''' ok' )";
6433 query =
"INSERT INTO `Table` ( `A` ) VALUES ( 'This is a \'string\' ok' )";
6437 query =
"INSERT INTO `Table` ( `A` ) VALUES ( 'This is a \"string\" ok' )";
6441 query =
"SELECT * FROM `Table`";
6466 query =
"SELECT * FROM `Table`";
6498 query =
"CREATE TABLE `Table`\r ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6501 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6503 query =
"CREATE TABLE `Table` \r( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6506 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6508 query =
"CREATE\r TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6511 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6513 query =
"CREATE TABLE\r `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6516 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6518 query =
"CREATE TABLE `Table` (\r `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6521 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6523 query =
"CREATE TABLE `Table` ( `A`\r CHAR(72) NOT NULL PRIMARY KEY `A` )";
6526 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6528 query =
"CREATE TABLE `Table` ( `A` CHAR(72)\r NOT NULL PRIMARY KEY `A` )";
6531 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6533 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT\r NULL PRIMARY KEY `A` )";
6536 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6538 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT \rNULL PRIMARY KEY `A` )";
6541 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6543 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL\r PRIMARY KEY `A` )";
6546 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6548 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL \rPRIMARY KEY `A` )";
6551 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6553 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY\r KEY `A` )";
6556 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6558 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY \rKEY `A` )";
6561 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6563 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY\r `A` )";
6566 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6568 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A`\r )";
6571 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6573 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )\r";
6576 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6578 query =
"CREATE TABLE `\rOne` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6582 query =
"CREATE TABLE `Tw\ro` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6586 query =
"CREATE TABLE `Three\r` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6590 query =
"CREATE TABLE `Four` ( `A\r` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6593 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6595 query =
"CREATE TABLE `Four` ( `\rA` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6598 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6600 query =
"CREATE TABLE `Four` ( `A` CHAR(72\r) NOT NULL PRIMARY KEY `A` )";
6603 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6605 query =
"CREATE TABLE `Four` ( `A` CHAR(\r72) NOT NULL PRIMARY KEY `A` )";
6608 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6610 query =
"CREATE TABLE `Four` ( `A` CHAR(72) NOT NULL PRIMARY KEY `\rA` )";
6613 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6615 query =
"CREATE TABLE `Four` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A\r` )";
6618 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6620 query =
"CREATE TABLE `Four` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A\r` )";
6623 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6625 query =
"SELECT `Name` FROM `_Tables`";
6667 query =
"CREATE TABLE Table ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6671 query =
"CREATE TABLE `Table` ( A CHAR(72) NOT NULL PRIMARY KEY `A` )";
6675 query =
"CREATE TABLE `Table2` ( `A` CHAR(72) NOT NULL PRIMARY KEY A )";
6679 query =
"CREATE TABLE `Table3` ( A CHAR(72) NOT NULL PRIMARY KEY A )";
6683 query =
"SELECT `Name` FROM `_Tables`";
6710 query =
"SELECT `Table`, `Number`, `Name` FROM `_Columns`";
6737 query =
"INSERT INTO Table ( `A` ) VALUES ( 'hi' )";
6741 query =
"INSERT INTO `Table` ( A ) VALUES ( 'hi' )";
6745 query =
"INSERT INTO `Table` ( `A` ) VALUES ( hi )";
6749 query =
"SELECT * FROM Table WHERE `A` = 'hi'";
6753 query =
"SELECT * FROM `Table` WHERE `A` = hi";
6757 query =
"SELECT * FROM Table";
6761 query =
"SELECT * FROM Table2";
6773 query =
"SELECT * FROM `Table` WHERE A = 'hi'";
6817 query =
"SELECT * FROM `_ForceCodepage`";
6821 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6825 query =
"SELECT * FROM `_ForceCodepage`";
6832 query =
"SELECT * FROM `_ForceCodepage`";
6841 query =
"SELECT * FROM `_ForceCodepage`";
6850 "Expected \"\r\n\r\n0\t_ForceCodepage\r\n\", got \"%s\"\n",
buffer);
6852 create_file_data(
"forcecodepage.idt",
"\r\n\r\n850\t_ForceCodepage\r\n", 0);
6862 "Expected \"\r\n\r\n850\t_ForceCodepage\r\n\", got \"%s\"\n",
buffer);
6864 create_file_data(
"forcecodepage.idt",
"\r\n\r\n9999\t_ForceCodepage\r\n", 0);
6885 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL, `B` INT PRIMARY KEY `A` )";
6889 query =
"INSERT INTO `Table` ( `A`, `B` ) VALUES ( 'hi', 1 )";
6893 query =
"SELECT * FROM `Table`";
6905 ok(!
r,
"got %u\n",
r);
6910 ok(!
r,
"got %u\n",
r);
6913 query =
"UPDATE `Table` SET `B` = 2 WHERE `A` = 'hi'";
6921 r =
run_query(hdb, 0,
"UPDATE `Table` SET `B` = NULL WHERE `A` = 'hi'");
6922 ok(!
r,
"got %u\n",
r);
6933 query =
"INSERT INTO `Table` ( `A`, `B` ) VALUES ( 'hello', 3 )";
6937 query =
"SELECT * FROM `Table` WHERE `B` = 3";
6946 query =
"UPDATE `Table` SET `B` = 2 WHERE `A` = 'hello'";
6950 query =
"INSERT INTO `Table` ( `A`, `B` ) VALUES ( 'hithere', 3 )";
6963 ok(!
r,
"got %u\n",
r);
6965 ok(!
r,
"got %u\n",
r);
6968 ok(!
r,
"got %u\n",
r);
6973 ok(!
r,
"got %u\n",
r);
6994 query =
"CREATE TABLE `Table` ( `A` INT, `B` INT PRIMARY KEY `A` )";
6998 query =
"INSERT INTO `Table` ( `A`, `B` ) VALUES ( 1, 2 )";
7002 query =
"INSERT INTO `Table` ( `A`, `B` ) VALUES ( 3, 4 )";
7006 query =
"INSERT INTO `Table` ( `A`, `B` ) VALUES ( 5, 6 )";
7011 query =
"SELECT * FROM `Table` WHERE `B` = 3";
7026 query =
"SELECT * FROM `Table` WHERE `A` = 7";
7036 ok(
r == 7,
"Expected 7, got %d\n",
r);
7039 ok(
r == 8,
"Expected 8, got %d\n",
r);
7050 query =
"SELECT * FROM `Table` WHERE `A` = 7";
7060 ok(
r == 7,
"Expected 7, got %d\n",
r);
7063 ok(
r == 9,
"Expected 9, got %d\n",
r);
7065 query =
"UPDATE `Table` SET `B` = 10 WHERE `A` = 7";
7073 ok(
r == 7,
"Expected 7, got %d\n",
r);
7076 ok(
r == 10,
"Expected 10, got %d\n",
r);
7104 hr = IStream_Write(stm,
"stgdata", 8, &
count);
7109 IStream_Release(stm);
7110 IStorage_Release(stg);
7129 ok(hdb,
"failed to create db\n");
7141 ok(hrec,
"failed to get column info hrecord\n");
7147 ok(hrec,
"failed to get column info hrecord\n");
7161 query =
"INSERT INTO `_Storages` (`Name`, `Data`) VALUES (?, ?)";
7172 query =
"SELECT `Name`, `Data` FROM `_Storages`";
7191 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7192 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7208 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
7209 ok(stg !=
NULL,
"Expected non-NULL storage\n");
7214 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
7215 ok(inner !=
NULL,
"Expected non-NULL storage\n");
7219 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
7220 ok(stm !=
NULL,
"Expected non-NULL stream\n");
7223 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
7224 ok(
size == 8,
"Expected 8, got %lu\n",
size);
7227 IStream_Release(stm);
7228 IStorage_Release(inner);
7230 IStorage_Release(stg);
7252 sprintf(package,
"#%lu", hdb);
7256 skip(
"Not enough rights to perform tests\n");
7267 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7279 ok(
size == 5,
"Expected 5, got %lu\n",
size);
7295 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7312 sprintf(package,
"#%lu", hdb);
7322 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7334 ok(
size == 5,
"Expected 5, got %lu\n",
size);
7350 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7369 query =
"CREATE TABLE `One` ( `A` INT PRIMARY KEY `A` )";
7373 query =
"SELECT * FROM `One`";
7377 query =
"SELECT `Name` FROM `_Tables` WHERE `Name` = 'One'";
7391 query =
"SELECT `Table`, `Number`, `Name` FROM `_Columns` WHERE `Table` = 'One'";
7404 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
7409 query =
"DROP `One`";
7412 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7414 query =
"DROP TABLE";
7417 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7419 query =
"DROP TABLE `One`";
7428 "Expected ERROR_FUNCTION_FAILED, got %d\n",
r);
7433 query =
"SELECT * FROM `IDontExist`";
7436 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7438 query =
"SELECT * FROM `One`";
7441 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7443 query =
"CREATE TABLE `One` ( `A` INT PRIMARY KEY `A` )";
7447 query =
"DROP TABLE One";
7451 query =
"SELECT * FROM `One`";
7454 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7456 query =
"SELECT * FROM `_Tables` WHERE `Name` = 'One'";
7460 query =
"SELECT * FROM `_Columns` WHERE `Table` = 'One'";
7464 query =
"CREATE TABLE `One` ( `B` INT, `C` INT PRIMARY KEY `B` )";
7468 query =
"SELECT * FROM `One`";
7472 query =
"SELECT `Name` FROM `_Tables` WHERE `Name` = 'One'";
7486 query =
"SELECT `Table`, `Number`, `Name` FROM `_Columns` WHERE `Table` = 'One'";
7504 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
7509 query =
"DROP TABLE One";
7513 query =
"SELECT * FROM `One`";
7516 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7518 query =
"SELECT * FROM `_Tables` WHERE `Name` = 'One'";
7522 query =
"SELECT * FROM `_Columns` WHERE `Table` = 'One'";
7547 "Expected ERROR_INVALID_HANDLE, got %d\n",
r);
7552 "Expected ERROR_INVALID_HANDLE, got %d\n",
r);
7566 query =
"CREATE TABLE `One` ( `A` INT PRIMARY KEY `A` )";
7570 query =
"CREATE TABLE `One` ( `A` CHAR(72) PRIMARY KEY `A` )";
7577 "Expected ERROR_DATATYPE_MISMATCH, got %d\n",
r);
7580 query =
"SELECT * FROM `MergeErrors`";
7583 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7585 query =
"DROP TABLE `One`";
7589 query =
"DROP TABLE `One`";
7593 query =
"CREATE TABLE `One` ( "
7596 "`C` CHAR(64) LOCALIZABLE, "
7598 "`E` CHAR(72) NOT NULL, "
7599 "`F` CHAR(56) NOT NULL, "
7600 "`G` CHAR(64) NOT NULL LOCALIZABLE, "
7601 "`H` LONGCHAR NOT NULL "
7602 "PRIMARY KEY `A` )";
7606 query =
"CREATE TABLE `One` ( "
7611 "`E` CHAR(64) NOT NULL, "
7612 "`F` CHAR(64) NOT NULL, "
7613 "`G` CHAR(64) NOT NULL, "
7614 "`H` CHAR(64) NOT NULL "
7615 "PRIMARY KEY `A` )";
7622 "Expected ERROR_SUCCESS, got %d\n",
r);
7625 query =
"SELECT * FROM `MergeErrors`";
7628 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7630 query =
"DROP TABLE `One`";
7634 query =
"DROP TABLE `One`";
7638 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7642 query =
"CREATE TABLE `One` ( `A` INT, `C` INT PRIMARY KEY `A` )";
7649 "Expected ERROR_DATATYPE_MISMATCH, got %d\n",
r);
7652 query =
"SELECT * FROM `MergeErrors`";
7655 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7657 query =
"DROP TABLE `One`";
7661 query =
"DROP TABLE `One`";
7665 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7669 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `B` )";
7676 "Expected ERROR_DATATYPE_MISMATCH, got %d\n",
r);
7679 query =
"SELECT * FROM `MergeErrors`";
7682 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7684 query =
"DROP TABLE `One`";
7688 query =
"DROP TABLE `One`";
7692 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7696 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A`, `B` )";
7703 "Expected ERROR_DATATYPE_MISMATCH, got %d\n",
r);
7706 query =
"SELECT * FROM `MergeErrors`";
7709 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7711 query =
"DROP TABLE `One`";
7715 query =
"DROP TABLE `One`";
7719 query =
"CREATE TABLE `One` ( `A` INT, `B` INT, `C` INT PRIMARY KEY `A` )";
7723 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7727 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, 2 )";
7735 query =
"SELECT * FROM `One`";
7740 ok(
r == 1,
"Expected 1, got %d\n",
r);
7743 ok(
r == 2,
"Expected 2, got %d\n",
r);
7751 query =
"SELECT * FROM `MergeErrors`";
7754 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7756 query =
"DROP TABLE `One`";
7760 query =
"DROP TABLE `One`";
7764 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7768 query =
"CREATE TABLE `One` ( `A` INT, `B` INT, `C` INT PRIMARY KEY `A` )";
7772 query =
"INSERT INTO `One` ( `A`, `B`, `C` ) VALUES ( 1, 2, 3 )";
7780 query =
"SELECT * FROM `One`";
7785 ok(
r == 1,
"Expected 1, got %d\n",
r);
7788 ok(
r == 2,
"Expected 2, got %d\n",
r);
7796 query =
"SELECT * FROM `MergeErrors`";
7799 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7801 query =
"DROP TABLE `One`";
7805 query =
"DROP TABLE `One`";
7809 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7813 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, 1 )";
7817 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 2, 2 )";
7821 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7825 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, 2 )";
7829 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 2, 3 )";
7836 "Expected ERROR_FUNCTION_FAILED, got %d\n",
r);
7839 query =
"SELECT * FROM `MergeErrors`";
7850 check_record(hrec, 2,
"Table",
"NumRowMergeConflicts");
7861 query =
"DROP TABLE `MergeErrors`";
7865 query =
"DROP TABLE `One`";
7869 query =
"DROP TABLE `One`";
7873 query =
"CREATE TABLE `One` ( `A` INT, `B` CHAR(72) PRIMARY KEY `A` )";
7877 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, 'hi' )";
7885 query =
"SELECT * FROM `One`";
7892 query =
"SELECT * FROM `MergeErrors`";
7895 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7897 query =
"DROP TABLE `One`";
7901 query =
"DROP TABLE `One`";
7905 query =
"CREATE TABLE `One` ( "
7906 "`A` CHAR(72), `B` INT PRIMARY KEY `A` )";
7910 query =
"CREATE TABLE `One` ( "
7911 "`A` CHAR(72), `B` INT PRIMARY KEY `A` )";
7915 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 'hi', 1 )";
7923 query =
"SELECT * FROM `One`";
7930 query =
"SELECT * FROM `MergeErrors`";
7933 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7941 query =
"DROP TABLE `One`";
7945 query =
"DROP TABLE `One`";
7949 query =
"CREATE TABLE `One` ( "
7950 "`A` INT, `B` CHAR(72) LOCALIZABLE PRIMARY KEY `A` )";
7954 query =
"CREATE TABLE `One` ( "
7955 "`A` INT, `B` CHAR(72) LOCALIZABLE PRIMARY KEY `A` )";
7959 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, 'hi' )";
7967 query =
"SELECT * FROM `One`";
7974 query =
"SELECT * FROM `MergeErrors`";
7977 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7979 query =
"DROP TABLE `One`";
7983 query =
"DROP TABLE `One`";
7987 query =
"CREATE TABLE `One` ( `A` INT, `B` OBJECT PRIMARY KEY `A` )";
7991 query =
"CREATE TABLE `One` ( `A` INT, `B` OBJECT PRIMARY KEY `A` )";
7999 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, ? )";
8009 query =
"SELECT * FROM `One`";
8014 ok(
r == 1,
"Expected 1, got %d\n",
r);
8021 "Expected \"binary.dat\\n\", got \"%s\"\n",
buf);
8026 query =
"SELECT * FROM `MergeErrors`";
8029 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
8031 query =
"DROP TABLE `One`";
8035 query =
"DROP TABLE `One`";
8039 query =
"CREATE TABLE `One` ( `A` INT, `B` CHAR(72) PRIMARY KEY `A` )";
8045 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, 'foo' )";
8049 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 2, 'bar' )";
8056 query =
"SELECT * FROM `One`";
8074 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
8101 ok(hdb,
"failed to create db\n");
8104 query =
"CREATE TABLE `T1` ( `A` SHORT, `B` SHORT PRIMARY KEY `A`)";
8108 query =
"INSERT INTO `T1` ( `A`, `B` ) VALUES ( 1, 2 )";
8112 query =
"INSERT INTO `T1` ( `A`, `B` ) VALUES ( 4, 5 )";
8116 query =
"CREATE TABLE `T2` ( `A` SHORT, `B` SHORT PRIMARY KEY `A`)";
8120 query =
"INSERT INTO `T2` ( `A`, `B` ) VALUES ( 11, 12 )";
8124 query =
"INSERT INTO `T2` ( `A`, `B` ) VALUES ( 14, 15 )";
8132 query =
"SELECT T1.A, T2.B FROM T1,T2";
8138 for (
i = 0;
i < 4;
i++)
8144 ok(
r == vals[
i][0],
"Expected %d, got %d\n", vals[
i][0],
r);
8147 ok(
r == vals[
i][1],
"Expected %d, got %d\n", vals[
i][1],
r);
8179 ok(hdb,
"failed to create db\n");
8181 query =
"CREATE TABLE `T` ( `A` SHORT, `B` SHORT, `C` SHORT PRIMARY KEY `A`)";
8185 query =
"INSERT INTO `T` ( `A`, `B`, `C` ) VALUES ( 1, 2, 3 )";
8189 query =
"INSERT INTO `T` ( `B`, `C`, `A` ) VALUES ( 4, 5, 6 )";
8193 query =
"INSERT INTO `T` ( `C`, `A`, `B` ) VALUES ( 7, 8, 9 )";
8197 query =
"INSERT INTO `T` ( `A`, `B` ) VALUES ( 10, 11 )";
8201 query =
"INSERT INTO `T` ( `B`, `C` ) VALUES ( 12, 13 )";
8208 query =
"INSERT INTO `T` ( `C` ) VALUES ( 14 )";
8211 "Expected ERROR_FUNCTION_FAILED, got %d\n",
r);
8214 query =
"INSERT INTO `T` ( `A`, `C` ) VALUES ( 1, 14 )";
8217 "Expected ERROR_FUNCTION_FAILED, got %d\n",
r);
8219 query =
"INSERT INTO `T` ( `A`, `C` ) VALUES ( 14, 15 )";
8223 query =
"INSERT INTO `T` VALUES ( 16 )";
8226 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
8228 query =
"INSERT INTO `T` VALUES ( 17, 18 )";
8231 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
8233 query =
"INSERT INTO `T` VALUES ( 19, 20, 21 )";
8236 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
8238 query =
"SELECT * FROM `T`";
8244 for (
i = 0;
i < 6;
i++)
8267 query =
"DELETE FROM `T` WHERE `A` IS NULL";
8271 query =
"INSERT INTO `T` ( `B`, `C` ) VALUES ( 12, 13 ) TEMPORARY";
8275 query =
"SELECT * FROM `T`";
8281 for (
i = 0;
i < 6;
i++)
8314 ok(hdb,
"failed to create db\n");
8336 query =
"CREATE TABLE `T` ( `B` SHORT NOT NULL, `C` SHORT NOT NULL, "
8337 "`A` CHAR(255), `E` INT, `D` CHAR(255) NOT NULL "
8338 "PRIMARY KEY `D`, `E`)";
8342 query =
"SELECT * FROM `T`";
8348 check_record(rec, 5,
"s255",
"I2",
"S255",
"i2",
"i2");
8359 query =
"INSERT INTO `T` ( `B`, `C`, `A`, `E`, `D` ) "
8360 "VALUES ( 1, 2, 'a', 3, 'bc' )";
8364 query =
"SELECT * FROM `T`";
8370 query =
"SELECT `Table`, `Number`, `Name` FROM `_Columns` WHERE `Table` = 'T'";
8407 query =
"CREATE TABLE `Z` ( `B` SHORT NOT NULL, `C` SHORT NOT NULL, "
8408 "`A` CHAR(255), `E` INT, `D` CHAR(255) NOT NULL "
8409 "PRIMARY KEY `C`, `A`, `D`)";
8413 query =
"SELECT * FROM `Z`";
8419 check_record(rec, 5,
"i2",
"S255",
"s255",
"I2",
"i2");
8430 query =
"INSERT INTO `Z` ( `B`, `C`, `A`, `E`, `D` ) "
8431 "VALUES ( 1, 2, 'a', 3, 'bc' )";
8435 query =
"SELECT * FROM `Z`";
8441 query =
"SELECT `Table`, `Number`, `Name` FROM `_Columns` WHERE `Table` = 'T'";
8491 ok(hdb,
"failed to create db\n");
8493 query =
"CREATE TABLE `blah` (`foo` CHAR(72) NOT NULL PRIMARY KEY `foo`)";
8516 query =
"CREATE TABLE `a` (`b` INT PRIMARY KEY `b`)";
8530 query =
"SELECT * FROM `a`";
8554 query =
"SELECT * FROM `a`";
8582 static const char control_table[] =
8586 "LicenseAgreementDlg\ttext\x11\x19text\0text";
8596 write_file(
"temp_file", control_table,
sizeof(control_table) );
8601 r =
do_query( hdb,
"SELECT `Text` FROM `Control` WHERE `Dialog` = 'LicenseAgreementDlg'", &hrec );
8608 ok( !
memcmp(
"text\r\ntext\ntext",
buffer,
sizeof(
"text\r\ntext\ntext") - 1 ),
"wrong buffer contents \"%s\"\n",
buffer );
8625 r =
try_query( hdb,
"CREATE TABLE `t` (`a` CHAR NOT NULL, `b` CHAR PRIMARY KEY `a`)");
8628 r =
try_query( hdb,
"SELECT `t`.`b` FROM `t` WHERE `t`.`b` = `x`" );
8631 r =
try_query( hdb,
"SELECT '', `t`.`b` FROM `t` WHERE `t`.`b` = 'x'" );
8634 r =
try_query( hdb,
"SELECT *, `t`.`b` FROM `t` WHERE `t`.`b` = 'x'" );
8637 r =
try_query( hdb,
"SELECT 'b', `t`.`b` FROM `t` WHERE `t`.`b` = 'x'" );
8640 r =
try_query( hdb,
"SELECT `t`.`b`, '' FROM `t` WHERE `t`.`b` = 'x'" );
8643 r =
try_query( hdb,
"SELECT `t`.`b`, '' FROM `t` WHERE `t`.`b` = 'x' ORDER BY `b`" );
8646 r =
try_query( hdb,
"SELECT `t`.`b`, '' FROM `t` WHERE `t`.`b` = 'x' ORDER BY 'b'" );
8649 r =
try_query( hdb,
"SELECT 't'.'b' FROM `t` WHERE `t`.`b` = 'x'" );
8652 r =
try_query( hdb,
"SELECT 'b' FROM `t` WHERE `t`.`b` = 'x'" );
8655 r =
try_query( hdb,
"INSERT INTO `t` ( `a`, `b` ) VALUES( '1', '2' )" );
8658 r =
try_query( hdb,
"INSERT INTO `t` ( `a`, `b` ) VALUES( '3', '4' )" );
8763 r =
try_query( hdb,
"SELECT '' FROM `t` WHERE `t`.`b` = 'x'" );
8766 r =
try_query( hdb,
"SELECT `` FROM `t` WHERE `t`.`b` = 'x'" );
8769 r =
try_query( hdb,
"SELECT `b` FROM 't' WHERE `t`.`b` = 'x'" );
8772 r =
try_query( hdb,
"SELECT `b` FROM `t` WHERE 'b' = 'x'" );
8775 r =
try_query( hdb,
"SELECT `t`.`b`, `` FROM `t` WHERE `t`.`b` = 'x'" );
8794 r =
run_query(hdb, 0,
"CREATE TABLE `T` (`A` SHORT, `B` SHORT, `C` SHORT PRIMARY KEY `A`)");
8795 ok(!
r,
"got %u\n",
r);
8798 ok(!
r,
"got %u\n",
r);
8802 ok(!
r,
"got %u\n",
r);
8806 r =
run_query(hdb, 0,
"CREATE TABLE `U` (`A` SHORT, `B` SHORT, `C` SHORT PRIMARY KEY `B`, `C`)");
8807 ok(!
r,
"got %u\n",
r);
8810 ok(!
r,
"got %u\n",
r);
8814 ok(!
r,
"got %u\n",
r);
8826 r =
run_query(db, 0,
"CREATE TABLE `T` (`A` SHORT, `B` SHORT PRIMARY KEY `A`)");
8827 ok(!
r,
"got %u\n",
r);
8828 r =
run_query(db, 0,
"INSERT INTO `T` (`A`, `B`) VALUES (1, 2)");
8829 ok(!
r,
"got %u\n",
r);
8832 ok(!
r,
"got %u\n",
r);
8834 ok(!
r,
"got %u\n",
r);
8840 ok(!
r,
"got %u\n",
r);
8846 ok(!
r,
"got %u\n",
r);
8848 ok(!
r,
"got %u\n",
r);
8851 ok(!
r,
"got %u\n",
r);
8860 ok(!
r,
"got %u\n",
r);
8862 ok(!
r,
"got %u\n",
r);
8873 ok(!
r,
"got %u\n",
r);
8879 ok(!
r,
"got %u\n",
r);
8881 ok(!
r,
"got %u\n",
r);
8884 ok(!
r,
"got %u\n",
r);
8889 ok(!
r,
"got %u\n",
r);
8897 r =
run_query(db, 0,
"CREATE TABLE `U` (`A` SHORT, `B` SHORT, `C` SHORT, `D` SHORT PRIMARY KEY `A`, `B`)");
8898 ok(!
r,
"got %u\n",
r);
8899 r =
run_query(db, 0,
"INSERT INTO `U` (`A`, `B`, `C`, `D`) VALUES (1, 2, 3, 4)");
8900 ok(!
r,
"got %u\n",
r);
8903 ok(!
r,
"got %u\n",
r);
8905 ok(!
r,
"got %u\n",
r);
8913 ok(!
r,
"got %u\n",
r);
8922 ok(!
r,
"got %u\n",
r);
8928 ok(!
r,
"got %u\n",
r);
8930 ok(!
r,
"got %u\n",
r);
8933 ok(!
r,
"got %u\n",
r);
8938 ok(!
r,
"got %u\n",
r);
8947 ok(!
r,
"got %u\n",
r);
8949 ok(!
r,
"got %u\n",
r);
8955 ok(!
r,
"got %u\n",
r);
8958 ok(!
r,
"got %u\n",
r);
8969 ok(!
r,
"got %u\n",
r);
8971 ok(!
r,
"got %u\n",
r);
8974 ok(!
r,
"got %u\n",
r);
8979 ok(!
r,
"got %u\n",
r);
8984 ok(!
r,
"got %u\n",
r);
8993 ok(!
r,
"got %u\n",
r);
8995 ok(!
r,
"got %u\n",
r);
9009 ok(!
r,
"got %u\n",
r);
9023 r =
run_query(db, 0,
"CREATE TABLE `T` (`A` SHORT, `B` SHORT PRIMARY KEY `A`)");
9024 ok(!
r,
"got %u\n",
r);
9027 ok(!
r,
"got %u\n",
r);
9029 ok(!
r,
"got %u\n",
r);
9035 ok(!
r,
"got %u\n",
r);
9041 ok(!
r,
"got %u\n",
r);
9043 ok(!
r,
"got %u\n",
r);
9046 ok(!
r,
"got %u\n",
r);
9055 ok(!
r,
"got %u\n",
r);
9057 ok(!
r,
"got %u\n",
r);
9071 ok(!
r,
"got %u\n",
r);
9077 ok(!
r,
"got %u\n",
r);
9079 ok(!
r,
"got %u\n",
r);
9082 ok(!
r,
"got %u\n",
r);
9087 ok(!
r,
"got %u\n",
r);
9095 r =
run_query(db, 0,
"CREATE TABLE `U` (`A` SHORT, `B` SHORT, `C` SHORT, `D` SHORT PRIMARY KEY `A`, `B`)");
9096 ok(!
r,
"got %u\n",
r);
9099 ok(!
r,
"got %u\n",
r);
9101 ok(!
r,
"got %u\n",
r);
9109 ok(!
r,
"got %u\n",
r);
9113 ok(!
r,
"got %u\n",
r);
9119 ok(!
r,
"got %u\n",
r);
9121 ok(!
r,
"got %u\n",
r);
9124 ok(!
r,
"got %u\n",
r);
9129 ok(!
r,
"got %u\n",
r);
9138 ok(!
r,
"got %u\n",
r);
9140 ok(!
r,
"got %u\n",
r);
9146 ok(!
r,
"got %u\n",
r);
9155 ok(!
r,
"got %u\n",
r);
9157 ok(!
r,
"got %u\n",
r);
9160 ok(!
r,
"got %u\n",
r);
9165 ok(!
r,
"got %u\n",
r);
9170 ok(!
r,
"got %u\n",
r);
9190 r =
run_query(db, 0,
"CREATE TABLE `T` (`A` SHORT, `B` SHORT NOT NULL PRIMARY KEY `A`)");
9191 ok(!
r,
"got %u\n",
r);
9192 r =
run_query(db, 0,
"INSERT INTO `T` (`A`, `B`) VALUES (1, 2)");
9193 r =
run_query(db, 0,
"CREATE TABLE `_Validation` ("
9194 "`Table` CHAR(32) NOT NULL, `Column` CHAR(32) NOT NULL, "
9195 "`Nullable` CHAR(4) NOT NULL, `MinValue` INT, `MaxValue` INT, "
9196 "`KeyTable` CHAR(255), `KeyColumn` SHORT, `Category` CHAR(32), "
9197 "`Set` CHAR(255), `Description` CHAR(255) PRIMARY KEY `Table`, `Column`)");
9198 ok(!
r,
"got %u\n",
r);
9199 r =
run_query(db, 0,
"INSERT INTO `_Validation` (`Table`, `Column`, `Nullable`) VALUES ('T', 'A', 'N')");
9200 ok(!
r,
"got %u\n",
r);
9201 r =
run_query(db, 0,
"INSERT INTO `_Validation` (`Table`, `Column`, `Nullable`) VALUES ('T', 'B', 'N')");
9202 ok(!
r,
"got %u\n",
r);
9205 ok(!
r,
"got %u\n",
r);
9208 ok(!
r,
"got %u\n",
r);
9213 ok(sz == 0,
"got size %lu\n", sz);
9221 ok(sz == 0,
"got size %lu\n", sz);
9228 ok(sz == 0,
"got size %lu\n", sz);
9235 ok(sz == 0,
"got size %lu\n", sz);
9248 ok(sz == 1,
"got size %lu\n", sz);
9265 ok(sz == 1,
"got size %lu\n", sz);
9282 ok(sz == 1,
"got size %lu\n", sz);
9309 query =
"CREATE TABLE `phone` ( "
9310 "`id` INT, `name` CHAR(32), `number` CHAR(32) "
9311 "PRIMARY KEY `id`)";
9315 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
9316 "VALUES('1', 'Alan', '5030581')";
9320 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
9321 "VALUES('2', 'Barry', '928440')";
9325 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
9326 "VALUES('3', 'Cindy', '2937550')";
9330 query =
"SELECT * FROM `phone`";
9337 for (tries = 0; tries < 3; tries++)
9342 for (
i = 0;
i < 3;
i++)
9355 ok(
r >= 1 &&
r <= 3,
"Expected 1 <= id <= 3, got %d\n",
r);
9356 if (
r <
sizeof(idset) * 8)
9358 ok(!(idset & (1 <<
r)),
"Duplicate id %d\n",
r);
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
char * strcpy(char *DstString, const char *SrcString)
char * strchr(const char *String, int ch)
static const WCHAR nameW[]
static void test_quotes(void)
static CHAR CURR_DIR[MAX_PATH]
static const CHAR bin_import_dat[]
static void test_viewgetcolumninfo(void)
static UINT package_from_db(MSIHANDLE hdb, MSIHANDLE *handle)
static void test_deleterow(void)
static UINT create_binary_table(MSIHANDLE hdb)
static void test_msiimport(void)
static void test_integers(void)
static const WCHAR msifile2W[]
static const char * join_res_first[][2]
static void test_defaultdatabase(void)
#define add_std_dlls_entry(hdb, values)
static const WCHAR msifileW[]
static void test_viewfetch_wraparound(void)
static void test_update(void)
static const CHAR endlines1[]
static void test_getcolinfo(void)
static const WCHAR name5[]
static const WCHAR data7[]
static const WCHAR name8[]
static const CHAR endlines2[]
static void test_collation(void)
static void test_temporary_table(void)
#define add_component_entry(hdb, values)
static const WCHAR data9[]
static const char * msifile2
static void test_noquotes(void)
static MSIHANDLE create_db(void)
static UINT run_query(MSIHANDLE hdb, MSIHANDLE hrec, const char *query)
static const CHAR suminfo[]
static void test_msiinsert(void)
static const char * join_res_fourth[][2]
static const char * join_res_ninth[][6]
static void test_handle_limit(void)
static const char * join_res_eighth[][4]
static const char * join_res_fifth[][2]
static void test_viewmodify_delete_temporary(void)
static void enum_stream_names(IStorage *stg)
static UINT create_feature_components_table(MSIHANDLE hdb)
static void test_try_transform(void)
static const WCHAR data14[]
static const char data8[]
static void test_where_viewmodify(void)
static const WCHAR name4[]
static void test_binary_import(void)
static const char data4[]
static void WINAPIV check_record_(int line, MSIHANDLE rec, UINT count,...)
static void test_msidatabase(void)
static const char * join_res_third[][2]
static void test_viewmodify_update(void)
static UINT try_query(MSIHANDLE hdb, LPCSTR szQuery)
static void test_suminfo_import(void)
static void test_storages_table(void)
static void test_primary_keys(void)
static const struct @1674 table_transform_data[]
static void test_viewmodify_delete(void)
static const WCHAR name3[]
static UINT create_component_table(MSIHANDLE hdb)
static void test_markers(void)
static void test_select_markers(void)
static UINT get_columns_table_type(MSIHANDLE hdb, const char *table, UINT field)
static void create_file_data(LPCSTR name, LPCSTR data, DWORD size)
static const WCHAR name2[]
static const WCHAR data2[]
static void test_select_with_tablenames(void)
static void test_binary(void)
static void test_order(void)
static const char * join_res_second[][2]
static void test_special_tables(void)
static void test_viewmodify_insert(void)
#define add_binary_entry(hdb, values)
static const WCHAR _StringPool[]
static void test_viewmodify_assign(void)
static void test_tables_order(void)
static void generate_transform_manual(void)
static void test_join(void)
static const struct @1675 database_table_data[]
static MSIHANDLE get_column_info(MSIHANDLE hdb, const char *query, MSICOLINFO type)
static const WCHAR name7[]
static void test_createtable(void)
static const WCHAR data3[]
static const char * msifile
static void test_viewmodify_merge(void)
static const UINT ordervals[6][3]
static const WCHAR data11[]
static UINT create_custom_action_table(MSIHANDLE hdb)
static const WCHAR data5[]
static UINT do_query(MSIHANDLE hdb, const char *query, MSIHANDLE *phrec)
static UINT try_query_param(MSIHANDLE hdb, LPCSTR szQuery, MSIHANDLE hrec)
static void test_columnorder(void)
static const WCHAR _StringData[]
static void test_select_column_names(void)
static UINT run_queryW(MSIHANDLE hdb, MSIHANDLE hrec, const WCHAR *query)
#define add_feature_components_entry(hdb, values)
static void generate_transform(void)
static void test_forcecodepage(void)
static void test_stringtable(void)
static const WCHAR name6[]
static void test_viewmodify_refresh(void)
static const WCHAR name9[]
static void test_droptable(void)
static UINT add_table_to_db(MSIHANDLE hdb, LPCSTR table_data)
static void test_streamtable(void)
static void test_where(void)
static UINT set_summary_info(MSIHANDLE hdb)
static void test_rows_order(void)
static UINT try_insert_query(MSIHANDLE hdb, LPCSTR szQuery)
#define create_file(name)
static void test_msidecomposedesc(void)
static void test_carriagereturn(void)
static const char * join_res_seventh[][2]
static void test_msiexport(void)
static void test_insertorder(void)
static const WCHAR data13[]
static void test_msibadqueries(void)
static const WCHAR name1[]
static const WCHAR data10[]
static void test_longstrings(void)
static void test_where_not_in_selected(void)
static UINT create_directory_table(MSIHANDLE hdb)
static void test_dbtopackage(void)
static const char * mstfile
static void test_viewmodify(void)
static const CHAR two_primary[]
static void test_view_get_error(void)
static UINT create_std_dlls_table(MSIHANDLE hdb)
static void read_file_data(LPCSTR filename, LPSTR buffer)
static const WCHAR data1[]
static void write_file(const CHAR *filename, const char *data, int data_size)
static void test_embedded_nulls(void)
static const CHAR import_dat[]
#define check_record(rec,...)
static const WCHAR data6[]
static UINT add_entry(const char *file, int line, const char *type, MSIHANDLE hdb, const char *values, const char *insert)
static const char * join_res_sixth[][2]
#define add_custom_action_entry(hdb, values)
static void test_dbmerge(void)
static const WCHAR _Tables[]
static void test_alter(void)
static void transform_view(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
#define ERROR_INVALID_PARAMETER
#define GetCurrentDirectoryW(x, y)
#define ReadFile(a, b, c, d, e)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define ERROR_NO_MORE_ITEMS
#define ERROR_INVALID_HANDLE
#define FILE_ATTRIBUTE_NORMAL
#define MultiByteToWideChar
BOOL WINAPI CopyFileA(IN LPCSTR lpExistingFileName, IN LPCSTR lpNewFileName, IN BOOL bFailIfExists)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI RemoveDirectoryA(IN LPCSTR lpPathName)
BOOL WINAPI CreateDirectoryA(IN LPCSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI SetEndOfFile(HANDLE hFile)
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI GetCurrentDirectoryA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
UINT WINAPI MsiDatabaseImportA(MSIHANDLE handle, const char *szFolder, const char *szFilename)
UINT WINAPI MsiOpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIHANDLE *phDB)
UINT WINAPI MsiDatabaseMergeA(MSIHANDLE hDatabase, MSIHANDLE hDatabaseMerge, const char *szTableName)
UINT WINAPI MsiDatabaseExportA(MSIHANDLE handle, const char *szTable, const char *szFolder, const char *szFilename)
UINT WINAPI MsiCloseHandle(MSIHANDLE handle)
UINT WINAPI MsiDoActionA(MSIHANDLE hInstall, LPCSTR szAction)
UINT WINAPI MsiOpenPackageA(LPCSTR szPackage, MSIHANDLE *phPackage)
UINT WINAPI MsiGetPropertyA(MSIHANDLE hinst, const char *name, char *buf, DWORD *sz)
int WINAPI MsiRecordGetInteger(MSIHANDLE handle, UINT iField)
UINT WINAPI MsiRecordGetStringA(MSIHANDLE handle, UINT iField, char *szValue, DWORD *pcchValue)
MSIHANDLE WINAPI MsiCreateRecord(UINT cParams)
UINT WINAPI MsiRecordGetStringW(MSIHANDLE handle, UINT iField, WCHAR *szValue, DWORD *pcchValue)
BOOL WINAPI MsiRecordIsNull(MSIHANDLE handle, UINT iField)
UINT WINAPI MsiRecordSetInteger(MSIHANDLE handle, UINT iField, int iVal)
UINT WINAPI MsiRecordSetStreamA(MSIHANDLE hRecord, UINT iField, const char *szFilename)
UINT WINAPI MsiRecordSetStringA(MSIHANDLE handle, UINT iField, const char *szValue)
UINT WINAPI MsiRecordReadStream(MSIHANDLE handle, UINT iField, char *buf, DWORD *sz)
UINT WINAPI MsiRecordGetFieldCount(MSIHANDLE handle)
UINT WINAPI MsiSummaryInfoSetPropertyA(MSIHANDLE handle, UINT uiProperty, UINT uiDataType, INT iValue, FILETIME *pftValue, const char *szValue)
UINT WINAPI MsiSummaryInfoGetPropertyA(MSIHANDLE handle, UINT uiProperty, UINT *puiDataType, INT *piValue, FILETIME *pftValue, char *szValueBuf, DWORD *pcchValueBuf)
UINT WINAPI MsiGetSummaryInformationA(MSIHANDLE hDatabase, const char *szDatabase, UINT uiUpdateCount, MSIHANDLE *pHandle)
UINT WINAPI MsiSummaryInfoGetPropertyCount(MSIHANDLE hSummaryInfo, UINT *pCount)
UINT WINAPI MsiSummaryInfoPersist(MSIHANDLE handle)
HRESULT WINAPI StgOpenStorage(const OLECHAR *pwcsName, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen)
HRESULT WINAPI StgCreateDocfile(LPCOLESTR pwcsName, DWORD grfMode, DWORD reserved, IStorage **ppstgOpen)
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
#define check(expected, result)
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLboolean GLenum GLenum GLvoid * values
GLuint GLsizei GLsizei * length
GLboolean GLboolean GLboolean GLboolean a
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
int WINAPI lstrcmpA(LPCSTR lpString1, LPCSTR lpString2)
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
struct task_struct * current
#define sprintf(buf, format,...)
static PEXPLICIT_ACCESSW *static HMODULE hmod
static const WCHAR desc[]
static MSIHANDLE create_package_db(void)
static HGLOBAL create_storage(void)
INTERNETFEATURELIST feature
#define MAX_FEATURE_CHARS
UINT WINAPI MsiViewModify(MSIHANDLE hView, MSIMODIFY eModifyMode, MSIHANDLE hRecord)
UINT WINAPI MsiViewClose(MSIHANDLE hView)
UINT WINAPI MsiDatabaseApplyTransformA(MSIHANDLE hdb, const char *transform, int error_cond)
UINT WINAPI MsiViewExecute(MSIHANDLE hView, MSIHANDLE hRec)
UINT WINAPI MsiDatabaseGenerateTransformA(MSIHANDLE hdb, MSIHANDLE hdbref, const char *szTransformFile, int iReserved1, int iReserved2)
UINT WINAPI MsiDatabaseGetPrimaryKeysA(MSIHANDLE hdb, const char *table, MSIHANDLE *phRec)
UINT WINAPI MsiDatabaseOpenViewW(MSIHANDLE hdb, LPCWSTR szQuery, MSIHANDLE *phView)
UINT WINAPI MsiDatabaseCommit(MSIHANDLE hdb)
MSIDBERROR WINAPI MsiViewGetErrorA(MSIHANDLE handle, char *buffer, DWORD *buflen)
UINT WINAPI MsiViewGetColumnInfo(MSIHANDLE hView, MSICOLINFO info, MSIHANDLE *hRec)
UINT WINAPI MsiDatabaseOpenViewA(MSIHANDLE hdb, const char *szQuery, MSIHANDLE *phView)
UINT WINAPI MsiViewFetch(MSIHANDLE hView, MSIHANDLE *record)
MSICONDITION WINAPI MsiDatabaseIsTablePersistentA(MSIHANDLE hDatabase, const char *szTableName)
@ MSIMODIFY_INSERT_TEMPORARY
@ MSIMODIFY_VALIDATE_DELETE
@ MSIMODIFY_VALIDATE_FIELD
@ MSITRANSFORM_ERROR_VIEWTRANSFORM
@ MSIDBERROR_DUPLICATEKEY
#define MSIDBOPEN_CREATEDIRECT
#define MSIDBOPEN_TRANSACT
#define MSIDBOPEN_READONLY
#define STGM_SHARE_EXCLUSIVE
#define STGM_SHARE_DENY_WRITE
const char int int int static __inline const char * wine_dbgstr_a(const char *s)
void __winetest_cdecl winetest_push_context(const char *fmt,...)
void winetest_pop_context(void)
#define INVALID_FILE_ATTRIBUTES
#define ERROR_OPEN_FAILED
#define ERROR_INSTALL_PACKAGE_REJECTED
#define ERROR_INVALID_TABLE
#define ERROR_BAD_QUERY_SYNTAX
#define ERROR_FUNCTION_FAILED
#define ERROR_DATATYPE_MISMATCH
#define ERROR_INVALID_DATA