34static const char *
msifile =
"winetest-db.msi";
35static const char *
msifile2 =
"winetst2-db.msi";
36static const char *
mstfile =
"winetst-db.mst";
58 "field %u: expected \"%s\", got \"%s\"\n",
i,
expect,
buffer);
63#define check_record(rec, ...) check_record_(__LINE__, rec, __VA_ARGS__)
169 ok (
res,
"Got zero res.\n" );
185 ok(
res ==
TRUE,
"Failed to delete database\n" );
188 ok(
res ==
TRUE,
"Failed to delete database\n" );
235 "CREATE TABLE `Component` ( "
236 "`Component` CHAR(72) NOT NULL, "
237 "`ComponentId` CHAR(38), "
238 "`Directory_` CHAR(72) NOT NULL, "
239 "`Attributes` SHORT NOT NULL, "
240 "`Condition` CHAR(255), "
241 "`KeyPath` CHAR(72) "
242 "PRIMARY KEY `Component`)" );
250 "CREATE TABLE `CustomAction` ( "
251 "`Action` CHAR(72) NOT NULL, "
252 "`Type` SHORT NOT NULL, "
253 "`Source` CHAR(72), "
254 "`Target` CHAR(255) "
255 "PRIMARY KEY `Action`)" );
263 "CREATE TABLE `Directory` ( "
264 "`Directory` CHAR(255) NOT NULL, "
265 "`Directory_Parent` CHAR(255), "
266 "`DefaultDir` CHAR(255) NOT NULL "
267 "PRIMARY KEY `Directory`)" );
275 "CREATE TABLE `FeatureComponents` ( "
276 "`Feature_` CHAR(38) NOT NULL, "
277 "`Component_` CHAR(72) NOT NULL "
278 "PRIMARY KEY `Feature_`, `Component_` )" );
286 "CREATE TABLE `StdDlls` ( "
287 "`File` CHAR(255) NOT NULL, "
288 "`Binary_` CHAR(72) NOT NULL "
289 "PRIMARY KEY `File` )" );
297 "CREATE TABLE `Binary` ( "
298 "`Name` CHAR(72) NOT NULL, "
299 "`Data` CHAR(72) NOT NULL "
300 "PRIMARY KEY `Name` )" );
319#define add_component_entry(hdb, values) add_entry(__FILE__, __LINE__, "Component", hdb, values, \
320 "INSERT INTO `Component` " \
321 "(`Component`, `ComponentId`, `Directory_`, " \
322 "`Attributes`, `Condition`, `KeyPath`) VALUES( %s )")
324#define add_custom_action_entry(hdb, values) add_entry(__FILE__, __LINE__, "CustomAction", hdb, values, \
325 "INSERT INTO `CustomAction` " \
326 "(`Action`, `Type`, `Source`, `Target`) VALUES( %s )")
328#define add_feature_components_entry(hdb, values) add_entry(__FILE__, __LINE__, "FeatureComponents", hdb, values, \
329 "INSERT INTO `FeatureComponents` " \
330 "(`Feature_`, `Component_`) VALUES( %s )")
332#define add_std_dlls_entry(hdb, values) add_entry(__FILE__, __LINE__, "StdDlls", hdb, values, \
333 "INSERT INTO `StdDlls` (`File`, `Binary_`) VALUES( %s )")
335#define add_binary_entry(hdb, values) add_entry(__FILE__, __LINE__, "Binary", hdb, values, \
336 "INSERT INTO `Binary` (`Name`, `Data`) VALUES( %s )")
340 MSIHANDLE hdb = 0, hview = 0, hview2 = 0, hrec = 0;
353 query =
"CREATE TABLE `phone` ( "
354 "`id` INT, `name` CHAR(32), `number` CHAR(32) "
365 query =
"SELECT * FROM phone WHERE number = '8675309'";
374 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
375 "VALUES('1', 'Abe', '8675309')";
399 query =
"SELECT * FROM `phone` WHERE `id` = 1";
405 ok(
r == 3,
"record count wrong\n");
408 ok(
r ==
FALSE,
"field 0 not null\n");
411 ok(
r == 1,
"field 1 contents wrong\n");
415 ok(!
strcmp(
buf,
"Abe"),
"field 2 content incorrect\n");
419 ok(!
strcmp(
buf,
"8675309"),
"field 3 content incorrect\n");
426 query =
"SELECT * FROM `phone` WHERE `id` >= 10";
429 ok(hrec == 0,
"hrec should be null\n");
434 query =
"SELECT * FROM `phone` WHERE `id` < 0";
438 query =
"SELECT * FROM `phone` WHERE `id` <= 0";
442 query =
"SELECT * FROM `phone` WHERE `id` <> 1";
446 query =
"SELECT * FROM `phone` WHERE `id` > 10";
451 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
466 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
493 ok(
r ==
TRUE,
"file didn't exist after commit\n");
507 if (!pMsiDecomposeDescriptorA)
511 desc =
"']gAVn-}f(ZXfeAR6.jiFollowTheWhiteRabbit>3w2x^IGfe?CxI5heAvk.";
513 prod[0] =
feature[0] = comp[0] = 0;
517 ok(
strcmp(prod,
"{90110409-6000-11D3-8CFE-0150048383C9}")==0,
"product wrong\n");
519 ok(
strcmp(comp,
"{A7CD68DB-EF74-49C8-FBB2-A7C463B2AC24}")==0,
"component wrong\n");
522 desc =
"']gAVn-}f(ZXfeAR6.ji"
523 "ThisWillFailIfTheresMoreThanAGuidsChars>"
524 "3w2x^IGfe?CxI5heAvk.";
530 desc =
"']gAVn-}f(ZXfeAR6.jiFollowTheWhiteRabbit<3w2x^IGfe?CxI5heAvk.";
537 ok(!
strcmp(prod,
"{90110409-6000-11D3-8CFE-0150048383C9}"),
"got '%s'\n", prod);
539 ok(!comp[0],
"got '%s'\n", comp);
544 r = pMsiDecomposeDescriptorA(
"yh1BVN)8A$!!!!!MKKSkAlwaysInstalledIntl_1033<", prod,
feature, comp, &
len);
547 ok(!
strcmp(prod,
"{90150000-006E-0409-0000-0000000FF1CE}"),
"got '%s'\n", prod);
549 ok(!comp[0],
"got '%s'\n", comp);
555 desc =
"']gAVn-}f(ZXfeAR6.ji"
556 "ThisWillWorkIfTheresLTEThanAGuidsChars>"
557 "3w2x^IGfe?CxI5heAvk."
582 ok(
len == 0,
"length wrong\n");
675 r =
try_query( hdb,
"CREATE TABLE `a` (`b`)");
678 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) )");
681 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL)");
684 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY)");
687 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY)");
690 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY)");
693 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY 'b')");
696 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY `b')");
699 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY `b')");
702 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHA(72) NOT NULL PRIMARY KEY `b`)");
705 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(-1) NOT NULL PRIMARY KEY `b`)");
708 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(720) NOT NULL PRIMARY KEY `b`)");
711 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL KEY `b`)");
714 r =
try_query( hdb,
"CREATE TABLE `a` (`` CHAR(72) NOT NULL PRIMARY KEY `b`)");
717 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY `b`)");
720 r =
try_query( hdb,
"CREATE TABLE `a` (`b` CHAR(72) NOT NULL PRIMARY KEY `b`)");
723 r =
try_query( hdb,
"CREATE TABLE `aa` (`b` CHAR(72) NOT NULL, `c` "
724 "CHAR(72), `d` CHAR(255) NOT NULL LOCALIZABLE PRIMARY KEY `b`)");
730 r =
try_query( hdb,
"CREATE TABLE `blah` (`foo` CHAR(72) NOT NULL "
731 "PRIMARY KEY `foo`)");
740 r =
try_query( hdb,
"CREATE TABLE `boo` (`foo` CHAR(72) NOT NULL "
741 "PRIMARY KEY `ba`)");
744 r =
try_query( hdb,
"CREATE TABLE `bee` (`foo` CHAR(72) NOT NULL )");
747 r =
try_query( hdb,
"CREATE TABLE `temp` (`t` CHAR(72) NOT NULL "
751 r =
try_query( hdb,
"CREATE TABLE `c` (`b` CHAR NOT NULL PRIMARY KEY `b`)");
757 r =
try_query( hdb,
"select * from c where b = 'x");
760 r =
try_query( hdb,
"select * from c where b = 'x'");
769 r =
try_query( hdb,
"select * from c where b = x");
772 r =
try_query( hdb,
"select * from c where b = \"x\"");
775 r =
try_query( hdb,
"select * from c where b = 'x'");
778 r =
try_query( hdb,
"select * from c where b = '\"x'");
783 r =
try_query( hdb,
"select * from c where b = '\\\'x'");
790 r =
try_query( hdb,
"select `c`.`b` from `c` order by `c`.`order`");
793 r =
try_query( hdb,
"select `c`.b` from `c`");
796 r =
try_query( hdb,
"select `c`.`b from `c`");
802 r =
try_query( hdb,
"select `c.`b` from `c`");
805 r =
try_query( hdb,
"select c`.`b` from `c`");
811 r =
try_query( hdb,
"select `c`.`b` from c`");
814 r =
try_query( hdb,
"select `c`.`b` from `c");
820 r =
try_query( hdb,
"CREATE TABLE `\5a` (`b` CHAR NOT NULL PRIMARY KEY `b`)" );
826 r =
try_query( hdb,
"CREATE TABLE `a\5` (`b` CHAR NOT NULL PRIMARY KEY `b`)" );
832 r =
try_query( hdb,
"CREATE TABLE `-a` (`b` CHAR NOT NULL PRIMARY KEY `b`)" );
838 r =
try_query( hdb,
"CREATE TABLE `a-` (`b` CHAR NOT NULL PRIMARY KEY `b`)" );
848 ok(
r ==
TRUE,
"file didn't exist after commit\n");
866 query =
"CREATE TABLE `phone` ( "
867 "`id` INT, `name` CHAR(32), `number` CHAR(32) "
872 query =
"CREATE TABLE `_Validation` ( "
873 "`Table` CHAR(32) NOT NULL, `Column` CHAR(32) NOT NULL, "
874 "`Nullable` CHAR(4) NOT NULL, `MinValue` INT, `MaxValue` INT, "
875 "`KeyTable` CHAR(255), `KeyColumn` SHORT, `Category` CHAR(32), "
876 "`Set` CHAR(255), `Description` CHAR(255) PRIMARY KEY `Table`, `Column`)";
880 query =
"INSERT INTO `_Validation` ( `Table`, `Column`, `Nullable` ) "
881 "VALUES('phone', 'id', 'N')";
885 query =
"SELECT * FROM `phone`";
895 ok(sz == 0,
"got size %lu\n", sz);
916 ok(sz == 0,
"got size %lu\n", sz);
948 ok(sz == 2,
"got size %lu\n", sz);
990 query =
"SELECT * FROM `phone`";
1027 query =
"SELECT * FROM `phone`";
1042 ok(hrec != 0,
"MsiCreateRecord failed\n");
1059 ok(hrec != 0,
"MsiCreateRecord failed\n");
1095 query =
"SELECT * FROM `phone` WHERE `id` = 1";
1120 query =
"SELECT * FROM `phone` ORDER BY `id`";
1174 ok( hdb,
"failed to create db\n");
1203 ok( rec == 0,
"returned a record\n");
1275 ok( hdb,
"failed to create db\n");
1278 "CREATE TABLE `Properties` "
1279 "( `Property` CHAR(255), "
1280 " `Value` CHAR(1), "
1282 " `Integervalue` INTEGER, "
1283 " `Shortvalue` SHORT, "
1284 " `Longvalue` LONG, "
1285 " `Longcharvalue` LONGCHAR, "
1286 " `Charvalue` CHAR, "
1287 " `Localizablevalue` CHAR LOCALIZABLE "
1288 " PRIMARY KEY `Property`)" );
1293 ok( rec,
"failed to get column info record\n" );
1294 check_record(rec, 9,
"S255",
"S1",
"I2",
"I2",
"I2",
"I4",
"S0",
"S0",
"L0");
1310 ok( rec,
"failed to get column info record\n" );
1311 check_record(rec, 9,
"Property",
"Value",
"Intvalue",
"Integervalue",
"Shortvalue",
1312 "Longvalue",
"Longcharvalue",
"Charvalue",
"Localizablevalue");
1316 "CREATE TABLE `Binary` "
1317 "( `Name` CHAR(255), `Data` OBJECT PRIMARY KEY `Name`)" );
1322 ok( rec,
"failed to get column info record\n" );
1332 ok( rec,
"failed to get column info record\n" );
1337 "CREATE TABLE `UIText` "
1338 "( `Key` CHAR(72) NOT NULL, `Text` CHAR(255) LOCALIZABLE PRIMARY KEY `Key`)" );
1345 ok( rec,
"failed to get column info record\n" );
1350 ok( rec,
"failed to get column info record\n" );
1363 const char file[] =
"phone.txt";
1368 "id\tname\tnumber\r\n"
1371 "1\tAbe\t8675309\r\n";
1380 query =
"CREATE TABLE `phone` ( "
1381 "`id` INT, `name` CHAR(32), `number` CHAR(32) "
1382 "PRIMARY KEY `id`)";
1393 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
1394 "VALUES('1', 'Abe', '8675309')";
1425 ok(0,
"failed to open file %s\n",
path);
1434 const char insert_query[] =
1435 "INSERT INTO `strings` ( `id`, `val` ) VALUES('1', 'Z')";
1449 "CREATE TABLE `strings` ( `id` INT, `val` CHAR(0) PRIMARY KEY `id`)");
1454 len =
strchr(insert_query,
'Z') - insert_query;
1499 ok( hdb,
"failed to create db\n");
1502 "CREATE TABLE `Properties` "
1503 "( `Property` CHAR(255), `Value` CHAR(1) PRIMARY KEY `Property`)" );
1507 "INSERT INTO `Properties` "
1508 "( `Value`, `Property` ) VALUES ( 'Prop', 'value' )" );
1521 ok( rec,
"failed to get column info record\n" );
1527 ok( rec,
"failed to get column info record\n" );
1532 "SELECT * FROM `_Streams` WHERE `Name` = '\5SummaryInformation'", &
view );
1558 "SELECT * FROM `_Streams` WHERE `Name` = '\5SummaryInformation'", &
view );
1583 "INSERT INTO `_Streams` ( `Name`, `Data` ) VALUES ( ?, ? )", &
view );
1605 "INSERT INTO `_Streams` ( `Name`, `Data` ) VALUES ( ?, ? )", &
view );
1627 "INSERT INTO `_Streams` ( `Name`, `Data` ) VALUES ( ?, ? )", &
view );
1638 "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data'", &
view );
1663 "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data1'", &
view );
1697 "UPDATE `_Streams` SET `Data` = ? WHERE `Name` = 'data1'", &
view );
1708 "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data1'", &
view );
1737 ok( hdb,
"failed to create db\n");
1745 "INSERT INTO `_Streams` ( `Name`, `Data` ) VALUES ( ?, ? )", &
view );
1757 "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data'", &
view );
1779 "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data'", &
view );
1790 "DELETE FROM `_Streams` WHERE `Name` = 'data'", &
view );
1826 query =
"CREATE TABLE `Binary` ( `Name` CHAR(72) NOT NULL, `ID` INT NOT NULL, `Data` OBJECT PRIMARY KEY `Name`, `ID`)";
1837 query =
"INSERT INTO `Binary` ( `Name`, `ID`, `Data` ) VALUES ( 'encryption.dll.CB4E6205_F99A_4C51_ADD4_184506EFAB87', 10000, ? )";
1853 query =
"CREATE TABLE `Binary` ( `Name` CHAR(72) NOT NULL, `ID` INT NOT NULL, `Data` OBJECT PRIMARY KEY `Name`, `ID`)";
1863 query =
"INSERT INTO `Binary` ( `Name`, `ID`, `Data` ) VALUES ( 'filename1', 1, ? )";
1867 query =
"INSERT INTO `Binary` ( `Name`, `ID`, `Data` ) VALUES ( 'filename1', 1, ? )";
1884 query =
"SELECT * FROM `_Streams`";
1891 ok( !
lstrcmpA(
file,
"Binary.filename1.1"),
"Expected 'Binary.filename1.1', got %s\n",
file );
1903 query =
"SELECT * FROM `Binary`";
1934 ok( hdb,
"failed to create db\n");
1937 "CREATE TABLE `IESTable` ("
1938 "`Action` CHAR(64), "
1939 "`Condition` CHAR(64), "
1940 "`Sequence` LONG PRIMARY KEY `Sequence`)");
1941 ok(
r ==
S_OK,
"Cannot create IESTable table: %d\n",
r);
1944 "CREATE TABLE `CATable` ("
1945 "`Action` CHAR(64), "
1946 "`Type` LONG PRIMARY KEY `Type`)");
1947 ok(
r ==
S_OK,
"Cannot create CATable table: %d\n",
r);
1949 r =
run_query(hdb, 0,
"INSERT INTO `IESTable` "
1950 "( `Action`, `Condition`, `Sequence`) "
1951 "VALUES ( 'clean', 'cond4', 4)");
1952 ok(
r ==
S_OK,
"cannot add entry to IESTable table:%d\n",
r );
1954 r =
run_query(hdb, 0,
"INSERT INTO `IESTable` "
1955 "( `Action`, `Condition`, `Sequence`) "
1956 "VALUES ( 'depends', 'cond1', 1)");
1957 ok(
r ==
S_OK,
"cannot add entry to IESTable table:%d\n",
r );
1959 r =
run_query(hdb, 0,
"INSERT INTO `IESTable` "
1960 "( `Action`, `Condition`, `Sequence`) "
1961 "VALUES ( 'build', 'cond2', 2)");
1962 ok(
r ==
S_OK,
"cannot add entry to IESTable table:%d\n",
r );
1964 r =
run_query(hdb, 0,
"INSERT INTO `IESTable` "
1965 "( `Action`, `Condition`, `Sequence`) "
1966 "VALUES ( 'build2', 'cond6', 6)");
1967 ok(
r ==
S_OK,
"cannot add entry to IESTable table:%d\n",
r );
1969 r =
run_query(hdb, 0,
"INSERT INTO `IESTable` "
1970 "( `Action`, `Condition`, `Sequence`) "
1971 "VALUES ( 'build', 'cond3', 3)");
1972 ok(
r ==
S_OK,
"cannot add entry to IESTable table:%d\n",
r );
1974 r =
run_query(hdb, 0,
"INSERT INTO `CATable` "
1975 "( `Action`, `Type` ) "
1976 "VALUES ( 'build', 32)");
1977 ok(
r ==
S_OK,
"cannot add entry to CATable table:%d\n",
r );
1979 r =
run_query(hdb, 0,
"INSERT INTO `CATable` "
1980 "( `Action`, `Type` ) "
1981 "VALUES ( 'depends', 64)");
1982 ok(
r ==
S_OK,
"cannot add entry to CATable table:%d\n",
r );
1984 r =
run_query(hdb, 0,
"INSERT INTO `CATable` "
1985 "( `Action`, `Type` ) "
1986 "VALUES ( 'clean', 63)");
1987 ok(
r ==
S_OK,
"cannot add entry to CATable table:%d\n",
r );
1989 r =
run_query(hdb, 0,
"INSERT INTO `CATable` "
1990 "( `Action`, `Type` ) "
1991 "VALUES ( 'build2', 34)");
1992 ok(
r ==
S_OK,
"cannot add entry to CATable table:%d\n",
r );
1993 query =
"Select IESTable.Condition from CATable, IESTable where "
1994 "CATable.Action = IESTable.Action and CATable.Type = 32";
2026 ok( hdb,
"failed to create db\n");
2029 "CREATE TABLE `Media` ("
2030 "`DiskId` SHORT NOT NULL, "
2031 "`LastSequence` LONG, "
2032 "`DiskPrompt` CHAR(64) LOCALIZABLE, "
2033 "`Cabinet` CHAR(255), "
2034 "`VolumeLabel` CHAR(32), "
2035 "`Source` CHAR(72) "
2036 "PRIMARY KEY `DiskId`)" );
2037 ok(
r ==
S_OK,
"cannot create Media table: %d\n",
r );
2039 r =
run_query( hdb, 0,
"INSERT INTO `Media` "
2040 "( `DiskId`, `LastSequence`, `DiskPrompt`, `Cabinet`, `VolumeLabel`, `Source` ) "
2041 "VALUES ( 1, 0, '', 'zero.cab', '', '' )" );
2042 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r );
2044 r =
run_query( hdb, 0,
"INSERT INTO `Media` "
2045 "( `DiskId`, `LastSequence`, `DiskPrompt`, `Cabinet`, `VolumeLabel`, `Source` ) "
2046 "VALUES ( 2, 1, '', 'one.cab', '', '' )" );
2047 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r );
2049 r =
run_query( hdb, 0,
"INSERT INTO `Media` "
2050 "( `DiskId`, `LastSequence`, `DiskPrompt`, `Cabinet`, `VolumeLabel`, `Source` ) "
2051 "VALUES ( 3, 2, '', 'two.cab', '', '' )" );
2052 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r );
2054 query =
"SELECT * FROM `Media`";
2057 check_record(rec, 6,
"1",
"0",
"",
"zero.cab",
"",
"");
2060 query =
"SELECT * FROM `Media` WHERE `LastSequence` >= 1";
2066 query =
"SELECT `DiskId` FROM `Media` WHERE `LastSequence` >= 1 AND DiskId >= 0";
2092 query =
"SELECT * FROM `Media` WHERE `DiskPrompt` IS NULL";
2098 query =
"SELECT * FROM `Media` WHERE `DiskPrompt` < 'Cabinet'";
2104 query =
"SELECT * FROM `Media` WHERE `DiskPrompt` > 'Cabinet'";
2110 query =
"SELECT * FROM `Media` WHERE `DiskPrompt` <> 'Cabinet'";
2116 query =
"SELECT * FROM `Media` WHERE `DiskPrompt` = 'Cabinet'";
2124 query =
"SELECT * FROM `Media` WHERE `DiskPrompt` = ?";
2143static const CHAR test_data[] =
"FirstPrimaryColumn\tSecondPrimaryColumn\tShortInt\tShortIntNullable\tLongInt\tLongIntNullable\tString\tLocalizableString\tLocalizableStringNullable\n"
2144 "s255\ti2\ti2\tI2\ti4\tI4\tS255\tS0\ts0\n"
2145 "TestTable\tFirstPrimaryColumn\n"
2146 "stringage\t5\t2\t\t2147483640\t-2147483640\tanother string\tlocalizable\tduh\n";
2150 "TwoPrimary\tPrimaryOne\tPrimaryTwo\n"
2155 "s72\ts72\ts72\ts72\ts72\ts72\n"
2157 "a\tb\tc\td\te\tf\n"
2158 "g\th\ti\t\rj\tk\tl\r\n";
2161 "s72\ts72\ts72\ts72\ts72\ts72\n"
2163 "a\tb\tc\td\te\tf\n"
2164 "g\th\ti\tj\tk\tl\r\n";
2168 "_SummaryInformation\tPropertyId\n"
2170 "2\tInstaller Database\n"
2171 "3\tInstaller description\n"
2174 "6\tInstaller comments\n"
2175 "7\tIntel;1033,2057\n"
2176 "9\t{12345678-1234-1234-1234-123456789012}\n"
2177 "12\t2009/04/12 15:46:11\n"
2178 "13\t2009/04/12 15:46:11\n"
2225 query =
"SELECT * FROM `_SummaryInformation`";
2242 ok(int_value == 1252,
"Expected 1252, got %d\n", int_value);
2244 size =
sizeof(str_value);
2248 ok(
size == 18,
"Expected 18, got %lu\n",
size);
2249 ok(!
strcmp(str_value,
"Installer Database"),
2250 "Expected \"Installer Database\", got %s\n", str_value);
2252 size =
sizeof(str_value);
2256 ok(!
strcmp(str_value,
"Installer description"),
2257 "Expected \"Installer description\", got %s\n", str_value);
2259 size =
sizeof(str_value);
2264 "Expected \"WineHQ\", got %s\n", str_value);
2266 size =
sizeof(str_value);
2270 ok(!
strcmp(str_value,
"Installer"),
2271 "Expected \"Installer\", got %s\n", str_value);
2273 size =
sizeof(str_value);
2277 ok(!
strcmp(str_value,
"Installer comments"),
2278 "Expected \"Installer comments\", got %s\n", str_value);
2280 size =
sizeof(str_value);
2284 ok(!
strcmp(str_value,
"Intel;1033,2057"),
2285 "Expected \"Intel;1033,2057\", got %s\n", str_value);
2287 size =
sizeof(str_value);
2291 ok(!
strcmp(str_value,
"{12345678-1234-1234-1234-123456789012}"),
2292 "Expected \"{12345678-1234-1234-1234-123456789012}\", got %s\n", str_value);
2305 ok(int_value == 200,
"Expected 200, got %d\n", int_value);
2310 ok(int_value == 2,
"Expected 2, got %d\n", int_value);
2315 ok(int_value == 2,
"Expected 2, got %d\n", int_value);
2317 size =
sizeof(str_value);
2321 ok(!
strcmp(str_value,
"Vim"),
"Expected \"Vim\", got %s\n", str_value);
2357 query =
"SELECT * FROM `TestTable`";
2363 check_record(rec, 9,
"FirstPrimaryColumn",
"SecondPrimaryColumn",
"ShortInt",
2364 "ShortIntNullable",
"LongInt",
"LongIntNullable",
"String",
2365 "LocalizableString",
"LocalizableStringNullable");
2370 check_record(rec, 9,
"s255",
"i2",
"i2",
"I2",
"i4",
"I4",
"S255",
"S0",
"s0");
2373 query =
"SELECT * FROM `TestTable`";
2376 check_record(rec, 9,
"stringage",
"5",
"2",
"",
"2147483640",
"-2147483640",
2377 "another string",
"localizable",
"duh");
2383 query =
"SELECT * FROM `TwoPrimary`";
2412 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
2419 query =
"SELECT * FROM `Table`";
2430 check_record(rec, 6,
"s72",
"s72",
"s72",
"s72",
"s72",
"s72");
2436 query =
"SELECT * FROM `Table`";
2455 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
2466 "filename1\tfilename1.ibd\r\n";
2493 query =
"SELECT * FROM `Binary`";
2506 ok(!
lstrcmpA(
buf,
"just some words"),
"Expected 'just some words', got %s\n",
buf);
2526 ok( hdb,
"failed to create db\n");
2534 query =
"CREATE TABLE `Table` ( `One` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
2542 query =
"CREATE TABLE `?` ( `One` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
2555 query =
"CREATE TABLE ? ( `One` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
2561 query =
"CREATE TABLE `Mable` ( `?` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
2570 query =
"CREATE TABLE `Mable` ( `?` SHORT NOT NULL, `?` CHAR(255) PRIMARY KEY `One`)";
2580 query =
"CREATE TABLE `Mable` ( `?` SHORT NOT NULL, `?` CHAR(255) PRIMARY KEY `?`)";
2585 query =
"CREATE TABLE `Mable` ( `?`, `?` PRIMARY KEY `?`)";
2590 query =
"CREATE TABLE `Mable` ( ? SHORT NOT NULL, ? CHAR(255) PRIMARY KEY ?)";
2598 query =
"CREATE TABLE `Mable` ( ? )";
2609 query =
"CREATE TABLE `?` ( `?` SHORT NOT NULL, `?` CHAR(255) PRIMARY KEY `?`)";
2615 query =
"INSERT INTO `Table` ( `One`, `Two` ) VALUES ( 5, 'hello' )";
2626 query =
"INSERT INTO `Table` ( `One`, `Two` ) VALUES ( ?, '?' )";
2637 query =
"INSERT INTO `Table` ( `?`, `?` ) VALUES ( ?, '?' )";
2646 query =
"INSERT INTO `Table` ( `?`, `?` ) VALUES ( 3, 'yellow' )";
2654 query =
"INSERT INTO `?` ( `One`, `Two` ) VALUES ( 2, 'green' )";
2664 query =
"INSERT INTO `?` ( `One`, `Two` ) VALUES ( ?, '?' )";
2676 query =
"INSERT INTO `?` ( `?`, `?` ) VALUES ( ?, '?' )";
2685 query =
"INSERT INTO `Table` ( `One`, `Two` ) VALUES ( ?, '?' )";
2694 query =
"INSERT INTO `Table` ( `One`, `Two` ) VALUES ( ?, ? )";
2703#define MY_NVIEWS 4000
2713 ok( hdb,
"failed to create db\n");
2715 memset(hviews, 0,
sizeof(hviews));
2718 static char szQueryBuf[256] =
"SELECT * from `_Tables`";
2719 hviews[
i] = 0xdeadbeeb;
2722 hviews[
i] == 0 || (
i && (hviews[
i] == hviews[
i-1])))
2729 if (hviews[
i] != 0 && hviews[
i] != 0xdeadbeeb) {
2767 query =
"CREATE TABLE `AAR` ( `BAR` SHORT NOT NULL, `CAR` CHAR(255) PRIMARY KEY `CAR`)";
2771 query =
"INSERT INTO `AAR` ( `BAR`, `CAR` ) VALUES ( 1, 'vw' )";
2775 query =
"INSERT INTO `AAR` ( `BAR`, `CAR` ) VALUES ( 2, 'bmw' )";
2779 query =
"UPDATE `MOO` SET `OOO` = 'c' WHERE `NOO` = 1";
2783 query =
"DELETE FROM `MOO` WHERE `NOO` = 3";
2795 query =
"INSERT INTO `BINARY` ( `ID`, `BLOB` ) VALUES ( ?, ? )";
2801 query =
"ALTER TABLE `MOO` ADD `COW` INTEGER";
2805 query =
"ALTER TABLE `MOO` ADD `PIG` INTEGER";
2809 query =
"UPDATE `MOO` SET `PIG` = 5 WHERE `NOO` = 1";
2813 query =
"CREATE TABLE `Property` ( `Property` CHAR(72) NOT NULL, "
2814 "`Value` CHAR(0) PRIMARY KEY `Property`)";
2818 query =
"INSERT INTO `Property` ( `Property`, `Value` ) VALUES ( 'prop', 'val' )";
2838static const WCHAR name2[] = { 0x4840, 0x3b3f, 0x43f2, 0x4438, 0x45b1, 0 };
2839static const WCHAR name3[] = { 0x4840, 0x3f7f, 0x4164, 0x422f, 0x4836, 0 };
2840static const WCHAR name4[] = { 0x4840, 0x3f3f, 0x4577, 0x446c, 0x3b6a, 0x45e4, 0x4824, 0 };
2841static const WCHAR name5[] = { 0x4840, 0x3f3f, 0x4577, 0x446c, 0x3e6a, 0x44b2, 0x482f, 0 };
2843static const WCHAR name7[] = { 0x4840, 0x3c8b, 0x3a97, 0x409b, 0 };
2844static const WCHAR name8[] = { 0x3c8b, 0x3a97, 0x409b, 0x387e, 0 };
2845static const WCHAR name9[] = { 0x4840, 0x4559, 0x44f2, 0x4568, 0x4737, 0 };
2849 0x0201, 0x0008, 0x8001,
2850 0x0201, 0x0009, 0x8002,
2853 0x0401, 0x0001, 0x8003, 0x0002, 0x9502,
2854 0x0401, 0x0001, 0x8004, 0x0003, 0x9502,
2855 0x0401, 0x0005, 0x0000, 0x0006, 0xbdff,
2856 0x0401, 0x0005, 0x0000, 0x0007, 0x8502,
2857 0x0401, 0x000a, 0x0000, 0x000a, 0xad48,
2858 0x0401, 0x000a, 0x0000, 0x000b, 0x9d00,
2865 "MOOCOWPIGcAARCARBARvwbmwPropertyValuepropval";
2885 0x000a, 0x8001, 0x0004, 0x8005,
2890 0x0201, 0x8001, 0x0001,
2897 0x0201, 0x000c, 0x000d,
2900static const struct {
2926 const CLSID CLSID_MsiTransform = { 0xc1082,0,0,{0xc0,0,0,0,0,0,0,0x46}};
2931 ok(
r ==
S_OK,
"failed to create storage\n");
2935 r = IStorage_SetClass( stg, &CLSID_MsiTransform );
2936 ok(
r ==
S_OK,
"failed to set storage type\n");
2944 ok(0,
"failed to create stream %#lx\n",
r);
2951 ok(0,
"failed to write stream\n");
2952 IStream_Release(stm);
2955 IStorage_Release(stg);
2968 "Installation Database");
2972 "Installation Database");
2984 "{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}");
3032 sprintf(szPackage,
"#%lu", hdb);
3050 static const struct {
3057 {
"MOO",
"OOO",
"1",
"c",
"a" },
3058 {
"MOO",
"COW",
"",
"5378",
"3" },
3059 {
"MOO",
"PIG",
"",
"5378",
"4" },
3060 {
"MOO",
"PIG",
"1",
"5",
"" },
3061 {
"MOO",
"DELETE",
"3",
"",
"" },
3062 {
"BINARY",
"BLOB",
"1",
"BINARY.1",
"" },
3063 {
"BINARY",
"INSERT",
"1",
"",
"" },
3064 {
"AAR",
"CREATE",
"",
"",
"" },
3065 {
"AAR",
"CAR",
"",
"15871",
"1" },
3066 {
"AAR",
"BAR",
"",
"1282",
"2" },
3067 {
"AAR",
"BAR",
"vw",
"1",
"" },
3068 {
"AAR",
"BAR",
"bmw",
"2",
"" },
3069 {
"AAR",
"INSERT",
"vw",
"",
"" },
3070 {
"AAR",
"INSERT",
"bmw",
"",
"" },
3071 {
"Property",
"CREATE",
"",
"",
"" },
3072 {
"Property",
"Property",
"",
"11592",
"1" },
3073 {
"Property",
"Value",
"",
"7424",
"2" },
3074 {
"Property",
"Value",
"prop",
"val",
"" },
3075 {
"Property",
"INSERT",
"prop",
"",
"" }
3090 ok(hdb,
"Failed to create package db\n");
3092 query =
"CREATE TABLE `MOO` ( `NOO` SHORT NOT NULL, `OOO` CHAR(255) PRIMARY KEY `NOO`)";
3096 query =
"INSERT INTO `MOO` ( `NOO`, `OOO` ) VALUES ( 1, 'a' )";
3100 query =
"INSERT INTO `MOO` ( `NOO`, `OOO` ) VALUES ( 2, 'b' )";
3104 query =
"INSERT INTO `MOO` ( `NOO`, `OOO` ) VALUES ( 3, 'c' )";
3108 query =
"CREATE TABLE `BINARY` ( `ID` SHORT NOT NULL, `BLOB` OBJECT PRIMARY KEY `ID`)";
3120 query =
"INSERT INTO `BINARY` ( `ID`, `BLOB` ) VALUES ( ?, ? )";
3148 query =
"select * from `_TransformView`";
3156 check_record(hrec, 5,
"Table",
"Column",
"Row",
"Data",
"Current");
3169 for (
i = 1;
i <= 5;
i++) {
3198 query =
"ALTER TABLE `_TransformView` FREE";
3212 query =
"select `BAR`,`CAR` from `AAR` where `BAR` = 1 AND `CAR` = 'vw'";
3217 query =
"select `BAR`,`CAR` from `AAR` where `BAR` = 2 AND `CAR` = 'bmw'";
3225 query =
"select `NOO`,`OOO` from `MOO` where `NOO` = 1 AND `OOO` = 'c'";
3232 query =
"select `NOO`,`OOO` from `MOO` where `NOO` = 2 AND `OOO` = 'b'";
3239 query =
"select * from `MOO` where `NOO` = 3";
3246 query =
"select `BLOB` from `BINARY` where `ID` = 1";
3255 ok(sz == 9,
"stream data was wrong size\n");
3260 query =
"select * from `MOO`";
3288 skip(
"Not enough rights to perform tests\n");
3308 {
"alveolar",
"procerus" },
3309 {
"septum",
"procerus" },
3310 {
"septum",
"nasalis" },
3311 {
"ramus",
"nasalis" },
3312 {
"malar",
"mentalis" },
3317 {
"nasal",
"septum" },
3318 {
"mandible",
"ramus" },
3323 {
"msvcp.dll",
"abcdefgh" },
3324 {
"msvcr.dll",
"ijklmnop" },
3329 {
"msvcp.dll.01234",
"single.dll.31415" },
3334 {
"malar",
"procerus" },
3339 {
"malar",
"procerus" },
3340 {
"malar",
"procerus" },
3341 {
"malar",
"nasalis" },
3342 {
"malar",
"nasalis" },
3343 {
"malar",
"nasalis" },
3344 {
"malar",
"mentalis" },
3349 {
"malar",
"nasalis" },
3350 {
"malar",
"nasalis" },
3351 {
"malar",
"nasalis" },
3356 {
"msvcp.dll",
"msvcp.dll.01234",
"msvcp.dll.01234",
"abcdefgh" },
3357 {
"msvcr.dll",
"msvcr.dll.56789",
"msvcp.dll.01234",
"abcdefgh" },
3358 {
"msvcp.dll",
"msvcp.dll.01234",
"msvcr.dll.56789",
"ijklmnop" },
3359 {
"msvcr.dll",
"msvcr.dll.56789",
"msvcr.dll.56789",
"ijklmnop" },
3360 {
"msvcp.dll",
"msvcp.dll.01234",
"single.dll.31415",
"msvcp.dll" },
3361 {
"msvcr.dll",
"msvcr.dll.56789",
"single.dll.31415",
"msvcp.dll" },
3366 {
"1",
"2",
"3",
"4",
"7",
"8" },
3367 {
"1",
"2",
"5",
"6",
"7",
"8" },
3368 {
"1",
"2",
"3",
"4",
"9",
"10" },
3369 {
"1",
"2",
"5",
"6",
"9",
"10" },
3370 {
"1",
"2",
"3",
"4",
"11",
"12" },
3371 {
"1",
"2",
"5",
"6",
"11",
"12" },
3382 ok( hdb,
"failed to create db\n");
3407 query =
"CREATE TABLE `One` (`A` SHORT, `B` SHORT PRIMARY KEY `A`)";
3411 query =
"CREATE TABLE `Two` (`C` SHORT, `D` SHORT PRIMARY KEY `C`)";
3415 query =
"CREATE TABLE `Three` (`E` SHORT, `F` SHORT PRIMARY KEY `E`)";
3419 query =
"INSERT INTO `One` (`A`, `B`) VALUES (1, 2)";
3423 query =
"INSERT INTO `Two` (`C`, `D`) VALUES (3, 4)";
3427 query =
"INSERT INTO `Two` (`C`, `D`) VALUES (5, 6)";
3431 query =
"INSERT INTO `Three` (`E`, `F`) VALUES (7, 8)";
3435 query =
"INSERT INTO `Three` (`E`, `F`) VALUES (9, 10)";
3439 query =
"INSERT INTO `Three` (`E`, `F`) VALUES (11, 12)";
3443 query =
"CREATE TABLE `Four` (`G` SHORT, `H` SHORT PRIMARY KEY `G`)";
3447 query =
"CREATE TABLE `Five` (`I` SHORT, `J` SHORT PRIMARY KEY `I`)";
3451 query =
"INSERT INTO `Five` (`I`, `J`) VALUES (13, 14)";
3455 query =
"INSERT INTO `Five` (`I`, `J`) VALUES (15, 16)";
3459 query =
"SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
3460 "FROM `Component`, `FeatureComponents` "
3461 "WHERE `Component`.`Component` = `FeatureComponents`.`Component_` "
3462 "ORDER BY `Feature_`";
3476 ok(
i == 5,
"Expected 5 rows, got %lu\n",
i );
3483 query =
"SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
3484 "FROM `Component`, `FeatureComponents` ";
3497 ok(
i == 24,
"Expected 24 rows, got %lu\n",
i );
3502 query =
"SELECT DISTINCT Component, ComponentId FROM FeatureComponents, Component "
3503 "WHERE FeatureComponents.Component_=Component.Component "
3504 "AND (Feature_='nasalis') ORDER BY Feature_";
3519 ok(
i == 2,
"Expected 2 rows, got %lu\n",
i );
3525 query =
"SELECT `StdDlls`.`File`, `Binary`.`Data` "
3526 "FROM `StdDlls`, `Binary` "
3527 "WHERE `StdDlls`.`Binary_` = `Binary`.`Name` "
3542 ok(
i == 2,
"Expected 2 rows, got %lu\n",
i );
3548 query =
"SELECT `StdDlls`.`Binary_`, `Binary`.`Name` "
3549 "FROM `StdDlls`, `Binary` "
3550 "WHERE `StdDlls`.`File` = `Binary`.`Data` "
3565 ok(
i == 1,
"Expected 1 rows, got %lu\n",
i );
3571 query =
"SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
3572 "FROM `Component`, `FeatureComponents` "
3573 "WHERE `Component`.`Component` = 'zygomatic' "
3574 "AND `FeatureComponents`.`Component_` = 'maxilla' "
3575 "ORDER BY `Feature_`";
3589 ok(
i == 1,
"Expected 1 rows, got %lu\n",
i );
3595 query =
"SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
3596 "FROM `Component`, `FeatureComponents` "
3597 "WHERE `Component` = 'zygomatic' "
3598 "ORDER BY `Feature_`";
3612 ok(
i == 6,
"Expected 6 rows, got %lu\n",
i );
3618 query =
"SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
3619 "FROM `Component`, `FeatureComponents` "
3620 "WHERE `Component` = 'zygomatic' "
3621 "AND `Feature_` = 'nasalis' "
3622 "ORDER BY `Feature_`";
3636 ok(
i == 3,
"Expected 3 rows, got %lu\n",
i );
3642 query =
"SELECT `StdDlls`.`File`, `Binary`.`Data` "
3643 "FROM `StdDlls`, `Binary` ";
3657 ok(
i == 6,
"Expected 6 rows, got %lu\n",
i );
3663 query =
"SELECT * FROM `StdDlls`, `Binary` ";
3678 ok(
i == 6,
"Expected 6 rows, got %lu\n",
i );
3684 query =
"SELECT * FROM `One`, `Two`, `Three` ";
3700 ok(
i == 6,
"Expected 6 rows, got %lu\n",
i );
3706 query =
"SELECT * FROM `Four`, `Five`";
3719 query =
"SELECT * FROM `Nonexistent`, `One`";
3722 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r );
3725 query =
"SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
3726 "FROM `Component`, `FeatureComponents` "
3727 "WHERE `Component`.`Component` = `FeatureComponents`.`Component_` "
3728 "ORDER BY `Feature_`";
3829 ok( hdb,
"failed to create db\n");
3846 query =
"CREATE TABLE `P` ( `B` SHORT NOT NULL, `C` CHAR(255) PRIMARY KEY `C`)";
3853 query =
"CREATE TABLE `P2` ( `B` SHORT NOT NULL, `C` CHAR(255) PRIMARY KEY `C`) HOLD";
3860 query =
"CREATE TABLE `T` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`) HOLD";
3867 query =
"CREATE TABLE `T2` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`)";
3871 query =
"SELECT * FROM `T2`";
3874 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
3879 query =
"CREATE TABLE `T3` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) PRIMARY KEY `C`)";
3886 query =
"CREATE TABLE `T4` ( `B` SHORT NOT NULL, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`)";
3893 query =
"CREATE TABLE `T5` ( `B` SHORT NOT NULL TEMP, `C` CHAR(255) TEMP PRIMARY KEY `C`) HOLD";
3897 query =
"select * from `T`";
3910 r =
do_query(hdb,
"select * from `_Tables` where `Name` = 'T'", &rec);
3916 r =
do_query(hdb,
"select * from `_Columns` where `Table` = 'T' AND `Name` = 'B'", &rec);
3920 r =
do_query(hdb,
"select * from `_Columns` where `Table` = 'T' AND `Name` = 'C'", &rec);
3936 ok( hdb,
"failed to create db\n");
3938 query =
"CREATE TABLE `T` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`)";
3942 query =
"SELECT * FROM `T`";
3946 query =
"CREATE TABLE `T` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`) HOLD";
3950 query =
"SELECT * FROM `T`";
3957 query =
"ALTER TABLE `T` HOLD";
3961 query =
"ALTER TABLE `T` FREE";
3965 query =
"ALTER TABLE `T` FREE";
3969 query =
"ALTER TABLE `T` FREE";
3973 query =
"ALTER TABLE `T` HOLD";
3978 query =
"SELECT * FROM `T`";
3983 query =
"CREATE TABLE `U` ( `A` INTEGER, `B` INTEGER PRIMARY KEY `B`)";
3988 query =
"ALTER TABLE `U` HOLD";
3993 query =
"ALTER TABLE `U` ADD `C`";
3997 query =
"ALTER TABLE `U` ADD `C` INTEGER";
4001 query =
"SELECT * FROM `_Columns` WHERE `Table` = 'U' AND `Name` = 'C'";
4006 query =
"ALTER TABLE `U` ADD `C` INTEGER";
4010 query =
"ALTER TABLE `U` ADD `D` INTEGER TEMPORARY";
4014 query =
"INSERT INTO `U` ( `A`, `B`, `C`, `D` ) VALUES ( 1, 2, 3, 4 )";
4018 query =
"ALTER TABLE `U` ADD `D` INTEGER TEMPORARY HOLD";
4022 query =
"SELECT * FROM `_Columns` WHERE `Table` = 'U' AND `Name` = 'D'";
4026 query =
"INSERT INTO `U` ( `A`, `B`, `C`, `D` ) VALUES ( 5, 6, 7, 8 )";
4030 query =
"SELECT * FROM `U` WHERE `D` = 8";
4034 query =
"ALTER TABLE `U` ADD `D` INTEGER TEMPORARY FREE";
4038 query =
"ALTER COLUMN `D` FREE";
4043 query =
"ALTER TABLE `U` FREE";
4048 query =
"SELECT * FROM `U`";
4053 query =
"SELECT * FROM `U` WHERE `D` = 8";
4057 query =
"INSERT INTO `U` ( `A`, `B`, `C`, `D` ) VALUES ( 9, 10, 11, 12 )";
4062 query =
"ALTER TABLE `U` ADD `E` INTEGER TEMPORARY HOLD";
4067 query =
"ALTER TABLE `U` HOLD";
4071 query =
"INSERT INTO `U` ( `A`, `B`, `C`, `E` ) VALUES ( 13, 14, 15, 16 )";
4075 query =
"SELECT * FROM `U` WHERE `E` = 16";
4080 query =
"ALTER TABLE `U` FREE";
4084 query =
"INSERT INTO `U` ( `A`, `B`, `C`, `E` ) VALUES ( 17, 18, 19, 20 )";
4088 query =
"SELECT * FROM `U` WHERE `E` = 20";
4093 query =
"ALTER TABLE `U` FREE";
4098 query =
"SELECT * FROM `U`";
4103 query =
"SELECT * FROM `U` WHERE `E` = 20";
4107 query =
"INSERT INTO `U` ( `A`, `B`, `C`, `E` ) VALUES ( 20, 21, 22, 23 )";
4112 query =
"ALTER TABLE `U` FREE";
4117 query =
"SELECT * FROM `U`";
4137 query =
"CREATE TABLE `integers` ( "
4138 "`one` SHORT, `two` INT, `three` INTEGER, `four` LONG, "
4139 "`five` SHORT NOT NULL, `six` INT NOT NULL, "
4140 "`seven` INTEGER NOT NULL, `eight` LONG NOT NULL "
4141 "PRIMARY KEY `one`)";
4151 query =
"SELECT * FROM `integers`";
4157 check_record(rec, 8,
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight");
4162 check_record(rec, 8,
"I2",
"I2",
"I2",
"I4",
"i2",
"i2",
"i2",
"i4");
4169 query =
"INSERT INTO `integers` ( `one`, `two`, `three`, `four`, `five`, `six`, `seven`, `eight` )"
4170 "VALUES('', '', '', '', '', '', '', '')";
4179 query =
"SELECT * FROM `integers`";
4184 ok(
r == -1,
"record count wrong: %d\n",
r);
4189 query =
"INSERT INTO `integers` ( `one`, `two`, `three`, `four`, `five`, `six`, `seven`, `eight` )"
4190 "VALUES('', '2', '', '4', '5', '6', '7', '8')";
4196 query =
"SELECT * FROM `integers`";
4201 ok(
r == 8,
"record count wrong: %d\n",
r);
4208 ok(
i == 2,
"Expected 2, got %lu\n",
i);
4210 ok(
i == 4,
"Expected 4, got %lu\n",
i);
4212 ok(
i == 5,
"Expected 5, got %lu\n",
i);
4214 ok(
i == 6,
"Expected 6, got %lu\n",
i);
4216 ok(
i == 7,
"Expected 7, got %lu\n",
i);
4218 ok(
i == 8,
"Expected 8, got %lu\n",
i);
4231 ok(
r ==
TRUE,
"file didn't exist after commit\n");
4245 query =
"CREATE TABLE `Control` ( "
4246 "`Dialog_` CHAR(72) NOT NULL, `Control` CHAR(50) NOT NULL, `Type` SHORT NOT NULL, "
4247 "`X` SHORT NOT NULL, `Y` SHORT NOT NULL, `Width` SHORT NOT NULL, `Height` SHORT NOT NULL,"
4248 "`Attributes` LONG, `Property` CHAR(50), `Text` CHAR(0) LOCALIZABLE, "
4249 "`Control_Next` CHAR(50), `Help` CHAR(50) LOCALIZABLE PRIMARY KEY `Dialog_`, `Control`)";
4260 query =
"INSERT INTO `Control` ( "
4261 "`Dialog_`, `Control`, `Type`, `X`, `Y`, `Width`, `Height`, "
4262 "`Property`, `Text`, `Control_Next`, `Help` )"
4263 "VALUES('ErrorDialog', 'ErrorText', '1', '5', '5', '5', '5', '', '', '', '')";
4274 query =
"INSERT INTO `Control` ( "
4275 "`Dialog_`, `Control`, `Type`, `X`, `Y`, `Width`, `Height`, "
4276 "`Property`, `Text`, `Control_Next`, `Help` )"
4277 "VALUES('ErrorDialog', 'Button', '1', '5', '5', '5', '5', '', '', '', '')";
4288 query =
"INSERT INTO `Control` ( "
4289 "`Dialog_`, `Control`, `Type`, `X`, `Y`, `Width`, `Height`, "
4290 "`Property`, `Text`, `Control_Next`, `Help` )"
4291 "VALUES('AnotherDialog', 'ErrorText', '1', '5', '5', '5', '5', '', '', '', '')";
4302 query =
"UPDATE `NotATable` SET `Text` = 'this is text' WHERE `Dialog_` = 'ErrorDialog'";
4307 query =
"UPDATE `Control` SET `NotAColumn` = 'this is text' WHERE `Dialog_` = 'ErrorDialog'";
4312 query =
"UPDATE `Control` SET `Text` = 'this is text' WHERE `NotAColumn` = 'ErrorDialog'";
4317 query =
"UPDATE `Control` SET `Text` = 'this is text' WHERE `Dialog_` = 'ErrorDialog'";
4328 query =
"SELECT `Text` FROM `Control` WHERE `Control` = 'ErrorText'";
4353 query =
"UPDATE `Control` SET `Text` = 'this is text' WHERE `Dialog_` = 'ErrorDialog' AND `Control` = 'ErrorText'";
4364 query =
"SELECT `Text` FROM `Control` WHERE `Control` = 'ErrorText'";
4389 query =
"UPDATE `Control` SET `Text` = 'this is text'";
4400 query =
"SELECT `Text` FROM `Control`";
4429 query =
"CREATE TABLE `Apple` ( `Banana` CHAR(72) NOT NULL, "
4430 "`Orange` CHAR(72), `Pear` INT PRIMARY KEY `Banana`)";
4434 query =
"INSERT INTO `Apple` ( `Banana`, `Orange`, `Pear` )"
4435 "VALUES('one', 'two', 3)";
4439 query =
"INSERT INTO `Apple` ( `Banana`, `Orange`, `Pear` )"
4440 "VALUES('three', 'four', 5)";
4444 query =
"INSERT INTO `Apple` ( `Banana`, `Orange`, `Pear` )"
4445 "VALUES('six', 'two', 7)";
4453 query =
"UPDATE `Apple` SET `Pear` = ? WHERE `Orange` = ?";
4459 query =
"SELECT `Pear` FROM `Apple` ORDER BY `Orange`";
4469 ok(
r == 8,
"Expected 8, got %d\n",
r);
4477 ok(
r == 8,
"Expected 8, got %d\n",
r);
4485 ok(
r == 5,
"Expected 5, got %d\n",
r);
4512 query =
"CREATE TABLE `_Properties` ( "
4513 "`foo` INT NOT NULL, `bar` INT LOCALIZABLE PRIMARY KEY `foo`)";
4517 query =
"CREATE TABLE `_Storages` ( "
4518 "`foo` INT NOT NULL, `bar` INT LOCALIZABLE PRIMARY KEY `foo`)";
4522 query =
"CREATE TABLE `_Streams` ( "
4523 "`foo` INT NOT NULL, `bar` INT LOCALIZABLE PRIMARY KEY `foo`)";
4527 query =
"CREATE TABLE `_Tables` ( "
4528 "`foo` INT NOT NULL, `bar` INT LOCALIZABLE PRIMARY KEY `foo`)";
4532 query =
"CREATE TABLE `_Columns` ( "
4533 "`foo` INT NOT NULL, `bar` INT LOCALIZABLE PRIMARY KEY `foo`)";
4550 query =
"CREATE TABLE `foo` ( "
4551 "`baz` INT NOT NULL PRIMARY KEY `baz`)";
4555 query =
"CREATE TABLE `bar` ( "
4556 "`foo` INT NOT NULL PRIMARY KEY `foo`)";
4560 query =
"CREATE TABLE `baz` ( "
4561 "`bar` INT NOT NULL, "
4562 "`baz` INT NOT NULL, "
4563 "`foo` INT NOT NULL PRIMARY KEY `bar`)";
4570 query =
"SELECT `Name` FROM `_Tables`";
4602 query =
"SELECT `Table`, `Number`, `Name` FROM `_Columns`";
4658 query =
"CREATE TABLE `foo` ( "
4659 "`bar` LONGCHAR NOT NULL PRIMARY KEY `bar`)";
4664 "( `bar` ) VALUES ( 'A' )");
4668 "( `bar` ) VALUES ( 'B' )");
4672 "( `bar` ) VALUES ( 'C' )");
4676 "( `bar` ) VALUES ( 'D' )");
4680 "( `bar` ) VALUES ( 'E' )");
4684 "( `bar` ) VALUES ( 'F' )");
4687 query =
"CREATE TABLE `bar` ( "
4688 "`foo` LONGCHAR NOT NULL, "
4689 "`baz` LONGCHAR NOT NULL "
4690 "PRIMARY KEY `foo` )";
4695 "( `foo`, `baz` ) VALUES ( 'C', 'E' )");
4699 "( `foo`, `baz` ) VALUES ( 'F', 'A' )");
4703 "( `foo`, `baz` ) VALUES ( 'A', 'B' )");
4707 "( `foo`, `baz` ) VALUES ( 'D', 'E' )");
4714 query =
"SELECT * FROM `bar`";
4767 query =
"CREATE TABLE `bar` ( "
4768 "`foo` LONGCHAR NOT NULL, "
4769 "`baz` LONGCHAR NOT NULL "
4770 "PRIMARY KEY `foo` )";
4778 "( `foo`, `baz` ) VALUES ( '\2', 'A' )");
4782 "( `foo`, `baz` ) VALUES ( '\1', 'B' )");
4785 r =
run_queryW(hdb, 0,
L"INSERT INTO `bar` (`foo`,`baz`) VALUES ('a\x30a','C')");
4788 r =
run_queryW(hdb, 0,
L"INSERT INTO `bar` (`foo`,`baz`) VALUES ('\xe5','D')");
4791 r =
run_queryW(hdb, 0,
L"CREATE TABLE `baz` ( `a\x30a` LONGCHAR NOT NULL, `\xe5` LONGCHAR NOT NULL PRIMARY KEY `a\x30a`)");
4794 r =
run_queryW(hdb, 0,
L"CREATE TABLE `a\x30a` ( `foo` LONGCHAR NOT NULL PRIMARY KEY `foo`)");
4797 r =
run_queryW(hdb, 0,
L"CREATE TABLE `\xe5` ( `foo` LONGCHAR NOT NULL PRIMARY KEY `foo`)");
4800 query =
"SELECT * FROM `bar`";
4835 ok(!
memcmp(bufferW,
L"a\x30a",
sizeof(
L"a\x30a")),
4848 ok(!
memcmp(bufferW,
L"\xe5",
sizeof(
L"\xe5")),
4871 ok(!
memcmp(bufferW,
L"\xe5",
sizeof(
L"\xe5")),
4900 ok( hdb,
"failed to create db\n");
4903 "CREATE TABLE `Table` (`One` CHAR(72), `Two` CHAR(72), `Three` SHORT PRIMARY KEY `One`, `Two`, `Three`)");
4904 ok(
r ==
S_OK,
"cannot create table: %d\n",
r);
4907 "( `One`, `Two`, `Three` ) VALUES ( 'apple', 'one', 1 )");
4908 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r);
4911 "( `One`, `Two`, `Three` ) VALUES ( 'apple', 'two', 1 )");
4912 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r);
4915 "( `One`, `Two`, `Three` ) VALUES ( 'apple', 'two', 2 )");
4916 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r);
4919 "( `One`, `Two`, `Three` ) VALUES ( 'banana', 'three', 3 )");
4920 ok(
r ==
S_OK,
"cannot add file to the Media table: %d\n",
r);
4926 query =
"SELECT * FROM `Table` WHERE `One`=? AND `Two`=? ORDER BY `Three`";
4954 query =
"SELECT * FROM `Table` WHERE `Two`<>? AND `Three`>? ORDER BY `Three`";
4992 query =
"CREATE TABLE `table` (`A` INT, `B` INT PRIMARY KEY `A`)";
4996 query =
"INSERT INTO `table` (`A`, `B`) VALUES (1, 2)";
5000 query =
"INSERT INTO `table` (`A`, `B`) VALUES (3, 4)";
5004 query =
"INSERT INTO `table` (`A`, `B`) VALUES (5, 6)";
5008 query =
"SELECT `B` FROM `table`";
5030 query =
"SELECT * FROM `table`";
5039 ok(
r == 1,
"Expected 1, got %d\n",
r);
5041 ok(
r == 0,
"Expected 0, got %d\n",
r);
5050 ok(
r == 3,
"Expected 3, got %d\n",
r);
5052 ok(
r == 4,
"Expected 4, got %d\n",
r);
5061 ok(
r == 5,
"Expected 5, got %d\n",
r);
5063 ok(
r == 6,
"Expected 6, got %d\n",
r);
5077 query =
"SELECT `B` FROM `table`";
5104 query =
"SELECT * FROM `table`";
5113 ok(
r == 1,
"Expected 1, got %d\n",
r);
5115 ok(
r == 0,
"Expected 0, got %d\n",
r);
5124 ok(
r == 3,
"Expected 3, got %d\n",
r);
5126 ok(
r == 0,
"Expected 0, got %d\n",
r);
5135 ok(
r == 5,
"Expected 5, got %d\n",
r);
5137 ok(
r == 0,
"Expected 0, got %d\n",
r);
5150 query =
"CREATE TABLE `table2` (`A` INT, `B` INT PRIMARY KEY `A`)";
5154 query =
"INSERT INTO `table2` (`A`, `B`) VALUES (?, ?)";
5160 for(
i = 0;
i < test_max;
i++)
5180 query =
"SELECT * FROM `table2` ORDER BY `B`";
5209 query =
"SELECT * FROM `table2` ORDER BY `B`";
5220 ok( ( test_max -
a +
offset) ==
b,
"Got (%d, %d), expected (%d, %d)\n",
5250 query =
"CREATE TABLE `table` (`A` INT, `B` INT PRIMARY KEY `A`)";
5255 query =
"SELECT * FROM `table`";
5262 ok(hrec != 0,
"MsiCreateRecord failed\n");
5280 query =
"SELECT * FROM `table`";
5300 query =
"SELECT * FROM `table`";
5307 ok(hrec != 0,
"MsiCreateRecord failed\n");
5325 query =
"SELECT * FROM `table`";
5344 r =
run_query(hdb, 0,
"CREATE TABLE `table2` (`A` INT, `B` INT, `C` INT, `D` INT PRIMARY KEY `A`,`B`)");
5345 ok(!
r,
"got %u\n",
r);
5348 ok(!
r,
"got %u\n",
r);
5350 ok(!
r,
"got %u\n",
r);
5358 ok(!
r,
"got %u\n",
r);
5364 ok(!
r,
"got %u\n",
r);
5366 ok(!
r,
"got %u\n",
r);
5369 ok(!
r,
"got %u\n",
r);
5378 ok(!
r,
"got %u\n",
r);
5380 ok(!
r,
"got %u\n",
r);
5388 ok(!
r,
"got %u\n",
r);
5394 ok(!
r,
"got %u\n",
r);
5396 ok(!
r,
"got %u\n",
r);
5399 ok(!
r,
"got %u\n",
r);
5404 ok(!
r,
"got %u\n",
r);
5413 ok(!
r,
"got %u\n",
r);
5415 ok(!
r,
"got %u\n",
r);
5421 ok(!
r,
"got %u\n",
r);
5424 ok(!
r,
"got %u\n",
r);
5430 ok(!
r,
"got %u\n",
r);
5432 ok(!
r,
"got %u\n",
r);
5435 ok(!
r,
"got %u\n",
r);
5440 ok(!
r,
"got %u\n",
r);
5445 ok(!
r,
"got %u\n",
r);
5450 ok(!
r,
"got %u\n",
r);
5459 ok(!
r,
"got %u\n",
r);
5461 ok(!
r,
"got %u\n",
r);
5468 ok(!
r,
"got %u\n",
r);
5474 ok(!
r,
"got %u\n",
r);
5476 ok(!
r,
"got %u\n",
r);
5479 ok(!
r,
"got %u\n",
r);
5484 ok(!
r,
"got %u\n",
r);
5489 ok(!
r,
"got %u\n",
r);
5494 ok(!
r,
"got %u\n",
r);
5515 "MOOABAARCDonetwofourfive";
5550 static const WCHAR stringdata[] = {0x4840, 0x3f3f, 0x4577, 0x446c, 0x3b6a, 0x45e4, 0x4824, 0};
5551 static const WCHAR stringpool[] = {0x4840, 0x3f3f, 0x4577, 0x446c, 0x3e6a, 0x44b2, 0x482f, 0};
5552 static const WCHAR moo[] = {0x4840, 0x3e16, 0x4818, 0};
5553 static const WCHAR aar[] = {0x4840, 0x3a8a, 0x481b, 0};
5560 query =
"CREATE TABLE `MOO` (`A` INT, `B` CHAR(72) PRIMARY KEY `A`)";
5564 query =
"CREATE TABLE `AAR` (`C` INT, `D` CHAR(72) PRIMARY KEY `C`)";
5569 query =
"INSERT INTO `MOO` (`A`, `B`) VALUES (1, 'one')";
5574 query =
"INSERT INTO `AAR` (`C`, `D`) VALUES (2, 'two')";
5579 query =
"SELECT * FROM `MOO`";
5604 query =
"INSERT INTO `MOO` (`A`, `B`) VALUES (4, 'four')";
5609 query =
"INSERT INTO `AAR` (`C`, `D`) VALUES (5, 'five')";
5622 query =
"SELECT * FROM `MOO`";
5645 query =
"SELECT * FROM `AAR`";
5678 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5679 ok(stg !=
NULL,
"Expected non-NULL storage\n");
5682 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5683 ok(stm !=
NULL,
"Expected non-NULL stream\n");
5686 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5687 ok(
read == 4,
"Expected 4, got %lu\n",
read);
5690 hr = IStream_Release(stm);
5691 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5694 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5695 ok(stm !=
NULL,
"Expected non-NULL stream\n");
5698 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5699 ok(
read == 8,
"Expected 8, got %lu\n",
read);
5705 hr = IStream_Release(stm);
5706 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5709 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5710 ok(stm !=
NULL,
"Expected non-NULL stream\n");
5713 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5714 ok(
read == 24,
"Expected 24, got %lu\n",
read);
5717 hr = IStream_Release(stm);
5718 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5721 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5722 ok(stm !=
NULL,
"Expected non-NULL stream\n");
5725 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5728 ok(
read == 64,
"Expected 64, got %lu\n",
read);
5732 hr = IStream_Release(stm);
5733 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5735 hr = IStorage_Release(stg);
5736 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5753 query =
"CREATE TABLE `phone` ( "
5754 "`id` INT, `name` CHAR(32), `number` CHAR(32) "
5755 "PRIMARY KEY `id`)";
5759 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
5760 "VALUES('1', 'Alan', '5030581')";
5764 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
5765 "VALUES('2', 'Barry', '928440')";
5769 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
5770 "VALUES('3', 'Cindy', '2937550')";
5774 query =
"SELECT * FROM `phone` WHERE `id` <= 2";
5803 query =
"SELECT * FROM `phone`";
5834static const struct {
5858 hr = IStorage_EnumElements(stg, 0,
NULL, 0, &stgenum);
5859 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5865 hr = IEnumSTATSTG_Next(stgenum, 1, &
stat, &
count);
5870 "Expected table %lu name to match\n",
n);
5873 hr = IStorage_OpenStream(stg,
stat.pwcsName,
NULL,
5875 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5876 ok(stm !=
NULL,
"Expected non-NULL stream\n");
5883 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5892 "Expected table %lu data to match\n",
n);
5894 IStream_Release(stm);
5898 ok(
n == 3,
"Expected 3, got %lu\n",
n);
5900 IEnumSTATSTG_Release(stgenum);
5921 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
5922 ok(stg !=
NULL,
"Expected non-NULL stg\n");
5926 IStorage_Release(stg);
5938 ok(hdb,
"failed to create db\n");
5940 query =
"CREATE TABLE `Empty` ( `A` SHORT NOT NULL PRIMARY KEY `A`)";
5944 query =
"CREATE TABLE `Mesa` ( `A` SHORT NOT NULL, `B` SHORT, `C` SHORT PRIMARY KEY `A`)";
5948 query =
"INSERT INTO `Mesa` ( `A`, `B`, `C` ) VALUES ( 1, 2, 9 )";
5952 query =
"INSERT INTO `Mesa` ( `A`, `B`, `C` ) VALUES ( 3, 4, 7 )";
5956 query =
"INSERT INTO `Mesa` ( `A`, `B`, `C` ) VALUES ( 5, 6, 8 )";
5960 query =
"CREATE TABLE `Sideboard` ( `D` SHORT NOT NULL, `E` SHORT, `F` SHORT PRIMARY KEY `D`)";
5964 query =
"INSERT INTO `Sideboard` ( `D`, `E`, `F` ) VALUES ( 10, 11, 18 )";
5968 query =
"INSERT INTO `Sideboard` ( `D`, `E`, `F` ) VALUES ( 12, 13, 16 )";
5972 query =
"INSERT INTO `Sideboard` ( `D`, `E`, `F` ) VALUES ( 14, 15, 17 )";
5976 query =
"SELECT `A`, `B` FROM `Mesa` ORDER BY `C`";
5986 ok(
val == 3,
"Expected 3, got %d\n",
val);
5989 ok(
val == 4,
"Expected 3, got %d\n",
val);
5997 ok(
val == 5,
"Expected 5, got %d\n",
val);
6000 ok(
val == 6,
"Expected 6, got %d\n",
val);
6008 ok(
val == 1,
"Expected 1, got %d\n",
val);
6011 ok(
val == 2,
"Expected 2, got %d\n",
val);
6021 query =
"SELECT `A`, `D` FROM `Mesa`, `Sideboard` ORDER BY `F`";
6031 ok(
val == 1,
"Expected 1, got %d\n",
val);
6034 ok(
val == 12,
"Expected 12, got %d\n",
val);
6042 ok(
val == 3,
"Expected 3, got %d\n",
val);
6045 ok(
val == 12,
"Expected 12, got %d\n",
val);
6053 ok(
val == 5,
"Expected 5, got %d\n",
val);
6056 ok(
val == 12,
"Expected 12, got %d\n",
val);
6064 ok(
val == 1,
"Expected 1, got %d\n",
val);
6067 ok(
val == 14,
"Expected 14, got %d\n",
val);
6075 ok(
val == 3,
"Expected 3, got %d\n",
val);
6078 ok(
val == 14,
"Expected 14, got %d\n",
val);
6086 ok(
val == 5,
"Expected 5, got %d\n",
val);
6089 ok(
val == 14,
"Expected 14, got %d\n",
val);
6097 ok(
val == 1,
"Expected 1, got %d\n",
val);
6100 ok(
val == 10,
"Expected 10, got %d\n",
val);
6108 ok(
val == 3,
"Expected 3, got %d\n",
val);
6111 ok(
val == 10,
"Expected 10, got %d\n",
val);
6119 ok(
val == 5,
"Expected 5, got %d\n",
val);
6122 ok(
val == 10,
"Expected 10, got %d\n",
val);
6132 query =
"SELECT * FROM `Empty` ORDER BY `A`";
6144 query =
"CREATE TABLE `Buffet` ( `One` CHAR(72), `Two` SHORT PRIMARY KEY `One`)";
6148 query =
"INSERT INTO `Buffet` ( `One`, `Two` ) VALUES ( 'uno', 2)";
6152 query =
"INSERT INTO `Buffet` ( `One`, `Two` ) VALUES ( 'dos', 3)";
6156 query =
"INSERT INTO `Buffet` ( `One`, `Two` ) VALUES ( 'tres', 1)";
6160 query =
"SELECT * FROM `Buffet` WHERE `One` = 'dos' ORDER BY `Two`";
6190 query =
"CREATE TABLE `Table` ( `A` SHORT PRIMARY KEY `A` )";
6194 query =
"SELECT * FROM `Table`";
6234 query =
"SELECT * FROM `Table` WHERE `A` = 2";
6249 query =
"SELECT * FROM `Table` WHERE `A` = 3";
6264 query =
"SELECT * FROM `Table` ORDER BY `A`";
6274 ok(
r == 1,
"Expected 1, got %d\n",
r);
6282 ok(
r == 4,
"Expected 4, got %d\n",
r);
6306 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6310 query =
"INSERT INTO `Table` (`A`) VALUES ('one')";
6314 query =
"INSERT INTO `Table` (`A`) VALUES ('two')";
6318 query =
"DELETE FROM `Table` WHERE `A` = 'one'";
6330 query =
"SELECT * FROM `Table`";
6353 "This is a new 'string' ok\n";
6366 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6370 query =
"INSERT INTO `Table` ( `A` ) VALUES ( 'This is a 'string' ok' )";
6373 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6375 query =
"INSERT INTO `Table` ( `A` ) VALUES ( \"This is a 'string' ok\" )";
6378 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6380 query =
"INSERT INTO `Table` ( `A` ) VALUES ( \"test\" )";
6383 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6385 query =
"INSERT INTO `Table` ( `A` ) VALUES ( 'This is a ''string'' ok' )";
6389 query =
"INSERT INTO `Table` ( `A` ) VALUES ( 'This is a '''string''' ok' )";
6393 query =
"INSERT INTO `Table` ( `A` ) VALUES ( 'This is a \'string\' ok' )";
6397 query =
"INSERT INTO `Table` ( `A` ) VALUES ( 'This is a \"string\" ok' )";
6401 query =
"SELECT * FROM `Table`";
6426 query =
"SELECT * FROM `Table`";
6458 query =
"CREATE TABLE `Table`\r ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6461 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6463 query =
"CREATE TABLE `Table` \r( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6466 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6468 query =
"CREATE\r TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6471 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6473 query =
"CREATE TABLE\r `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6476 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6478 query =
"CREATE TABLE `Table` (\r `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6481 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6483 query =
"CREATE TABLE `Table` ( `A`\r CHAR(72) NOT NULL PRIMARY KEY `A` )";
6486 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6488 query =
"CREATE TABLE `Table` ( `A` CHAR(72)\r NOT NULL PRIMARY KEY `A` )";
6491 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6493 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT\r NULL PRIMARY KEY `A` )";
6496 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6498 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT \rNULL PRIMARY KEY `A` )";
6501 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6503 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL\r PRIMARY KEY `A` )";
6506 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6508 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL \rPRIMARY KEY `A` )";
6511 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6513 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY\r KEY `A` )";
6516 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6518 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY \rKEY `A` )";
6521 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6523 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY\r `A` )";
6526 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6528 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A`\r )";
6531 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6533 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )\r";
6536 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6538 query =
"CREATE TABLE `\rOne` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6542 query =
"CREATE TABLE `Tw\ro` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6546 query =
"CREATE TABLE `Three\r` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6550 query =
"CREATE TABLE `Four` ( `A\r` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6553 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6555 query =
"CREATE TABLE `Four` ( `\rA` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6558 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6560 query =
"CREATE TABLE `Four` ( `A` CHAR(72\r) NOT NULL PRIMARY KEY `A` )";
6563 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6565 query =
"CREATE TABLE `Four` ( `A` CHAR(\r72) NOT NULL PRIMARY KEY `A` )";
6568 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6570 query =
"CREATE TABLE `Four` ( `A` CHAR(72) NOT NULL PRIMARY KEY `\rA` )";
6573 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6575 query =
"CREATE TABLE `Four` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A\r` )";
6578 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6580 query =
"CREATE TABLE `Four` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A\r` )";
6583 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
6585 query =
"SELECT `Name` FROM `_Tables`";
6627 query =
"CREATE TABLE Table ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6631 query =
"CREATE TABLE `Table` ( A CHAR(72) NOT NULL PRIMARY KEY `A` )";
6635 query =
"CREATE TABLE `Table2` ( `A` CHAR(72) NOT NULL PRIMARY KEY A )";
6639 query =
"CREATE TABLE `Table3` ( A CHAR(72) NOT NULL PRIMARY KEY A )";
6643 query =
"SELECT `Name` FROM `_Tables`";
6670 query =
"SELECT `Table`, `Number`, `Name` FROM `_Columns`";
6697 query =
"INSERT INTO Table ( `A` ) VALUES ( 'hi' )";
6701 query =
"INSERT INTO `Table` ( A ) VALUES ( 'hi' )";
6705 query =
"INSERT INTO `Table` ( `A` ) VALUES ( hi )";
6709 query =
"SELECT * FROM Table WHERE `A` = 'hi'";
6713 query =
"SELECT * FROM `Table` WHERE `A` = hi";
6717 query =
"SELECT * FROM Table";
6721 query =
"SELECT * FROM Table2";
6733 query =
"SELECT * FROM `Table` WHERE A = 'hi'";
6777 query =
"SELECT * FROM `_ForceCodepage`";
6781 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
6785 query =
"SELECT * FROM `_ForceCodepage`";
6792 query =
"SELECT * FROM `_ForceCodepage`";
6801 query =
"SELECT * FROM `_ForceCodepage`";
6810 "Expected \"\r\n\r\n0\t_ForceCodepage\r\n\", got \"%s\"\n",
buffer);
6812 create_file_data(
"forcecodepage.idt",
"\r\n\r\n850\t_ForceCodepage\r\n", 0);
6822 "Expected \"\r\n\r\n850\t_ForceCodepage\r\n\", got \"%s\"\n",
buffer);
6824 create_file_data(
"forcecodepage.idt",
"\r\n\r\n9999\t_ForceCodepage\r\n", 0);
6845 query =
"CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL, `B` INT PRIMARY KEY `A` )";
6849 query =
"INSERT INTO `Table` ( `A`, `B` ) VALUES ( 'hi', 1 )";
6853 query =
"SELECT * FROM `Table`";
6865 ok(!
r,
"got %u\n",
r);
6870 ok(!
r,
"got %u\n",
r);
6873 query =
"UPDATE `Table` SET `B` = 2 WHERE `A` = 'hi'";
6881 r =
run_query(hdb, 0,
"UPDATE `Table` SET `B` = NULL WHERE `A` = 'hi'");
6882 ok(!
r,
"got %u\n",
r);
6893 query =
"INSERT INTO `Table` ( `A`, `B` ) VALUES ( 'hello', 3 )";
6897 query =
"SELECT * FROM `Table` WHERE `B` = 3";
6906 query =
"UPDATE `Table` SET `B` = 2 WHERE `A` = 'hello'";
6910 query =
"INSERT INTO `Table` ( `A`, `B` ) VALUES ( 'hithere', 3 )";
6923 ok(!
r,
"got %u\n",
r);
6925 ok(!
r,
"got %u\n",
r);
6928 ok(!
r,
"got %u\n",
r);
6933 ok(!
r,
"got %u\n",
r);
6954 query =
"CREATE TABLE `Table` ( `A` INT, `B` INT PRIMARY KEY `A` )";
6958 query =
"INSERT INTO `Table` ( `A`, `B` ) VALUES ( 1, 2 )";
6962 query =
"INSERT INTO `Table` ( `A`, `B` ) VALUES ( 3, 4 )";
6966 query =
"INSERT INTO `Table` ( `A`, `B` ) VALUES ( 5, 6 )";
6971 query =
"SELECT * FROM `Table` WHERE `B` = 3";
6986 query =
"SELECT * FROM `Table` WHERE `A` = 7";
6996 ok(
r == 7,
"Expected 7, got %d\n",
r);
6999 ok(
r == 8,
"Expected 8, got %d\n",
r);
7010 query =
"SELECT * FROM `Table` WHERE `A` = 7";
7020 ok(
r == 7,
"Expected 7, got %d\n",
r);
7023 ok(
r == 9,
"Expected 9, got %d\n",
r);
7025 query =
"UPDATE `Table` SET `B` = 10 WHERE `A` = 7";
7033 ok(
r == 7,
"Expected 7, got %d\n",
r);
7036 ok(
r == 10,
"Expected 10, got %d\n",
r);
7064 hr = IStream_Write(stm,
"stgdata", 8, &
count);
7069 IStream_Release(stm);
7070 IStorage_Release(stg);
7089 ok(hdb,
"failed to create db\n");
7101 ok(hrec,
"failed to get column info hrecord\n");
7107 ok(hrec,
"failed to get column info hrecord\n");
7121 query =
"INSERT INTO `_Storages` (`Name`, `Data`) VALUES (?, ?)";
7132 query =
"SELECT `Name`, `Data` FROM `_Storages`";
7151 ok(!
lstrcmpA(
buf,
"apple"),
"Expected buf to be unchanged, got %s\n",
buf);
7152 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7168 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
7169 ok(stg !=
NULL,
"Expected non-NULL storage\n");
7174 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
7175 ok(inner !=
NULL,
"Expected non-NULL storage\n");
7179 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
7180 ok(stm !=
NULL,
"Expected non-NULL stream\n");
7183 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
7184 ok(
size == 8,
"Expected 8, got %lu\n",
size);
7187 IStream_Release(stm);
7188 IStorage_Release(inner);
7190 IStorage_Release(stg);
7212 sprintf(package,
"#%lu", hdb);
7216 skip(
"Not enough rights to perform tests\n");
7227 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7239 ok(
size == 5,
"Expected 5, got %lu\n",
size);
7255 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7272 sprintf(package,
"#%lu", hdb);
7282 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7294 ok(
size == 5,
"Expected 5, got %lu\n",
size);
7310 ok(
size == 0,
"Expected 0, got %lu\n",
size);
7329 query =
"CREATE TABLE `One` ( `A` INT PRIMARY KEY `A` )";
7333 query =
"SELECT * FROM `One`";
7337 query =
"SELECT `Name` FROM `_Tables` WHERE `Name` = 'One'";
7351 query =
"SELECT `Table`, `Number`, `Name` FROM `_Columns` WHERE `Table` = 'One'";
7364 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
7369 query =
"DROP `One`";
7372 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7374 query =
"DROP TABLE";
7377 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7379 query =
"DROP TABLE `One`";
7388 "Expected ERROR_FUNCTION_FAILED, got %d\n",
r);
7393 query =
"SELECT * FROM `IDontExist`";
7396 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7398 query =
"SELECT * FROM `One`";
7401 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7403 query =
"CREATE TABLE `One` ( `A` INT PRIMARY KEY `A` )";
7407 query =
"DROP TABLE One";
7411 query =
"SELECT * FROM `One`";
7414 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7416 query =
"SELECT * FROM `_Tables` WHERE `Name` = 'One'";
7420 query =
"SELECT * FROM `_Columns` WHERE `Table` = 'One'";
7424 query =
"CREATE TABLE `One` ( `B` INT, `C` INT PRIMARY KEY `B` )";
7428 query =
"SELECT * FROM `One`";
7432 query =
"SELECT `Name` FROM `_Tables` WHERE `Name` = 'One'";
7446 query =
"SELECT `Table`, `Number`, `Name` FROM `_Columns` WHERE `Table` = 'One'";
7464 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
7469 query =
"DROP TABLE One";
7473 query =
"SELECT * FROM `One`";
7476 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7478 query =
"SELECT * FROM `_Tables` WHERE `Name` = 'One'";
7482 query =
"SELECT * FROM `_Columns` WHERE `Table` = 'One'";
7507 "Expected ERROR_INVALID_HANDLE, got %d\n",
r);
7512 "Expected ERROR_INVALID_HANDLE, got %d\n",
r);
7526 query =
"CREATE TABLE `One` ( `A` INT PRIMARY KEY `A` )";
7530 query =
"CREATE TABLE `One` ( `A` CHAR(72) PRIMARY KEY `A` )";
7537 "Expected ERROR_DATATYPE_MISMATCH, got %d\n",
r);
7540 query =
"SELECT * FROM `MergeErrors`";
7543 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7545 query =
"DROP TABLE `One`";
7549 query =
"DROP TABLE `One`";
7553 query =
"CREATE TABLE `One` ( "
7556 "`C` CHAR(64) LOCALIZABLE, "
7558 "`E` CHAR(72) NOT NULL, "
7559 "`F` CHAR(56) NOT NULL, "
7560 "`G` CHAR(64) NOT NULL LOCALIZABLE, "
7561 "`H` LONGCHAR NOT NULL "
7562 "PRIMARY KEY `A` )";
7566 query =
"CREATE TABLE `One` ( "
7571 "`E` CHAR(64) NOT NULL, "
7572 "`F` CHAR(64) NOT NULL, "
7573 "`G` CHAR(64) NOT NULL, "
7574 "`H` CHAR(64) NOT NULL "
7575 "PRIMARY KEY `A` )";
7582 "Expected ERROR_SUCCESS, got %d\n",
r);
7585 query =
"SELECT * FROM `MergeErrors`";
7588 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7590 query =
"DROP TABLE `One`";
7594 query =
"DROP TABLE `One`";
7598 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7602 query =
"CREATE TABLE `One` ( `A` INT, `C` INT PRIMARY KEY `A` )";
7609 "Expected ERROR_DATATYPE_MISMATCH, got %d\n",
r);
7612 query =
"SELECT * FROM `MergeErrors`";
7615 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7617 query =
"DROP TABLE `One`";
7621 query =
"DROP TABLE `One`";
7625 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7629 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `B` )";
7636 "Expected ERROR_DATATYPE_MISMATCH, got %d\n",
r);
7639 query =
"SELECT * FROM `MergeErrors`";
7642 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7644 query =
"DROP TABLE `One`";
7648 query =
"DROP TABLE `One`";
7652 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7656 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A`, `B` )";
7663 "Expected ERROR_DATATYPE_MISMATCH, got %d\n",
r);
7666 query =
"SELECT * FROM `MergeErrors`";
7669 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7671 query =
"DROP TABLE `One`";
7675 query =
"DROP TABLE `One`";
7679 query =
"CREATE TABLE `One` ( `A` INT, `B` INT, `C` INT PRIMARY KEY `A` )";
7683 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7687 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, 2 )";
7695 query =
"SELECT * FROM `One`";
7700 ok(
r == 1,
"Expected 1, got %d\n",
r);
7703 ok(
r == 2,
"Expected 2, got %d\n",
r);
7711 query =
"SELECT * FROM `MergeErrors`";
7714 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7716 query =
"DROP TABLE `One`";
7720 query =
"DROP TABLE `One`";
7724 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7728 query =
"CREATE TABLE `One` ( `A` INT, `B` INT, `C` INT PRIMARY KEY `A` )";
7732 query =
"INSERT INTO `One` ( `A`, `B`, `C` ) VALUES ( 1, 2, 3 )";
7740 query =
"SELECT * FROM `One`";
7745 ok(
r == 1,
"Expected 1, got %d\n",
r);
7748 ok(
r == 2,
"Expected 2, got %d\n",
r);
7756 query =
"SELECT * FROM `MergeErrors`";
7759 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7761 query =
"DROP TABLE `One`";
7765 query =
"DROP TABLE `One`";
7769 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7773 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, 1 )";
7777 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 2, 2 )";
7781 query =
"CREATE TABLE `One` ( `A` INT, `B` INT PRIMARY KEY `A` )";
7785 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, 2 )";
7789 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 2, 3 )";
7796 "Expected ERROR_FUNCTION_FAILED, got %d\n",
r);
7799 query =
"SELECT * FROM `MergeErrors`";
7810 check_record(hrec, 2,
"Table",
"NumRowMergeConflicts");
7821 query =
"DROP TABLE `MergeErrors`";
7825 query =
"DROP TABLE `One`";
7829 query =
"DROP TABLE `One`";
7833 query =
"CREATE TABLE `One` ( `A` INT, `B` CHAR(72) PRIMARY KEY `A` )";
7837 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, 'hi' )";
7845 query =
"SELECT * FROM `One`";
7852 query =
"SELECT * FROM `MergeErrors`";
7855 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7857 query =
"DROP TABLE `One`";
7861 query =
"DROP TABLE `One`";
7865 query =
"CREATE TABLE `One` ( "
7866 "`A` CHAR(72), `B` INT PRIMARY KEY `A` )";
7870 query =
"CREATE TABLE `One` ( "
7871 "`A` CHAR(72), `B` INT PRIMARY KEY `A` )";
7875 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 'hi', 1 )";
7883 query =
"SELECT * FROM `One`";
7890 query =
"SELECT * FROM `MergeErrors`";
7893 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7901 query =
"DROP TABLE `One`";
7905 query =
"DROP TABLE `One`";
7909 query =
"CREATE TABLE `One` ( "
7910 "`A` INT, `B` CHAR(72) LOCALIZABLE PRIMARY KEY `A` )";
7914 query =
"CREATE TABLE `One` ( "
7915 "`A` INT, `B` CHAR(72) LOCALIZABLE PRIMARY KEY `A` )";
7919 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, 'hi' )";
7927 query =
"SELECT * FROM `One`";
7934 query =
"SELECT * FROM `MergeErrors`";
7937 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7939 query =
"DROP TABLE `One`";
7943 query =
"DROP TABLE `One`";
7947 query =
"CREATE TABLE `One` ( `A` INT, `B` OBJECT PRIMARY KEY `A` )";
7951 query =
"CREATE TABLE `One` ( `A` INT, `B` OBJECT PRIMARY KEY `A` )";
7959 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, ? )";
7969 query =
"SELECT * FROM `One`";
7974 ok(
r == 1,
"Expected 1, got %d\n",
r);
7980 ok(!
lstrcmpA(
buf,
"binary.dat"),
"Expected \"binary.dat\", got \"%s\"\n",
buf);
7985 query =
"SELECT * FROM `MergeErrors`";
7988 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
7990 query =
"DROP TABLE `One`";
7994 query =
"DROP TABLE `One`";
7998 query =
"CREATE TABLE `One` ( `A` INT, `B` CHAR(72) PRIMARY KEY `A` )";
8004 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 1, 'foo' )";
8008 query =
"INSERT INTO `One` ( `A`, `B` ) VALUES ( 2, 'bar' )";
8015 query =
"SELECT * FROM `One`";
8033 "Expected ERROR_NO_MORE_ITEMS, got %d\n",
r);
8060 ok(hdb,
"failed to create db\n");
8063 query =
"CREATE TABLE `T1` ( `A` SHORT, `B` SHORT PRIMARY KEY `A`)";
8067 query =
"INSERT INTO `T1` ( `A`, `B` ) VALUES ( 1, 2 )";
8071 query =
"INSERT INTO `T1` ( `A`, `B` ) VALUES ( 4, 5 )";
8075 query =
"CREATE TABLE `T2` ( `A` SHORT, `B` SHORT PRIMARY KEY `A`)";
8079 query =
"INSERT INTO `T2` ( `A`, `B` ) VALUES ( 11, 12 )";
8083 query =
"INSERT INTO `T2` ( `A`, `B` ) VALUES ( 14, 15 )";
8091 query =
"SELECT T1.A, T2.B FROM T1,T2";
8097 for (
i = 0;
i < 4;
i++)
8103 ok(
r == vals[
i][0],
"Expected %d, got %d\n", vals[
i][0],
r);
8106 ok(
r == vals[
i][1],
"Expected %d, got %d\n", vals[
i][1],
r);
8138 ok(hdb,
"failed to create db\n");
8140 query =
"CREATE TABLE `T` ( `A` SHORT, `B` SHORT, `C` SHORT PRIMARY KEY `A`)";
8144 query =
"INSERT INTO `T` ( `A`, `B`, `C` ) VALUES ( 1, 2, 3 )";
8148 query =
"INSERT INTO `T` ( `B`, `C`, `A` ) VALUES ( 4, 5, 6 )";
8152 query =
"INSERT INTO `T` ( `C`, `A`, `B` ) VALUES ( 7, 8, 9 )";
8156 query =
"INSERT INTO `T` ( `A`, `B` ) VALUES ( 10, 11 )";
8160 query =
"INSERT INTO `T` ( `B`, `C` ) VALUES ( 12, 13 )";
8167 query =
"INSERT INTO `T` ( `C` ) VALUES ( 14 )";
8170 "Expected ERROR_FUNCTION_FAILED, got %d\n",
r);
8173 query =
"INSERT INTO `T` ( `A`, `C` ) VALUES ( 1, 14 )";
8176 "Expected ERROR_FUNCTION_FAILED, got %d\n",
r);
8178 query =
"INSERT INTO `T` ( `A`, `C` ) VALUES ( 14, 15 )";
8182 query =
"INSERT INTO `T` VALUES ( 16 )";
8185 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
8187 query =
"INSERT INTO `T` VALUES ( 17, 18 )";
8190 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
8192 query =
"INSERT INTO `T` VALUES ( 19, 20, 21 )";
8195 "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n",
r);
8197 query =
"SELECT * FROM `T`";
8203 for (
i = 0;
i < 6;
i++)
8226 query =
"DELETE FROM `T` WHERE `A` IS NULL";
8230 query =
"INSERT INTO `T` ( `B`, `C` ) VALUES ( 12, 13 ) TEMPORARY";
8234 query =
"SELECT * FROM `T`";
8240 for (
i = 0;
i < 6;
i++)
8273 ok(hdb,
"failed to create db\n");
8295 query =
"CREATE TABLE `T` ( `B` SHORT NOT NULL, `C` SHORT NOT NULL, "
8296 "`A` CHAR(255), `E` INT, `D` CHAR(255) NOT NULL "
8297 "PRIMARY KEY `D`, `E`)";
8301 query =
"SELECT * FROM `T`";
8307 check_record(rec, 5,
"s255",
"I2",
"S255",
"i2",
"i2");
8318 query =
"INSERT INTO `T` ( `B`, `C`, `A`, `E`, `D` ) "
8319 "VALUES ( 1, 2, 'a', 3, 'bc' )";
8323 query =
"SELECT * FROM `T`";
8329 query =
"SELECT `Table`, `Number`, `Name` FROM `_Columns` WHERE `Table` = 'T'";
8366 query =
"CREATE TABLE `Z` ( `B` SHORT NOT NULL, `C` SHORT NOT NULL, "
8367 "`A` CHAR(255), `E` INT, `D` CHAR(255) NOT NULL "
8368 "PRIMARY KEY `C`, `A`, `D`)";
8372 query =
"SELECT * FROM `Z`";
8378 check_record(rec, 5,
"i2",
"S255",
"s255",
"I2",
"i2");
8389 query =
"INSERT INTO `Z` ( `B`, `C`, `A`, `E`, `D` ) "
8390 "VALUES ( 1, 2, 'a', 3, 'bc' )";
8394 query =
"SELECT * FROM `Z`";
8400 query =
"SELECT `Table`, `Number`, `Name` FROM `_Columns` WHERE `Table` = 'T'";
8450 ok(hdb,
"failed to create db\n");
8452 query =
"CREATE TABLE `blah` (`foo` CHAR(72) NOT NULL PRIMARY KEY `foo`)";
8475 query =
"CREATE TABLE `a` (`b` INT PRIMARY KEY `b`)";
8489 query =
"SELECT * FROM `a`";
8513 query =
"SELECT * FROM `a`";
8541 static const char control_table[] =
8545 "LicenseAgreementDlg\ttext\x11\x19text\0text";
8546 static const char export_expected[] =
8549 "Control\tDialog\r\n"
8550 "LicenseAgreementDlg\ttext\x11\x19text\x19text";
8552 static const char control_table2[] =
8556 "LicenseAgreementDlg\ttext\x11\x19te\nxt\0text";
8567 write_file(
"temp_file", control_table,
sizeof(control_table) );
8572 r =
do_query( hdb,
"SELECT `Text` FROM `Control` WHERE `Dialog` = 'LicenseAgreementDlg'", &hrec );
8579 ok( !
memcmp(
"text\r\ntext\ntext",
buffer,
sizeof(
"text\r\ntext\ntext") - 1 ),
"wrong buffer contents \"%s\"\n",
buffer );
8584 ok( !
memcmp(
data, export_expected,
sizeof(export_expected) - 1),
"expected: \"%s\" got: \"%s\"\n", export_expected,
data );
8595 write_file(
"temp_file", control_table2,
sizeof(control_table2) );
8614 r =
try_query( hdb,
"CREATE TABLE `t` (`a` CHAR NOT NULL, `b` CHAR PRIMARY KEY `a`)");
8617 r =
try_query( hdb,
"SELECT `t`.`b` FROM `t` WHERE `t`.`b` = `x`" );
8620 r =
try_query( hdb,
"SELECT '', `t`.`b` FROM `t` WHERE `t`.`b` = 'x'" );
8623 r =
try_query( hdb,
"SELECT *, `t`.`b` FROM `t` WHERE `t`.`b` = 'x'" );
8626 r =
try_query( hdb,
"SELECT 'b', `t`.`b` FROM `t` WHERE `t`.`b` = 'x'" );
8629 r =
try_query( hdb,
"SELECT `t`.`b`, '' FROM `t` WHERE `t`.`b` = 'x'" );
8632 r =
try_query( hdb,
"SELECT `t`.`b`, '' FROM `t` WHERE `t`.`b` = 'x' ORDER BY `b`" );
8635 r =
try_query( hdb,
"SELECT `t`.`b`, '' FROM `t` WHERE `t`.`b` = 'x' ORDER BY 'b'" );
8638 r =
try_query( hdb,
"SELECT 't'.'b' FROM `t` WHERE `t`.`b` = 'x'" );
8641 r =
try_query( hdb,
"SELECT 'b' FROM `t` WHERE `t`.`b` = 'x'" );
8644 r =
try_query( hdb,
"INSERT INTO `t` ( `a`, `b` ) VALUES( '1', '2' )" );
8647 r =
try_query( hdb,
"INSERT INTO `t` ( `a`, `b` ) VALUES( '3', '4' )" );
8752 r =
try_query( hdb,
"SELECT '' FROM `t` WHERE `t`.`b` = 'x'" );
8755 r =
try_query( hdb,
"SELECT `` FROM `t` WHERE `t`.`b` = 'x'" );
8758 r =
try_query( hdb,
"SELECT `b` FROM 't' WHERE `t`.`b` = 'x'" );
8761 r =
try_query( hdb,
"SELECT `b` FROM `t` WHERE 'b' = 'x'" );
8764 r =
try_query( hdb,
"SELECT `t`.`b`, `` FROM `t` WHERE `t`.`b` = 'x'" );
8783 r =
run_query(hdb, 0,
"CREATE TABLE `T` (`A` SHORT, `B` SHORT, `C` SHORT PRIMARY KEY `A`)");
8784 ok(!
r,
"got %u\n",
r);
8787 ok(!
r,
"got %u\n",
r);
8791 ok(!
r,
"got %u\n",
r);
8795 r =
run_query(hdb, 0,
"CREATE TABLE `U` (`A` SHORT, `B` SHORT, `C` SHORT PRIMARY KEY `B`, `C`)");
8796 ok(!
r,
"got %u\n",
r);
8799 ok(!
r,
"got %u\n",
r);
8803 ok(!
r,
"got %u\n",
r);
8815 r =
run_query(db, 0,
"CREATE TABLE `T` (`A` SHORT, `B` SHORT PRIMARY KEY `A`)");
8816 ok(!
r,
"got %u\n",
r);
8817 r =
run_query(db, 0,
"INSERT INTO `T` (`A`, `B`) VALUES (1, 2)");
8818 ok(!
r,
"got %u\n",
r);
8821 ok(!
r,
"got %u\n",
r);
8823 ok(!
r,
"got %u\n",
r);
8829 ok(!
r,
"got %u\n",
r);
8835 ok(!
r,
"got %u\n",
r);
8837 ok(!
r,
"got %u\n",
r);
8840 ok(!
r,
"got %u\n",
r);
8849 ok(!
r,
"got %u\n",
r);
8851 ok(!
r,
"got %u\n",
r);
8862 ok(!
r,
"got %u\n",
r);
8868 ok(!
r,
"got %u\n",
r);
8870 ok(!
r,
"got %u\n",
r);
8873 ok(!
r,
"got %u\n",
r);
8878 ok(!
r,
"got %u\n",
r);
8886 r =
run_query(db, 0,
"CREATE TABLE `U` (`A` SHORT, `B` SHORT, `C` SHORT, `D` SHORT PRIMARY KEY `A`, `B`)");
8887 ok(!
r,
"got %u\n",
r);
8888 r =
run_query(db, 0,
"INSERT INTO `U` (`A`, `B`, `C`, `D`) VALUES (1, 2, 3, 4)");
8889 ok(!
r,
"got %u\n",
r);
8892 ok(!
r,
"got %u\n",
r);
8894 ok(!
r,
"got %u\n",
r);
8902 ok(!
r,
"got %u\n",
r);
8911 ok(!
r,
"got %u\n",
r);
8917 ok(!
r,
"got %u\n",
r);
8919 ok(!
r,
"got %u\n",
r);
8922 ok(!
r,
"got %u\n",
r);
8927 ok(!
r,
"got %u\n",
r);
8936 ok(!
r,
"got %u\n",
r);
8938 ok(!
r,
"got %u\n",
r);
8944 ok(!
r,
"got %u\n",
r);
8947 ok(!
r,
"got %u\n",
r);
8958 ok(!
r,
"got %u\n",
r);
8960 ok(!
r,
"got %u\n",
r);
8963 ok(!
r,
"got %u\n",
r);
8968 ok(!
r,
"got %u\n",
r);
8973 ok(!
r,
"got %u\n",
r);
8982 ok(!
r,
"got %u\n",
r);
8984 ok(!
r,
"got %u\n",
r);
8998 ok(!
r,
"got %u\n",
r);
9012 r =
run_query(db, 0,
"CREATE TABLE `T` (`A` SHORT, `B` SHORT PRIMARY KEY `A`)");
9013 ok(!
r,
"got %u\n",
r);
9016 ok(!
r,
"got %u\n",
r);
9018 ok(!
r,
"got %u\n",
r);
9024 ok(!
r,
"got %u\n",
r);
9030 ok(!
r,
"got %u\n",
r);
9032 ok(!
r,
"got %u\n",
r);
9035 ok(!
r,
"got %u\n",
r);
9044 ok(!
r,
"got %u\n",
r);
9046 ok(!
r,
"got %u\n",
r);
9060 ok(!
r,
"got %u\n",
r);
9066 ok(!
r,
"got %u\n",
r);
9068 ok(!
r,
"got %u\n",
r);
9071 ok(!
r,
"got %u\n",
r);
9076 ok(!
r,
"got %u\n",
r);
9084 r =
run_query(db, 0,
"CREATE TABLE `U` (`A` SHORT, `B` SHORT, `C` SHORT, `D` SHORT PRIMARY KEY `A`, `B`)");
9085 ok(!
r,
"got %u\n",
r);
9088 ok(!
r,
"got %u\n",
r);
9090 ok(!
r,
"got %u\n",
r);
9098 ok(!
r,
"got %u\n",
r);
9102 ok(!
r,
"got %u\n",
r);
9108 ok(!
r,
"got %u\n",
r);
9110 ok(!
r,
"got %u\n",
r);
9113 ok(!
r,
"got %u\n",
r);
9118 ok(!
r,
"got %u\n",
r);
9127 ok(!
r,
"got %u\n",
r);
9129 ok(!
r,
"got %u\n",
r);
9135 ok(!
r,
"got %u\n",
r);
9144 ok(!
r,
"got %u\n",
r);
9146 ok(!
r,
"got %u\n",
r);
9149 ok(!
r,
"got %u\n",
r);
9154 ok(!
r,
"got %u\n",
r);
9159 ok(!
r,
"got %u\n",
r);
9179 r =
run_query(db, 0,
"CREATE TABLE `T` (`A` SHORT, `B` SHORT NOT NULL PRIMARY KEY `A`)");
9180 ok(!
r,
"got %u\n",
r);
9181 r =
run_query(db, 0,
"INSERT INTO `T` (`A`, `B`) VALUES (1, 2)");
9182 r =
run_query(db, 0,
"CREATE TABLE `_Validation` ("
9183 "`Table` CHAR(32) NOT NULL, `Column` CHAR(32) NOT NULL, "
9184 "`Nullable` CHAR(4) NOT NULL, `MinValue` INT, `MaxValue` INT, "
9185 "`KeyTable` CHAR(255), `KeyColumn` SHORT, `Category` CHAR(32), "
9186 "`Set` CHAR(255), `Description` CHAR(255) PRIMARY KEY `Table`, `Column`)");
9187 ok(!
r,
"got %u\n",
r);
9188 r =
run_query(db, 0,
"INSERT INTO `_Validation` (`Table`, `Column`, `Nullable`) VALUES ('T', 'A', 'N')");
9189 ok(!
r,
"got %u\n",
r);
9190 r =
run_query(db, 0,
"INSERT INTO `_Validation` (`Table`, `Column`, `Nullable`) VALUES ('T', 'B', 'N')");
9191 ok(!
r,
"got %u\n",
r);
9194 ok(!
r,
"got %u\n",
r);
9197 ok(!
r,
"got %u\n",
r);
9202 ok(sz == 0,
"got size %lu\n", sz);
9210 ok(sz == 0,
"got size %lu\n", sz);
9217 ok(sz == 0,
"got size %lu\n", sz);
9224 ok(sz == 0,
"got size %lu\n", sz);
9237 ok(sz == 1,
"got size %lu\n", sz);
9254 ok(sz == 1,
"got size %lu\n", sz);
9271 ok(sz == 1,
"got size %lu\n", sz);
9298 query =
"CREATE TABLE `phone` ( "
9299 "`id` INT, `name` CHAR(32), `number` CHAR(32) "
9300 "PRIMARY KEY `id`)";
9304 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
9305 "VALUES('1', 'Alan', '5030581')";
9309 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
9310 "VALUES('2', 'Barry', '928440')";
9314 query =
"INSERT INTO `phone` ( `id`, `name`, `number` )"
9315 "VALUES('3', 'Cindy', '2937550')";
9319 query =
"SELECT * FROM `phone`";
9326 for (tries = 0; tries < 3; tries++)
9331 for (
i = 0;
i < 3;
i++)
9344 ok(
r >= 1 &&
r <= 3,
"Expected 1 <= id <= 3, got %d\n",
r);
9345 if (
r <
sizeof(idset) * 8)
9347 ok(!(idset & (1 <<
r)),
"Duplicate id %d\n",
r);
static char CURR_DIR[MAX_PATH]
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
char * strchr(const char *String, int ch)
static int run_query(HKEY root, WCHAR *path, WCHAR *key_name, WCHAR *value_name, BOOL value_empty, BOOL recurse)
static const WCHAR nameW[]
static void test_quotes(void)
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 const struct @1714 table_transform_data[]
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 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 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 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 const struct @1715 database_table_data[]
static void generate_transform_manual(void)
static void test_join(void)
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)
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)
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)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
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 count
GLuint GLuint GLsizei GLenum type
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)
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 void create_file_data(LPCSTR name, LPCSTR data, DWORD size)
#define create_file(name, size)
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