Marcus Meissner
b9550ad352
msi: Move free after last usage (Coverity).
2012-09-06 18:23:40 +02:00
Hans Leidekker
fde66de6a5
msi: Don't free cached tables in MsiDatabaseCommit.
2012-04-26 19:26:37 +02:00
Andoni Morales Alastruey
342fcb6198
msi: Implement MSIMODIFY_MERGE function in TABLE_modify.
2012-03-28 11:44:52 +02:00
Hans Leidekker
c8e8f44168
msi: Use the column count specified in the table transform data.
...
It can be smaller than the number of columns found in the table meta data.
2012-01-24 16:57:32 +01:00
Bernhard Loos
4ac1e8e034
msi: Always use WHEREVIEW for sorting.
2011-10-20 20:48:26 +02:00
Hans Leidekker
80438ef2ce
msi: Remove an unused parameter from msi_create_table.
2011-09-23 12:38:59 +02:00
Hans Leidekker
e1c2e8828f
msi: Clean up the database queries.
2011-07-27 11:55:16 +02:00
Hans Leidekker
d1b2058500
msi: Make the column and table name parameters of get_column_info const.
2011-07-27 11:55:06 +02:00
Hans Leidekker
d38ace6d4c
msi: Store table and column names in the string table.
2011-07-27 11:54:58 +02:00
Hans Leidekker
911ad2bdab
msi: Don't duplicate column string data.
2011-07-25 17:59:04 +02:00
Hans Leidekker
9299319b88
msi: Remove some dead assignments (clang).
2011-07-07 14:45:59 +02:00
Hans Leidekker
1ae309f981
msi: Get rid of some more forward declarations.
2011-06-07 14:18:34 +02:00
Hans Leidekker
ab13c00fc9
msi: Add support for returning validation errors.
2011-06-07 14:18:33 +02:00
Hans Leidekker
4f9971f5f8
msi: Keep track of a stream's storage.
2011-05-06 16:40:06 +02:00
Hans Leidekker
cd34bfe6c1
msi: Define common strings just once.
2011-05-02 16:40:20 +02:00
Paul Vriens
abdecfbe17
msi: Only call MSI_RecordGetString() when needed (Coverity).
2011-03-17 17:44:23 +01:00
David Hedberg
599b30833a
msi: Use ordering information to update the correct row.
2011-03-10 15:18:00 +01:00
Hans Leidekker
659db6e902
msi: Compare keys only in compare_record.
2011-03-07 13:17:29 +01:00
Marcus Meissner
8504548037
msi: Pointer to out of scope local variable (Coverity).
2011-03-04 16:26:01 +01:00
Hans Leidekker
bf192f6ac9
msi: Handle out-of-memory condition in encode_streamname.
2011-02-01 18:14:09 +01:00
Hans Leidekker
e861283a62
msi: Make sure the return value is initialized in save_table (clang).
2011-01-27 16:31:07 +01:00
Hans Leidekker
eaa57c5b7b
msi: Compare strings without depending on thread locale.
2010-10-19 13:49:54 +02:00
Hans Leidekker
cf6e820106
msi: Allocate 3 bytes instead of 2 for in-memory string references.
...
Fixes an installer that stores string references as 2 byte integers and
grows the number of strings beyond the limit of 64k during installation.
2010-10-11 17:11:26 +02:00
Hans Leidekker
337fb86c3b
msi: Use binary search to find the insert index for a row.
2010-09-24 18:21:03 +02:00
Hans Leidekker
d8b5879798
msi: Fix comparison of table ids in TABLE_Exists.
2010-09-08 19:50:15 +02:00
Hans Leidekker
eef54ffe6b
msi: Open the database storage in transacted mode when MSIDBOPEN_CREATE or MSIDBOPEN_TRANSACT is specified.
2010-08-27 12:08:29 +02:00
Hans Leidekker
6b1a1579f6
msi: Update an existing record even if the low bit in the transform mask is set.
2010-06-11 15:54:47 +02:00
Hans Leidekker
8f53405544
msi: Remove the string index parameter from msi_addstringW.
2010-04-19 14:57:02 +02:00
Hans Leidekker
9f68142118
msi: Encode stream name in the callers of db_get_raw_stream.
2010-02-19 13:06:41 +01:00
James Hawkins
6b403d1a31
msi: Move MSITRANSFORM and MSISTREAM and associated methods to the dabatase implementation file as they are database objects/methods.
2009-12-17 12:53:34 +01:00
Hans Leidekker
ef522c5ef0
msi: Clone the open stream instead of trying to open a stream again.
2009-12-16 13:04:35 +01:00
James Hawkins
f45db6eee7
msi: Implement DROP_delete that deletes the drop view. We were leaking the view before.
2009-12-14 12:20:33 +01:00
James Hawkins
9ab7d9e21a
msi: Close the original record before copying new data into it.
2009-12-11 12:16:26 +01:00
James Hawkins
b13803ea40
msi: Free the column info data when updating the table column info.
2009-12-08 12:36:36 +01:00
James Hawkins
c20902314b
msi: Make sure to free the extra row data when deleting a row.
2009-12-08 12:36:28 +01:00
Hans Leidekker
83e7a1214a
msi: Sign extend the value when converting from a small integer.
2009-11-19 11:50:36 +01:00
Nate Gallaher
cc366e1282
msi: Add tablename tracking to VIEW_find_column.
...
This fixes the bug where multiple columns of the same name, but
different tables are members of a join. Any attempt to refer to these
columns will resolve to the first available column with that name,
irregardless of any tablename modifier.
2009-10-27 14:01:23 +01:00
Hib Eris
47ec8ab0f3
msi: Remove table_find_insert_idx().
...
The function table_find_insert_idx() is replaced by the more generic
function find_insert_index().
2009-10-20 15:57:25 +02:00
Hib Eris
f6ae2507ef
msi: Fix table rows order.
2009-10-20 15:57:09 +02:00
Hib Eris
efacff81d6
msi: Add function get_table_value_from_record.
2009-10-20 15:57:01 +02:00
Hans Leidekker
843382f284
msi: Define common strings only once.
2009-10-15 14:16:50 +02:00
Hans Leidekker
fc15d6d5ad
msi: Downgrade two ERRs to WARNs.
2009-09-16 12:56:44 -05:00
Hans Leidekker
eb101df687
msi: Fix column width calculation.
...
The iTunes 8 installer database has an integer column of size 1 which
takes up two bytes at storage level, so adjust the column size calculation
to account for this difference.
2009-08-04 13:05:45 +02:00
Hib Eris
ec4edbfd6c
msi: Implement ASSIGN mode in MsiViewModify.
2009-07-06 15:25:39 +02:00
Hib Eris
65ac206194
msi: Insert new tables in correct _Tables location.
2009-06-22 13:08:36 +02:00
Mike Kaplinskiy
2cc9a710b1
msi: Store temporary rows in the same place as persistent rows, just with a flag.
2009-06-11 13:23:25 +02:00
Hib Eris
d9568722aa
msi: Support transforms with binary OBJECTS.
2009-05-26 15:18:09 +02:00
Hib Eris
f6dd90de5e
msi: Add support for binary OBJECTS.
2009-05-26 15:18:02 +02:00
Hans Leidekker
91ac47b84b
msi: Fix a double free.
...
TABLE_drop() calls TABLE_remove_column() which calls msi_update_table_columns()
which frees column info and possibly returns without reallocating. When that
happens it will be freed again when TABLE_drop() finally calls free_table().
2009-04-20 17:40:38 +02:00
James Hawkins
37c5e04010
msi: The _Streams and _Storages table are special and always exist.
2009-03-02 12:05:45 +01:00
James Hawkins
c9b3bc1165
msi: Column attributes for temporary string and int columns should be g and j respectively.
2009-03-02 12:05:28 +01:00
James Hawkins
b3c9875cf7
msi: Correctly order transposed column values in the INSERT query.
2009-03-02 12:04:57 +01:00
James Hawkins
74aa053485
msi: The _Tables and _Columns tables have no persistence attribute.
2009-02-26 12:13:52 +01:00
Nikolay Sivov
c3e2cb00d5
msi: Remove redundant pointer check (Coverity).
2009-01-26 14:30:34 +01:00
Andrew Talbot
668197a898
msi: Declare some functions static.
2009-01-12 13:10:53 +01:00
James Hawkins
b187008345
msi: Remove a part of a debugging statement that was accidentally left in.
2008-10-09 12:58:09 +02:00
James Hawkins
e88b09a342
msi: Don't update the table columns if there are no more columns.
...
This should fix the heap corruption that caused intermittent crashes
for patchwatcher.
2008-10-07 12:14:03 +02:00
James Hawkins
374c042880
msi: Remove the columns in reverse order.
2008-10-07 12:13:46 +02:00
James Hawkins
62c544cf4f
msi: Implement the DROP TABLE sql command.
2008-10-06 13:05:52 +02:00
James Hawkins
4b9fd1d5e2
msi: Store the _Columns and _Tables tables in the database structure.
2008-08-25 11:40:46 +02:00
James Hawkins
ccd030c7d3
msi: Add handling for the special _Storages table.
2008-07-08 10:50:04 +02:00
James Hawkins
85866317c5
msi: Don't reorder the table when matching rows as the results are already ordered.
2008-04-07 11:27:15 +02:00
James Hawkins
bed661aef4
msi: Handle sorting an empty table.
2008-04-02 12:31:01 +02:00
Andrew Talbot
6661f43438
msi: Assign to structs instead of using memcpy.
2008-03-07 11:01:07 +01:00
James Hawkins
40aa7df344
msi: Implement the MSIMODIFY_REFRESH command of MsiViewModify.
2008-02-18 12:41:37 +01:00
Gerald Pfeifer
388edd1086
msi: Complete initializers.
2008-01-10 13:20:15 +01:00
James Hawkins
4b75f33012
msi: Actually delete the row data instead of blanking it out.
2008-01-09 13:38:02 +01:00
Gerald Pfeifer
2b1e487d36
msi: Adjust the types of loop variables.
2008-01-04 12:12:43 +01:00
Gerald Pfeifer
f7fea9e9f0
msi: Simplify condition in TABLE_fetch_stream().
2008-01-02 12:38:42 +01:00
Gerald Pfeifer
05cf0bdf81
msi: Fix error handling in encode_streamname().
2007-12-27 13:43:56 +01:00
Rob Shearman
5b072fbbec
msi: Fix several memory leaks after using IEnumSTATSTG_Next.
...
The pwcsName field of STATSTG must be freed, otherwise the memory will
be leaked.
2007-12-26 14:02:01 +01:00
James Hawkins
3c0f7ca4e6
msi: Fix deleting temporary rows, with tests.
2007-12-23 14:17:11 +01:00
James Hawkins
b774ffe1d2
msi: Free the ordering information.
2007-12-19 12:18:54 +01:00
James Hawkins
91c205e8c0
msi: Sort each table of the join separately.
2007-12-18 12:32:55 +01:00
James Hawkins
3a5178e900
msi: Don't update a table entry when applying a transform if the string value is the same.
2007-11-05 14:54:11 +01:00
James Hawkins
35a6782d7b
msi: Test and implement the MSIMODIFY_DELETE command.
2007-11-05 14:52:46 +01:00
James Hawkins
26f86c55c9
msi: Return ERROR_FUNCTION_FAILED if a matching row is not found.
2007-10-18 12:09:39 +02:00
James Hawkins
46ec7ee183
msi: Return ERROR_FUNCTION_FAILED when inserting duplicate keys.
2007-10-18 12:09:33 +02:00
Alexandre Julliard
6adf058089
msi: Avoid casting const pointers to non-const.
2007-10-17 14:14:21 +02:00
Alexandre Julliard
71747518ad
msi: Properly clear the new table data when a column is added.
2007-10-17 14:13:53 +02:00
James Hawkins
b830fb0a34
msi: Implement the MSIMODIFY_UPDATE command in the SELECT view.
2007-07-27 12:24:39 +02:00
James Hawkins
f4147ca004
msi: Add handling for the MSIMODIFY_UPDATE command.
2007-07-24 11:49:59 +02:00
James Hawkins
8a7690c151
msi: Properly delete the columns view.
2007-07-24 11:49:33 +02:00
James Hawkins
ccef56f2cc
msi: Ref count temporary columns and release them when necessary.
2007-07-23 11:55:34 +02:00
James Hawkins
0fd733bf90
msi: Implement adding columns using the ALTER command.
2007-07-23 11:55:11 +02:00
James Hawkins
3b1ab76986
msi: Implement reference counting for tables, manipulated with the HOLD and FREE sql commands.
2007-07-19 12:00:43 +02:00
James Hawkins
dc3060c542
msi: Load the AdminProperties stream if the package is an Admin package.
2007-07-17 12:54:53 +02:00
James Hawkins
f0b97cb1e1
msi: Check for NULL transform, as there may be no transforms for the _Columns or _Tables tables.
2007-07-11 12:00:53 +02:00
James Hawkins
17ba74195b
msi: Handle adding columns in transforms.
2007-07-10 13:35:50 +02:00
Rob Shearman
2e2b17f340
msi: Fix transforms to work when the number of bytes per string reference differs to that of the database it is being applied to.
2007-06-27 12:32:42 +02:00
Rob Shearman
bf67b14602
msi: Fix bytes_per_column for binary types when the database is using 3-byte string references.
2007-06-27 12:32:42 +02:00
James Hawkins
9309f4dfa0
msi: Properly delete rows from the table, instead of zeroing out the row.
2007-06-19 11:31:44 +02:00
Andrew Talbot
cf1e01eb0c
msi: Constify some variables.
2007-06-14 13:20:45 +02:00
James Hawkins
a05613a9f2
msi: Add support for large string tables.
2007-06-08 11:59:28 +02:00
James Hawkins
8568e0a4a8
msi: Represent table data as bytes instead of shorts.
2007-06-08 11:58:36 +02:00
James Hawkins
65f23343ee
msi: Reduce the amount of code that directly accesses table data.
2007-06-08 11:58:20 +02:00
James Hawkins
298699e242
msi: Use fetch_int to reduce code duplication and access to table data.
2007-06-08 11:57:57 +02:00
Marcus Meissner
ff40f3d2d3
msi: Do not mark the tables const.
2007-04-27 11:13:40 +02:00
James Hawkins
da55285acb
msi: Implement special handling for the _Streams table.
2007-04-25 12:44:37 +02:00
Rob Shearman
3323303e09
msi: Set rec to NULL after calling msiobj_release on it in msi_create_table so that we don't call msiobj_release on it again.
2007-04-25 11:49:26 +02:00