On Monday, 17 July, 2017 08:00, Richard Hipp <d...@sqlite.org> wrote: > On 7/17/17, Keith Medcalf <kmedc...@dessus.com> wrote:
> > Also, a question. sqlite3_bind_pointer(C, P, T) and > > sqlite3_value_pointer(C, P, T) indicates that T should be a "static > > string". > > Does this mean of type SQLITE_STATIC and that it cannot be a string > > located on the stack (ie, an SQLITE_TRANSIENT), or is a copy made of > > the string value (ala SQLITE_TRANSIENT) for future use? > No copy is made of the string. SQLite merely keeps a pointer. If the > memory that holds the string is deallocated or reused for some other > purpose, bad things will happen. Ok, understand. I presume therefore that this is NOT a database type but is for passing around value types and contexts only. Therefore using a quoted-string will point to something in the global string table built by the compiler and therefore be static. Makes sense. So if the sqlite3_bind_pointer is used to bind into a database column, that value will be null when stored in the database? I suppose I could just try this, but I thought I would ask you just to be sure ... Example: prepare("insert into table (col1, col2) values (?,?)") bind_int64(...,1,intval) bind_pointer(...,2,&intval, "carray") step() that col1 gets the integer and col2 gets a NULL? and that the bind_pointer actual pointer value and type string is only accessible when the bound column is accessed by something that uses the used the sqlite3_value type interfaces (that does not actually originate or terminate as a database row -- and the pointer type is not preserved in the database itself but would be persisted as if NULL?) _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users