Skip to content

Commit 78dbc2a

Browse files
authored
Update SQLite to version 3.51.3 (#91)
1 parent 2bedf8d commit 78dbc2a

7 files changed

Lines changed: 3495 additions & 5199 deletions

File tree

Sources/CSQLite/csqlite_shims.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -269,11 +269,6 @@ int csqlite_sqlite3_db_config_enable_comments(sqlite3 *db, int x, int *y)
269269
return sqlite3_db_config(db, SQLITE_DBCONFIG_ENABLE_COMMENTS, x, y);
270270
}
271271

272-
int csqlite_sqlite3_db_config_fp_digits(sqlite3 *db, int x, int *y)
273-
{
274-
return sqlite3_db_config(db, SQLITE_DBCONFIG_FP_DIGITS, x, y);
275-
}
276-
277272
// MARK: - Virtual table configuration
278273

279274
int csqlite_sqlite3_vtab_config_constraint_support(sqlite3 *db, int x)

Sources/CSQLite/decimal.c

Lines changed: 5 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -291,36 +291,12 @@ static void decimal_result(sqlite3_context *pCtx, Decimal *p){
291291
sqlite3_result_text(pCtx, z, i, sqlite3_free);
292292
}
293293

294-
/*
295-
** Round a decimal value to N significant digits. N must be positive.
296-
*/
297-
static void decimal_round(Decimal *p, int N){
298-
int i;
299-
int nZero;
300-
if( N<1 ) return;
301-
for(nZero=0; nZero<p->nDigit && p->a[nZero]==0; nZero++){}
302-
N += nZero;
303-
if( p->nDigit<=N ) return;
304-
if( p->a[N]>4 ){
305-
p->a[N-1]++;
306-
for(i=N-1; i>0 && p->a[i]>9; i--){
307-
p->a[i] = 0;
308-
p->a[i-1]++;
309-
}
310-
if( p->a[0]>9 ){
311-
p->a[0] = 1;
312-
p->nFrac--;
313-
}
314-
}
315-
memset(&p->a[N], 0, p->nDigit - N);
316-
}
317-
318294
/*
319295
** Make the given Decimal the result in an format similar to '%+#e'.
320296
** In other words, show exponential notation with leading and trailing
321297
** zeros omitted.
322298
*/
323-
static void decimal_result_sci(sqlite3_context *pCtx, Decimal *p, int N){
299+
static void decimal_result_sci(sqlite3_context *pCtx, Decimal *p){
324300
char *z; /* The output buffer */
325301
int i; /* Loop counter */
326302
int nZero; /* Number of leading zeros */
@@ -338,8 +314,7 @@ static void decimal_result_sci(sqlite3_context *pCtx, Decimal *p, int N){
338314
sqlite3_result_null(pCtx);
339315
return;
340316
}
341-
if( N<1 ) N = 0;
342-
for(nDigit=p->nDigit; nDigit>N && p->a[nDigit-1]==0; nDigit--){}
317+
for(nDigit=p->nDigit; nDigit>0 && p->a[nDigit-1]==0; nDigit--){}
343318
for(nZero=0; nZero<nDigit && p->a[nZero]==0; nZero++){}
344319
nFrac = p->nFrac + (nDigit - p->nDigit);
345320
nDigit -= nZero;
@@ -702,16 +677,10 @@ static void decimalFunc(
702677
sqlite3_value **argv
703678
){
704679
Decimal *p = decimal_new(context, argv[0], 0);
705-
int N;
706-
if( argc==2 ){
707-
N = sqlite3_value_int(argv[1]);
708-
if( N>0 ) decimal_round(p, N);
709-
}else{
710-
N = 0;
711-
}
680+
UNUSED_PARAMETER(argc);
712681
if( p ){
713682
if( sqlite3_user_data(context)!=0 ){
714-
decimal_result_sci(context, p, N);
683+
decimal_result_sci(context, p);
715684
}else{
716685
decimal_result(context, p);
717686
}
@@ -881,7 +850,7 @@ static void decimalPow2Func(
881850
UNUSED_PARAMETER(argc);
882851
if( sqlite3_value_type(argv[0])==SQLITE_INTEGER ){
883852
Decimal *pA = decimalPow2(sqlite3_value_int(argv[0]));
884-
decimal_result_sci(context, pA, 0);
853+
decimal_result_sci(context, pA);
885854
decimal_free(pA);
886855
}
887856
}
@@ -902,9 +871,7 @@ int sqlite3_decimal_init(
902871
void (*xFunc)(sqlite3_context*,int,sqlite3_value**);
903872
} aFunc[] = {
904873
{ "decimal", 1, 0, decimalFunc },
905-
{ "decimal", 2, 0, decimalFunc },
906874
{ "decimal_exp", 1, 1, decimalFunc },
907-
{ "decimal_exp", 2, 1, decimalFunc },
908875
{ "decimal_cmp", 2, 0, decimalCmpFunc },
909876
{ "decimal_add", 2, 0, decimalAddFunc },
910877
{ "decimal_sub", 2, 0, decimalSubFunc },

Sources/CSQLite/ieee754.c

Lines changed: 1 addition & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,9 @@ static void ieee754func(
179179
}
180180

181181
if( m<0 ){
182-
if( m<(-9223372036854775807LL) ) return;
183182
isNeg = 1;
184183
m = -m;
184+
if( m<0 ) return;
185185
}else if( m==0 && e>-1000 && e<1000 ){
186186
sqlite3_result_double(context, 0.0);
187187
return;
@@ -259,38 +259,6 @@ static void ieee754func_to_blob(
259259
}
260260
}
261261

262-
/*
263-
** Functions to convert between 64-bit integers and floats.
264-
**
265-
** The bit patterns are copied. The numeric values are different.
266-
*/
267-
static void ieee754func_from_int(
268-
sqlite3_context *context,
269-
int argc,
270-
sqlite3_value **argv
271-
){
272-
UNUSED_PARAMETER(argc);
273-
if( sqlite3_value_type(argv[0])==SQLITE_INTEGER ){
274-
double r;
275-
sqlite3_int64 v = sqlite3_value_int64(argv[0]);
276-
memcpy(&r, &v, sizeof(r));
277-
sqlite3_result_double(context, r);
278-
}
279-
}
280-
static void ieee754func_to_int(
281-
sqlite3_context *context,
282-
int argc,
283-
sqlite3_value **argv
284-
){
285-
UNUSED_PARAMETER(argc);
286-
if( sqlite3_value_type(argv[0])==SQLITE_FLOAT ){
287-
double r = sqlite3_value_double(argv[0]);
288-
sqlite3_uint64 v;
289-
memcpy(&v, &r, sizeof(v));
290-
sqlite3_result_int64(context, v);
291-
}
292-
}
293-
294262
/*
295263
** SQL Function: ieee754_inc(r,N)
296264
**
@@ -343,8 +311,6 @@ int sqlite3_ieee_init(
343311
{ "ieee754_exponent", 1, 2, ieee754func },
344312
{ "ieee754_to_blob", 1, 0, ieee754func_to_blob },
345313
{ "ieee754_from_blob", 1, 0, ieee754func_from_blob },
346-
{ "ieee754_to_int", 1, 0, ieee754func_to_int },
347-
{ "ieee754_from_int", 1, 0, ieee754func_from_int },
348314
{ "ieee754_inc", 2, 0, ieee754inc },
349315
};
350316
unsigned int i;

Sources/CSQLite/include/csqlite_shims.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,6 @@ int csqlite_sqlite3_db_config_enable_attach_create(sqlite3 *db, int x, int *y);
127127
int csqlite_sqlite3_db_config_enable_attach_write(sqlite3 *db, int x, int *y);
128128
/// Equivalent to `sqlite3_db_config(db, SQLITE_DBCONFIG_ENABLE_COMMENTS, x, y)`
129129
int csqlite_sqlite3_db_config_enable_comments(sqlite3 *db, int x, int *y);
130-
/// Equivalent to `sqlite3_db_config(db, SQLITE_DBCONFIG_FP_DIGITS, x, y)`
131-
int csqlite_sqlite3_db_config_fp_digits(sqlite3 *db, int x, int *y);
132130

133131
// MARK: - Virtual table configuration
134132
// See https://sqlite.org/c3ref/vtab_config.html

0 commit comments

Comments
 (0)