In one of my applications I have the need to know what is the declared default
value for any given column. I have patched my SQLite copy but I think this
would be something worth putting in the official code. I'm attaching the
changes, which are very simple.
Best,
- Cesar
--- a/sqlite3.c
+++ b/sqlite3.c
@@ -4712,7 +4712,8 @@ SQLITE_API int sqlite3_table_column_metadata(
char const **pzCollSeq, /* OUTPUT: Collation sequence name */
int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */
int *pPrimaryKey, /* OUTPUT: True if column part of PK */
- int *pAutoinc /* OUTPUT: True if column is auto-increment */
+ int *pAutoinc, /* OUTPUT: True if column is auto-increment */
+ char const **pzDefault /* OUTPUT: Declared default value */
);
/*
@@ -82517,7 +82518,7 @@ struct sqlite3_api_routines {
void (*set_auxdata)(sqlite3_context*,int,void*,void (*)(void*));
char * (*snprintf)(int,char*,const char*,...);
int (*step)(sqlite3_stmt*);
- int (*table_column_metadata)(sqlite3*,const char*,const char*,const
char*,char const**,char const**,int*,int*,int*);
+ int (*table_column_metadata)(sqlite3*,const char*,const char*,const
char*,char const**,char const**,int*,int*,int*,char const **);
void (*thread_cleanup)(void);
int (*total_changes)(sqlite3*);
void * (*trace)(sqlite3*,void(*xTrace)(void*,const char*),void*);
@@ -104528,7 +104529,8 @@ SQLITE_API int sqlite3_table_column_metadata(
char const **pzCollSeq, /* OUTPUT: Collation sequence name */
int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */
int *pPrimaryKey, /* OUTPUT: True if column part of PK */
- int *pAutoinc /* OUTPUT: True if column is auto-increment */
+ int *pAutoinc, /* OUTPUT: True if column is auto-increment */
+ char const **pzDefault /* OUTPUT: Declared default value */
){
int rc;
char *zErrMsg = 0;
@@ -104538,6 +104540,7 @@ SQLITE_API int sqlite3_table_column_metadata(
char const *zDataType = 0;
char const *zCollSeq = 0;
+ char const *zDefault = 0;
int notnull = 0;
int primarykey = 0;
int autoinc = 0;
@@ -104589,6 +104592,7 @@ SQLITE_API int sqlite3_table_column_metadata(
if( pCol ){
zDataType = pCol->zType;
zCollSeq = pCol->zColl;
+ zDefault = pCol->zDflt;
notnull = pCol->notNull!=0;
primarykey = pCol->isPrimKey!=0;
autoinc = pTab->iPKey==iCol && (pTab->tabFlags & TF_Autoincrement)!=0;
@@ -104609,6 +104613,7 @@ error_out:
*/
if( pzDataType ) *pzDataType = zDataType;
if( pzCollSeq ) *pzCollSeq = zCollSeq;
+ if( pzDefault ) *pzDefault = zDefault;
if( pNotNull ) *pNotNull = notnull;
if( pPrimaryKey ) *pPrimaryKey = primarykey;
if( pAutoinc ) *pAutoinc = autoinc;
diff --git a/c/util/sqlite/sqlite3.h b/c/util/sqlite/sqlite3.h
index 3d02c7c..63be8c4 100644
--- a/sqlite3.h
+++ b/sqlite3.h
@@ -4176,7 +4176,8 @@ SQLITE_API int sqlite3_table_column_metadata(
char const **pzCollSeq, /* OUTPUT: Collation sequence name */
int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */
int *pPrimaryKey, /* OUTPUT: True if column part of PK */
- int *pAutoinc /* OUTPUT: True if column is auto-increment */
+ int *pAutoinc, /* OUTPUT: True if column is auto-increment */
+ char const **pzDefault /* OUTPUT: Declared default value */
);
/*
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users