From bf8c5a031f7a791bd99d18aaa334bc6d2955b536 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Mon, 3 Dec 2012 11:15:33 +0100 Subject: remove libmsi_query_modify --- libmsi/alter.c | 11 ---- libmsi/create.c | 11 ---- libmsi/delete.c | 11 ---- libmsi/distinct.c | 14 ----- libmsi/drop.c | 1 - libmsi/insert.c | 10 ---- libmsi/msipriv.h | 6 --- libmsi/msiquery.c | 46 ----------------- libmsi/select.c | 74 --------------------------- libmsi/storages.c | 89 -------------------------------- libmsi/streams.c | 89 -------------------------------- libmsi/table.c | 149 ------------------------------------------------------ libmsi/update.c | 11 ---- libmsi/where.c | 108 --------------------------------------- 14 files changed, 630 deletions(-) (limited to 'libmsi') diff --git a/libmsi/alter.c b/libmsi/alter.c index 3523036..0c25e35 100644 --- a/libmsi/alter.c +++ b/libmsi/alter.c @@ -197,16 +197,6 @@ static unsigned alter_view_get_column_info( LibmsiView *view, unsigned n, const return LIBMSI_RESULT_FUNCTION_FAILED; } -static unsigned alter_view_modify( LibmsiView *view, LibmsiModify eModifyMode, - LibmsiRecord *rec, unsigned row ) -{ - LibmsiAlterView *av = (LibmsiAlterView*)view; - - TRACE("%p %d %p\n", av, eModifyMode, rec ); - - return LIBMSI_RESULT_FUNCTION_FAILED; -} - static unsigned alter_view_delete( LibmsiView *view ) { LibmsiAlterView *av = (LibmsiAlterView*)view; @@ -239,7 +229,6 @@ static const LibmsiViewOps alter_ops = alter_view_close, alter_view_get_dimensions, alter_view_get_column_info, - alter_view_modify, alter_view_delete, alter_view_find_matching_rows, NULL, diff --git a/libmsi/create.c b/libmsi/create.c index b3cacc0..c9b8ea4 100644 --- a/libmsi/create.c +++ b/libmsi/create.c @@ -98,16 +98,6 @@ static unsigned create_view_get_column_info( LibmsiView *view, unsigned n, const return LIBMSI_RESULT_FUNCTION_FAILED; } -static unsigned create_view_modify( LibmsiView *view, LibmsiModify eModifyMode, - LibmsiRecord *rec, unsigned row) -{ - LibmsiCreateView *cv = (LibmsiCreateView*)view; - - TRACE("%p %d %p\n", cv, eModifyMode, rec ); - - return LIBMSI_RESULT_FUNCTION_FAILED; -} - static unsigned create_view_delete( LibmsiView *view ) { LibmsiCreateView *cv = (LibmsiCreateView*)view; @@ -132,7 +122,6 @@ static const LibmsiViewOps create_ops = create_view_close, create_view_get_dimensions, create_view_get_column_info, - create_view_modify, create_view_delete, NULL, NULL, diff --git a/libmsi/delete.c b/libmsi/delete.c index 98dd8ae..df00bdc 100644 --- a/libmsi/delete.c +++ b/libmsi/delete.c @@ -138,16 +138,6 @@ static unsigned delete_view_get_column_info( LibmsiView *view, unsigned n, const type, temporary, table_name); } -static unsigned delete_view_modify( LibmsiView *view, LibmsiModify eModifyMode, - LibmsiRecord *rec, unsigned row ) -{ - LibmsiDeleteView *dv = (LibmsiDeleteView*)view; - - TRACE("%p %d %p\n", dv, eModifyMode, rec ); - - return LIBMSI_RESULT_FUNCTION_FAILED; -} - static unsigned delete_view_delete( LibmsiView *view ) { LibmsiDeleteView *dv = (LibmsiDeleteView*)view; @@ -183,7 +173,6 @@ static const LibmsiViewOps delete_ops = delete_view_close, delete_view_get_dimensions, delete_view_get_column_info, - delete_view_modify, delete_view_delete, delete_view_find_matching_rows, NULL, diff --git a/libmsi/distinct.c b/libmsi/distinct.c index 47c4b17..c899fbe 100644 --- a/libmsi/distinct.c +++ b/libmsi/distinct.c @@ -216,19 +216,6 @@ static unsigned distinct_view_get_column_info( LibmsiView *view, unsigned n, con type, temporary, table_name ); } -static unsigned distinct_view_modify( LibmsiView *view, LibmsiModify eModifyMode, - LibmsiRecord *rec, unsigned row ) -{ - LibmsiDistinctView *dv = (LibmsiDistinctView*)view; - - TRACE("%p %d %p\n", dv, eModifyMode, rec ); - - if( !dv->table ) - return LIBMSI_RESULT_FUNCTION_FAILED; - - return dv->table->ops->modify( dv->table, eModifyMode, rec, row ); -} - static unsigned distinct_view_delete( LibmsiView *view ) { LibmsiDistinctView *dv = (LibmsiDistinctView*)view; @@ -278,7 +265,6 @@ static const LibmsiViewOps distinct_ops = distinct_view_close, distinct_view_get_dimensions, distinct_view_get_column_info, - distinct_view_modify, distinct_view_delete, distinct_view_find_matching_rows, NULL, diff --git a/libmsi/drop.c b/libmsi/drop.c index c16821f..d1da239 100644 --- a/libmsi/drop.c +++ b/libmsi/drop.c @@ -102,7 +102,6 @@ static const LibmsiViewOps drop_ops = drop_view_close, drop_view_get_dimensions, NULL, - NULL, drop_view_delete, NULL, NULL, diff --git a/libmsi/insert.c b/libmsi/insert.c index 6ce752f..bd2199a 100644 --- a/libmsi/insert.c +++ b/libmsi/insert.c @@ -293,15 +293,6 @@ static unsigned insert_view_get_column_info( LibmsiView *view, unsigned n, const return sv->ops->get_column_info( sv, n, name, type, temporary, table_name ); } -static unsigned insert_view_modify( LibmsiView *view, LibmsiModify eModifyMode, LibmsiRecord *rec, unsigned row) -{ - LibmsiInsertView *iv = (LibmsiInsertView*)view; - - TRACE("%p %d %p\n", iv, eModifyMode, rec ); - - return LIBMSI_RESULT_FUNCTION_FAILED; -} - static unsigned insert_view_delete( LibmsiView *view ) { LibmsiInsertView *iv = (LibmsiInsertView*)view; @@ -339,7 +330,6 @@ static const LibmsiViewOps insert_ops = insert_view_close, insert_view_get_dimensions, insert_view_get_column_info, - insert_view_modify, insert_view_delete, insert_view_find_matching_rows, NULL, diff --git a/libmsi/msipriv.h b/libmsi/msipriv.h index 8cfe28c..e1476b2 100644 --- a/libmsi/msipriv.h +++ b/libmsi/msipriv.h @@ -199,11 +199,6 @@ typedef struct LibmsiViewOps unsigned (*get_column_info)( LibmsiView *view, unsigned n, const WCHAR **name, unsigned *type, bool *temporary, const WCHAR **table_name ); - /* - * modify - not yet implemented properly - */ - unsigned (*modify)( LibmsiView *view, LibmsiModify eModifyMode, LibmsiRecord *record, unsigned row ); - /* * delete - destroys the structure completely */ @@ -368,7 +363,6 @@ extern unsigned _libmsi_database_get_primary_keys( LibmsiDatabase *, const WCHAR extern unsigned _libmsi_query_execute( LibmsiQuery*, LibmsiRecord * ); extern unsigned _libmsi_query_fetch( LibmsiQuery*, LibmsiRecord ** ); extern unsigned _libmsi_query_get_column_info(LibmsiQuery *, LibmsiColInfo, LibmsiRecord **); -extern unsigned _libmsi_query_modify( LibmsiQuery *, LibmsiModify, LibmsiRecord * ); extern unsigned _libmsi_view_find_column( LibmsiView *, const WCHAR *, const WCHAR *, unsigned *); extern unsigned msi_view_get_row(LibmsiDatabase *, LibmsiView *, unsigned, LibmsiRecord **); diff --git a/libmsi/msiquery.c b/libmsi/msiquery.c index b5c3b76..f4016dc 100644 --- a/libmsi/msiquery.c +++ b/libmsi/msiquery.c @@ -516,52 +516,6 @@ LibmsiResult libmsi_query_get_column_info(LibmsiQuery *query, LibmsiColInfo info return r; } -unsigned _libmsi_query_modify( LibmsiQuery *query, LibmsiModify mode, LibmsiRecord *rec ) -{ - LibmsiView *view = NULL; - unsigned r; - - if ( !query || !rec ) - return LIBMSI_RESULT_INVALID_HANDLE; - - view = query->view; - if ( !view || !view->ops->modify) - return LIBMSI_RESULT_FUNCTION_FAILED; - - if ( mode == LIBMSI_MODIFY_UPDATE && _libmsi_record_get_int_ptr( rec, 0 ) != (intptr_t)query ) - return LIBMSI_RESULT_FUNCTION_FAILED; - - r = view->ops->modify( view, mode, rec, query->row ); - if (mode == LIBMSI_MODIFY_DELETE && r == LIBMSI_RESULT_SUCCESS) - query->row--; - - return r; -} - -LibmsiResult libmsi_query_modify( LibmsiQuery *query, LibmsiModify eModifyMode, - LibmsiRecord *rec) -{ - unsigned r = LIBMSI_RESULT_FUNCTION_FAILED; - - TRACE("%d %x %d\n", query, eModifyMode, rec); - - if( !query ) - return LIBMSI_RESULT_INVALID_HANDLE; - - msiobj_addref( &query->hdr); - - if (rec) - msiobj_addref( &rec->hdr); - - r = _libmsi_query_modify( query, eModifyMode, rec ); - - msiobj_release( &query->hdr ); - if( rec ) - msiobj_release( &rec->hdr ); - - return r; -} - LibmsiDBError libmsi_query_get_error( LibmsiQuery *query, char *buffer, unsigned *buflen ) { const WCHAR *column; diff --git a/libmsi/select.c b/libmsi/select.c index e88d144..cf16413 100644 --- a/libmsi/select.c +++ b/libmsi/select.c @@ -240,79 +240,6 @@ static unsigned select_view_get_column_info( LibmsiView *view, unsigned n, const type, temporary, table_name ); } -static unsigned msi_select_update(LibmsiView *view, LibmsiRecord *rec, unsigned row) -{ - LibmsiSelectView *sv = (LibmsiSelectView*)view; - unsigned r, i, num_columns, col, type, val; - const WCHAR *str; - LibmsiRecord *mod; - - r = select_view_get_dimensions(view, NULL, &num_columns); - if (r != LIBMSI_RESULT_SUCCESS) - return r; - - r = sv->table->ops->get_row(sv->table, row - 1, &mod); - if (r != LIBMSI_RESULT_SUCCESS) - return r; - - for (i = 0; i < num_columns; i++) - { - col = sv->cols[i]; - - r = select_view_get_column_info(view, i + 1, NULL, &type, NULL, NULL); - if (r != LIBMSI_RESULT_SUCCESS) - { - ERR("Failed to get column information: %d\n", r); - goto done; - } - - if (MSITYPE_IS_BINARY(type)) - { - ERR("Cannot modify binary data!\n"); - r = LIBMSI_RESULT_FUNCTION_FAILED; - goto done; - } - else if (type & MSITYPE_STRING) - { - str = _libmsi_record_get_string_raw(rec, i + 1); - r = _libmsi_record_set_stringW(mod, col, str); - } - else - { - val = libmsi_record_get_integer(rec, i + 1); - r = libmsi_record_set_int(mod, col, val); - } - - if (r != LIBMSI_RESULT_SUCCESS) - { - ERR("Failed to modify record: %d\n", r); - goto done; - } - } - - r = sv->table->ops->modify(sv->table, LIBMSI_MODIFY_UPDATE, mod, row); - -done: - msiobj_release(&mod->hdr); - return r; -} - -static unsigned select_view_modify( LibmsiView *view, LibmsiModify eModifyMode, - LibmsiRecord *rec, unsigned row ) -{ - LibmsiSelectView *sv = (LibmsiSelectView*)view; - - TRACE("%p %d %p %d\n", sv, eModifyMode, rec, row ); - - if( !sv->table ) - return LIBMSI_RESULT_FUNCTION_FAILED; - - if (eModifyMode == LIBMSI_MODIFY_UPDATE) - return msi_select_update(view, rec, row); - - return sv->table->ops->modify( sv->table, eModifyMode, rec, row ); -} - static unsigned select_view_delete( LibmsiView *view ) { LibmsiSelectView *sv = (LibmsiSelectView*)view; @@ -359,7 +286,6 @@ static const LibmsiViewOps select_ops = select_view_close, select_view_get_dimensions, select_view_get_column_info, - select_view_modify, select_view_delete, select_view_find_matching_rows, NULL, diff --git a/libmsi/storages.c b/libmsi/storages.c index 8673812..f91ae05 100644 --- a/libmsi/storages.c +++ b/libmsi/storages.c @@ -303,94 +303,6 @@ static unsigned storages_view_get_column_info( LibmsiView *view, unsigned n, con return LIBMSI_RESULT_SUCCESS; } -static unsigned storages_find_row(LibmsiStorageView *sv, LibmsiRecord *rec, unsigned *row) -{ - const WCHAR *str; - unsigned r, i, id, data; - - str = _libmsi_record_get_string_raw(rec, 1); - r = _libmsi_id_from_stringW(sv->db->strings, str, &id); - if (r != LIBMSI_RESULT_SUCCESS) - return r; - - for (i = 0; i < sv->num_rows; i++) - { - storages_view_fetch_int(&sv->view, i, 1, &data); - - if (data == id) - { - *row = i; - return LIBMSI_RESULT_SUCCESS; - } - } - - return LIBMSI_RESULT_FUNCTION_FAILED; -} - -static unsigned storages_modify_update(LibmsiView *view, LibmsiRecord *rec) -{ - LibmsiStorageView *sv = (LibmsiStorageView *)view; - unsigned r, row; - - r = storages_find_row(sv, rec, &row); - if (r != LIBMSI_RESULT_SUCCESS) - return LIBMSI_RESULT_FUNCTION_FAILED; - - return storages_view_set_row(view, row, rec, 0); -} - -static unsigned storages_modify_assign(LibmsiView *view, LibmsiRecord *rec) -{ - LibmsiStorageView *sv = (LibmsiStorageView *)view; - unsigned r, row; - - r = storages_find_row(sv, rec, &row); - if (r == LIBMSI_RESULT_SUCCESS) - return storages_modify_update(view, rec); - - return storages_view_insert_row(view, rec, -1, false); -} - -static unsigned storages_view_modify(LibmsiView *view, LibmsiModify eModifyMode, LibmsiRecord *rec, unsigned row) -{ - unsigned r; - - TRACE("%p %d %p\n", view, eModifyMode, rec); - - switch (eModifyMode) - { - case LIBMSI_MODIFY_ASSIGN: - r = storages_modify_assign(view, rec); - break; - - case LIBMSI_MODIFY_INSERT: - r = storages_view_insert_row(view, rec, -1, false); - break; - - case LIBMSI_MODIFY_UPDATE: - r = storages_modify_update(view, rec); - break; - - case LIBMSI_MODIFY_VALIDATE_NEW: - case LIBMSI_MODIFY_INSERT_TEMPORARY: - case LIBMSI_MODIFY_REFRESH: - case LIBMSI_MODIFY_REPLACE: - case LIBMSI_MODIFY_MERGE: - case LIBMSI_MODIFY_DELETE: - case LIBMSI_MODIFY_VALIDATE: - case LIBMSI_MODIFY_VALIDATE_FIELD: - case LIBMSI_MODIFY_VALIDATE_DELETE: - FIXME("%p %d %p - mode not implemented\n", view, eModifyMode, rec ); - r = LIBMSI_RESULT_CALL_NOT_IMPLEMENTED; - break; - - default: - r = LIBMSI_RESULT_INVALID_DATA; - } - - return r; -} - static unsigned storages_view_delete(LibmsiView *view) { LibmsiStorageView *sv = (LibmsiStorageView *)view; @@ -453,7 +365,6 @@ static const LibmsiViewOps storages_ops = storages_view_close, storages_view_get_dimensions, storages_view_get_column_info, - storages_view_modify, storages_view_delete, storages_view_find_matching_rows, NULL, diff --git a/libmsi/streams.c b/libmsi/streams.c index a8025f5..ea5d0ae 100644 --- a/libmsi/streams.c +++ b/libmsi/streams.c @@ -293,94 +293,6 @@ static unsigned streams_view_get_column_info( LibmsiView *view, unsigned n, cons return LIBMSI_RESULT_SUCCESS; } -static unsigned streams_find_row(LibmsiStreamsView *sv, LibmsiRecord *rec, unsigned *row) -{ - const WCHAR *str; - unsigned r, i, id, data; - - str = _libmsi_record_get_string_raw(rec, 1); - r = _libmsi_id_from_stringW(sv->db->strings, str, &id); - if (r != LIBMSI_RESULT_SUCCESS) - return r; - - for (i = 0; i < sv->num_rows; i++) - { - streams_view_fetch_int(&sv->view, i, 1, &data); - - if (data == id) - { - *row = i; - return LIBMSI_RESULT_SUCCESS; - } - } - - return LIBMSI_RESULT_FUNCTION_FAILED; -} - -static unsigned streams_modify_update(LibmsiView *view, LibmsiRecord *rec) -{ - LibmsiStreamsView *sv = (LibmsiStreamsView *)view; - unsigned r, row; - - r = streams_find_row(sv, rec, &row); - if (r != LIBMSI_RESULT_SUCCESS) - return LIBMSI_RESULT_FUNCTION_FAILED; - - return streams_view_set_row(view, row, rec, 0); -} - -static unsigned streams_modify_assign(LibmsiView *view, LibmsiRecord *rec) -{ - LibmsiStreamsView *sv = (LibmsiStreamsView *)view; - unsigned r, row; - - r = streams_find_row(sv, rec, &row); - if (r == LIBMSI_RESULT_SUCCESS) - return streams_modify_update(view, rec); - - return streams_view_insert_row(view, rec, -1, false); -} - -static unsigned streams_view_modify(LibmsiView *view, LibmsiModify eModifyMode, LibmsiRecord *rec, unsigned row) -{ - unsigned r; - - TRACE("%p %d %p\n", view, eModifyMode, rec); - - switch (eModifyMode) - { - case LIBMSI_MODIFY_ASSIGN: - r = streams_modify_assign(view, rec); - break; - - case LIBMSI_MODIFY_INSERT: - r = streams_view_insert_row(view, rec, -1, false); - break; - - case LIBMSI_MODIFY_UPDATE: - r = streams_modify_update(view, rec); - break; - - case LIBMSI_MODIFY_VALIDATE_NEW: - case LIBMSI_MODIFY_INSERT_TEMPORARY: - case LIBMSI_MODIFY_REFRESH: - case LIBMSI_MODIFY_REPLACE: - case LIBMSI_MODIFY_MERGE: - case LIBMSI_MODIFY_DELETE: - case LIBMSI_MODIFY_VALIDATE: - case LIBMSI_MODIFY_VALIDATE_FIELD: - case LIBMSI_MODIFY_VALIDATE_DELETE: - FIXME("%p %d %p - mode not implemented\n", view, eModifyMode, rec ); - r = LIBMSI_RESULT_CALL_NOT_IMPLEMENTED; - break; - - default: - r = LIBMSI_RESULT_INVALID_DATA; - } - - return r; -} - static unsigned streams_view_delete(LibmsiView *view) { LibmsiStreamsView *sv = (LibmsiStreamsView *)view; @@ -446,7 +358,6 @@ static const LibmsiViewOps streams_ops = streams_view_close, streams_view_get_dimensions, streams_view_get_column_info, - streams_view_modify, streams_view_delete, streams_view_find_matching_rows, NULL, diff --git a/libmsi/table.c b/libmsi/table.c index c9b6532..8e365b7 100644 --- a/libmsi/table.c +++ b/libmsi/table.c @@ -1730,154 +1730,6 @@ static unsigned table_view_delete_row( LibmsiView *view, unsigned row ) return LIBMSI_RESULT_SUCCESS; } -static unsigned msi_table_update(LibmsiView *view, LibmsiRecord *rec, unsigned row) -{ - LibmsiTableView *tv = (LibmsiTableView *)view; - unsigned r, new_row; - - /* FIXME: libmsi_query_fetch should set rec index 0 to some ID that - * sets the fetched record apart from other records - */ - - if (!tv->table) - return LIBMSI_RESULT_INVALID_PARAMETER; - - r = msi_table_find_row(tv, rec, &new_row, NULL); - if (r != LIBMSI_RESULT_SUCCESS) - { - ERR("can't find row to modify\n"); - return LIBMSI_RESULT_FUNCTION_FAILED; - } - - /* the row cannot be changed */ - if (row != new_row + 1) - return LIBMSI_RESULT_FUNCTION_FAILED; - - return table_view_set_row(view, new_row, rec, (1 << tv->num_cols) - 1); -} - -static unsigned msi_table_assign(LibmsiView *view, LibmsiRecord *rec) -{ - LibmsiTableView *tv = (LibmsiTableView *)view; - unsigned r, row; - - if (!tv->table) - return LIBMSI_RESULT_INVALID_PARAMETER; - - r = msi_table_find_row(tv, rec, &row, NULL); - if (r == LIBMSI_RESULT_SUCCESS) - return table_view_set_row(view, row, rec, (1 << tv->num_cols) - 1); - else - return table_view_insert_row( view, rec, -1, false ); -} - -static unsigned modify_delete_row( LibmsiView *view, LibmsiRecord *rec ) -{ - LibmsiTableView *tv = (LibmsiTableView *)view; - unsigned row, r; - - r = msi_table_find_row(tv, rec, &row, NULL); - if (r != LIBMSI_RESULT_SUCCESS) - return r; - - return table_view_delete_row(view, row); -} - -static unsigned msi_refresh_record( LibmsiView *view, LibmsiRecord *rec, unsigned row ) -{ - LibmsiRecord *curr; - unsigned r, i, count; - - r = table_view_get_row(view, row - 1, &curr); - if (r != LIBMSI_RESULT_SUCCESS) - return r; - - /* Close the original record */ - _libmsi_record_destroy(&rec->hdr); - - count = libmsi_record_get_field_count(rec); - for (i = 0; i < count; i++) - _libmsi_record_copy_field(curr, i + 1, rec, i + 1); - - msiobj_release(&curr->hdr); - return LIBMSI_RESULT_SUCCESS; -} - -static unsigned table_view_modify( LibmsiView *view, LibmsiModify eModifyMode, - LibmsiRecord *rec, unsigned row) -{ - LibmsiTableView *tv = (LibmsiTableView*)view; - unsigned r, frow, column; - - TRACE("%p %d %p\n", view, eModifyMode, rec ); - - switch (eModifyMode) - { - case LIBMSI_MODIFY_DELETE: - r = modify_delete_row( view, rec ); - break; - case LIBMSI_MODIFY_VALIDATE_NEW: - r = table_validate_new( tv, rec, &column ); - if (r != LIBMSI_RESULT_SUCCESS) - { - tv->view.error = LIBMSI_DB_ERROR_DUPLICATEKEY; - tv->view.error_column = tv->columns[column].colname; - r = LIBMSI_RESULT_INVALID_DATA; - } - break; - - case LIBMSI_MODIFY_INSERT: - r = table_validate_new( tv, rec, NULL ); - if (r != LIBMSI_RESULT_SUCCESS) - break; - r = table_view_insert_row( view, rec, -1, false ); - break; - - case LIBMSI_MODIFY_INSERT_TEMPORARY: - r = table_validate_new( tv, rec, NULL ); - if (r != LIBMSI_RESULT_SUCCESS) - break; - r = table_view_insert_row( view, rec, -1, true ); - break; - - case LIBMSI_MODIFY_REFRESH: - r = msi_refresh_record( view, rec, row ); - break; - - case LIBMSI_MODIFY_UPDATE: - r = msi_table_update( view, rec, row ); - break; - - case LIBMSI_MODIFY_ASSIGN: - r = msi_table_assign( view, rec ); - break; - - case LIBMSI_MODIFY_MERGE: - /* check row that matches this record */ - r = msi_table_find_row( tv, rec, &frow, &column ); - if (r != LIBMSI_RESULT_SUCCESS) - { - r = table_validate_new( tv, rec, NULL ); - if (r == LIBMSI_RESULT_SUCCESS) - r = table_view_insert_row( view, rec, -1, false ); - } - break; - - case LIBMSI_MODIFY_REPLACE: - case LIBMSI_MODIFY_VALIDATE: - case LIBMSI_MODIFY_VALIDATE_FIELD: - case LIBMSI_MODIFY_VALIDATE_DELETE: - FIXME("%p %d %p - mode not implemented\n", view, eModifyMode, rec ); - r = LIBMSI_RESULT_CALL_NOT_IMPLEMENTED; - break; - - default: - r = LIBMSI_RESULT_INVALID_DATA; - } - - return r; -} - static unsigned table_view_delete( LibmsiView *view ) { LibmsiTableView *tv = (LibmsiTableView*)view; @@ -2157,7 +2009,6 @@ static const LibmsiViewOps table_ops = table_view_close, table_view_get_dimensions, table_view_get_column_info, - table_view_modify, table_view_delete, table_view_find_matching_rows, table_view_add_ref, diff --git a/libmsi/update.c b/libmsi/update.c index accf3dd..5311f2d 100644 --- a/libmsi/update.c +++ b/libmsi/update.c @@ -167,16 +167,6 @@ static unsigned update_view_get_column_info( LibmsiView *view, unsigned n, const return wv->ops->get_column_info( wv, n, name, type, temporary, table_name ); } -static unsigned update_view_modify( LibmsiView *view, LibmsiModify eModifyMode, - LibmsiRecord *rec, unsigned row ) -{ - LibmsiUpdateView *uv = (LibmsiUpdateView*)view; - - TRACE("%p %d %p\n", uv, eModifyMode, rec ); - - return LIBMSI_RESULT_FUNCTION_FAILED; -} - static unsigned update_view_delete( LibmsiView *view ) { LibmsiUpdateView *uv = (LibmsiUpdateView*)view; @@ -213,7 +203,6 @@ static const LibmsiViewOps update_ops = update_view_close, update_view_get_dimensions, update_view_get_column_info, - update_view_modify, update_view_delete, update_view_find_matching_rows, NULL, diff --git a/libmsi/where.c b/libmsi/where.c index 094ec41..cbe06d7 100644 --- a/libmsi/where.c +++ b/libmsi/where.c @@ -876,113 +876,6 @@ static unsigned where_view_get_column_info( LibmsiView *view, unsigned n, const type, temporary, table_name); } -static unsigned join_find_row( LibmsiWhereView *wv, LibmsiRecord *rec, unsigned *row ) -{ - const WCHAR *str; - unsigned r, i, id, data; - - str = _libmsi_record_get_string_raw( rec, 1 ); - r = _libmsi_id_from_stringW( wv->db->strings, str, &id ); - if (r != LIBMSI_RESULT_SUCCESS) - return r; - - for (i = 0; i < wv->row_count; i++) - { - where_view_fetch_int( &wv->view, i, 1, &data ); - - if (data == id) - { - *row = i; - return LIBMSI_RESULT_SUCCESS; - } - } - - return LIBMSI_RESULT_FUNCTION_FAILED; -} - -static unsigned join_modify_update( LibmsiView *view, LibmsiRecord *rec ) -{ - LibmsiWhereView *wv = (LibmsiWhereView *)view; - unsigned r, row, i, mask = 0; - LibmsiRecord *current; - - - r = join_find_row( wv, rec, &row ); - if (r != LIBMSI_RESULT_SUCCESS) - return r; - - r = msi_view_get_row( wv->db, view, row, ¤t ); - if (r != LIBMSI_RESULT_SUCCESS) - return r; - - assert(libmsi_record_get_field_count(rec) == libmsi_record_get_field_count(current)); - - for (i = libmsi_record_get_field_count(rec); i > 0; i--) - { - if (!_libmsi_record_compare_fields(rec, current, i)) - mask |= 1 << (i - 1); - } - msiobj_release(¤t->hdr); - - return where_view_set_row( view, row, rec, mask ); -} - -static unsigned where_view_modify( LibmsiView *view, LibmsiModify eModifyMode, - LibmsiRecord *rec, unsigned row ) -{ - LibmsiWhereView *wv = (LibmsiWhereView*)view; - JOINTABLE *table = wv->tables; - unsigned r; - - TRACE("%p %d %p\n", wv, eModifyMode, rec); - - if (!table) - return LIBMSI_RESULT_FUNCTION_FAILED; - - if (!table->next) - { - unsigned *rows; - - if (find_row(wv, row - 1, &rows) == LIBMSI_RESULT_SUCCESS) - row = rows[0] + 1; - else - row = -1; - - return table->view->ops->modify(table->view, eModifyMode, rec, row); - } - - switch (eModifyMode) - { - case LIBMSI_MODIFY_UPDATE: - return join_modify_update( view, rec ); - - case LIBMSI_MODIFY_ASSIGN: - case LIBMSI_MODIFY_DELETE: - case LIBMSI_MODIFY_INSERT: - case LIBMSI_MODIFY_INSERT_TEMPORARY: - case LIBMSI_MODIFY_MERGE: - case LIBMSI_MODIFY_REPLACE: - case LIBMSI_MODIFY_SEEK: - case LIBMSI_MODIFY_VALIDATE: - case LIBMSI_MODIFY_VALIDATE_DELETE: - case LIBMSI_MODIFY_VALIDATE_FIELD: - case LIBMSI_MODIFY_VALIDATE_NEW: - r = LIBMSI_RESULT_FUNCTION_FAILED; - break; - - case LIBMSI_MODIFY_REFRESH: - r = LIBMSI_RESULT_CALL_NOT_IMPLEMENTED; - break; - - default: - WARN("%p %d %p %u - unknown mode\n", view, eModifyMode, rec, row ); - r = LIBMSI_RESULT_INVALID_PARAMETER; - break; - } - - return r; -} - static unsigned where_view_delete( LibmsiView *view ) { LibmsiWhereView *wv = (LibmsiWhereView*)view; @@ -1105,7 +998,6 @@ static const LibmsiViewOps where_ops = where_view_close, where_view_get_dimensions, where_view_get_column_info, - where_view_modify, where_view_delete, where_view_find_matching_rows, NULL, -- cgit