To correctly determine what SQLite is asking of your xUpdate routine requires looking at argc, argv[0] and possibly argv[1] (if argc > 1).
You did not state your argc and argv[0] values, so looking at the documentation would suggest that SQLite is actually asking for an INSERT into a WITHOUT ROWID virtual table. https://sqlite.org/vtab.html#xupdate "INSERT: ... The argv[1] will be NULL for a WITHOUT ROWID virtual table, in which case the implementation should take the PRIMARY KEY value from the appropriate column in argv[2] and following." -----Ursprüngliche Nachricht----- Von: sqlite-users [mailto:sqlite-users-boun...@mailinglists.sqlite.org] Im Auftrag von Kevin Martin Gesendet: Samstag, 10. August 2019 16:29 An: SQLite mailing list <sqlite-users@mailinglists.sqlite.org> Betreff: [EXTERNAL] [sqlite] Correct use of sqlite3_vtab_nochange/sqlite3_value_nochange Hi, I have a without rowid virtual table with an implementation of xColumn that begins with if(sqlite3_vtab_nochange(ctx)) return SQLITE_OK; If I try to perform an update on this table that doesn't involve a primary key change, then my understanding from the documentation is that xUpdate will be called and the value of argv[0] and argv[1] will be the same. What I am seeing is that argv[1] is set an sql null value, although when I call sqlite3_value_nochange(argv[1]) I do get true returned. Am I therefore right in thinking that the correct detection of whether there is an update without a primary key change when using sqlite3_vtab_nochange is actually sqlite3_value_nochange(argv[1]) || values_are_equal(argv[0], argv[1]) Thanks, Kev _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___________________________________________ Gunter Hick | Software Engineer | Scientific Games International GmbH | Klitschgasse 2-4, A-1130 Vienna | FN 157284 a, HG Wien, DVR: 0430013 | (O) +43 1 80100 - 0 May be privileged. May be confidential. Please delete if not the addressee. _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users