SQLite

Check-in [95c7af79cf]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fix test cases so that they work when SQLITE_ENABLE_NAN_INF is defined.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | nan-inf
Files: files | file ages | folders
SHA3-256: 95c7af79cf55a333d35556877be2d8d4af95161a84fc8bc7c81ee71072bf3e6a
User & Date: drh 2023-03-23 19:22:54.195
Context
2023-03-29
16:28
Merge recent trunk fixes into the nan-inf branch. (check-in: 248bf62945 user: drh tags: nan-inf)
2023-03-23
19:22
Fix test cases so that they work when SQLITE_ENABLE_NAN_INF is defined. (check-in: 95c7af79cf user: drh tags: nan-inf)
12:00
Fix #ifdefs that use the wrong preprocessor macro. (check-in: 0aecf360fb user: drh tags: nan-inf)
Changes
Unified Diff Ignore Whitespace Patch
Changes to ext/rtree/rtreedoc.test.
246
247
248
249
250
251
252

253
254
255
256
257
258
259










260

261
262
263
264
265
266
267

do_execsql_test 8.2 {
  SELECT 
    typeof(x1), typeof(x2), typeof(y1), typeof(y2), typeof(z1), typeof(z2)
  FROM rtI
} {integer integer integer integer integer integer}


do_execsql_test 8.3 {
  DELETE FROM rtF;
  INSERT INTO rtF VALUES(
    1, 'hello world', X'616263', NULL, 44
  );
  SELECT * FROM rtF;
} {










  1   0.0 0.0    0.0 44.0

}
do_execsql_test 8.4 {
  SELECT 
    typeof(x1), typeof(x2), typeof(y1), typeof(y2)
  FROM rtF
} {real real real real}








>
|
|
|
|
|
|
|
>
>
>
>
>
>
>
>
>
>
|
>







246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279

do_execsql_test 8.2 {
  SELECT 
    typeof(x1), typeof(x2), typeof(y1), typeof(y2), typeof(z1), typeof(z2)
  FROM rtI
} {integer integer integer integer integer integer}

ifcapable nan_inf {
  do_execsql_test 8.3a {
    DELETE FROM rtF;
    INSERT INTO rtF VALUES(
      1, 'hello world', X'616263', NULL, 44
    );
    SELECT * FROM rtF;
  } {
    1   0.0 0.0    NaN 44.0
  }
} else {
  do_execsql_test 8.3b {
    DELETE FROM rtF;
    INSERT INTO rtF VALUES(
      1, 'hello world', X'616263', NULL, 44
    );
    SELECT * FROM rtF;
  } {
    1   0.0 0.0    0.0 44.0
  }
}
do_execsql_test 8.4 {
  SELECT 
    typeof(x1), typeof(x2), typeof(y1), typeof(y2)
  FROM rtF
} {real real real real}

390
391
392
393
394
395
396

397
398
399











400
401
402
403
404
405
406

407
408
409
410
411
412
413
  # Show there are no UNIQUE constraints
  do_execsql_test 1.$tn.3 {
    INSERT INTO abc VALUES(1, 10.0, 20.0, 10.0, 20.0);
    INSERT INTO abc VALUES(2, 10.0, 20.0, 10.0, 20.0);
  }

  # Show the default values have not been modified

  do_execsql_test 1.$tn.4 {
    INSERT INTO abc DEFAULT VALUES;
    SELECT * FROM abc WHERE rowid NOT IN (1,2)











  } {3 0.0 0.0 0.0 0.0}

  # Show that there are no NOT NULL constraints
  do_execsql_test 1.$tn.5 {
    INSERT INTO abc VALUES(NULL, NULL, NULL, NULL, NULL);
    SELECT * FROM abc WHERE rowid NOT IN (1,2,3)
  } {4 0.0 0.0 0.0 0.0}


# EVIDENCE-OF: R-06893-30579 In an RTREE virtual table, the first column
# always has a type affinity of INTEGER and all other data columns have
# a type affinity of REAL.
  do_execsql_test 1.$tn.5 {
    INSERT INTO abc VALUES('5', '5', '5', '5', '5');
    SELECT * FROM abc WHERE rowid NOT IN (1,2,3,4)







>
|
|
|
>
>
>
>
>
>
>
>
>
>
>
|

|
|
|
|
|
>







402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
  # Show there are no UNIQUE constraints
  do_execsql_test 1.$tn.3 {
    INSERT INTO abc VALUES(1, 10.0, 20.0, 10.0, 20.0);
    INSERT INTO abc VALUES(2, 10.0, 20.0, 10.0, 20.0);
  }

  # Show the default values have not been modified
  ifcapable nan_inf {
    do_execsql_test 1.$tn.4a {
      INSERT INTO abc DEFAULT VALUES;
      SELECT * FROM abc WHERE rowid NOT IN (1,2)
    } {3 NaN NaN NaN NaN}

    # Show that there are no NOT NULL constraints
    do_execsql_test 1.$tn.5a {
      INSERT INTO abc VALUES(NULL, NULL, NULL, NULL, NULL);
      SELECT * FROM abc WHERE rowid NOT IN (1,2,3)
    } {4 NaN NaN NaN NaN}
  } else {
    do_execsql_test 1.$tn.4b {
      INSERT INTO abc DEFAULT VALUES;
      SELECT * FROM abc WHERE rowid NOT IN (1,2)
    } {3 0.0 0.0 0.0 0.0}

    # Show that there are no NOT NULL constraints
    do_execsql_test 1.$tn.5b {
      INSERT INTO abc VALUES(NULL, NULL, NULL, NULL, NULL);
      SELECT * FROM abc WHERE rowid NOT IN (1,2,3)
    } {4 0.0 0.0 0.0 0.0}
  }

# EVIDENCE-OF: R-06893-30579 In an RTREE virtual table, the first column
# always has a type affinity of INTEGER and all other data columns have
# a type affinity of REAL.
  do_execsql_test 1.$tn.5 {
    INSERT INTO abc VALUES('5', '5', '5', '5', '5');
    SELECT * FROM abc WHERE rowid NOT IN (1,2,3,4)
Changes to ext/rtree/rtreedoc2.test.
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# as the 3rd parameter to the Tcl script.
#
do_execsql_test 1.0 {
  CREATE VIRTUAL TABLE rt1 USING rtree(id, x1,x2);
  CREATE VIRTUAL TABLE rt2 USING rtree(id, x1,x2, y1,y2);
  CREATE VIRTUAL TABLE rt3 USING rtree(id, x1,x2, y1,y2, z1,z2);

  INSERT INTO rt1 DEFAULT VALUES;
  INSERT INTO rt2 DEFAULT VALUES;
  INSERT INTO rt3 DEFAULT VALUES;
}
foreach {tn tbl nCoord} {
  1 rt1 2     
  2 rt2 4
  3 rt3 6







|







120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# as the 3rd parameter to the Tcl script.
#
do_execsql_test 1.0 {
  CREATE VIRTUAL TABLE rt1 USING rtree(id, x1,x2);
  CREATE VIRTUAL TABLE rt2 USING rtree(id, x1,x2, y1,y2);
  CREATE VIRTUAL TABLE rt3 USING rtree(id, x1,x2, y1,y2, z1,z2);

  INSERT INTO rt1(id,x1,x2) VALUES(1,0,0);
  INSERT INTO rt2 DEFAULT VALUES;
  INSERT INTO rt3 DEFAULT VALUES;
}
foreach {tn tbl nCoord} {
  1 rt1 2     
  2 rt2 4
  3 rt3 6
339
340
341
342
343
344
345
346
    }
  }
  set ::box_calls
} {B L B L B L B L B L B L B L B L B L}


finish_test








<
339
340
341
342
343
344
345

    }
  }
  set ::box_calls
} {B L B L B L B L B L B L B L B L B L}


finish_test

Changes to src/ctime.c.
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

#ifdef SQLITE_32BIT_ROWID
  "32BIT_ROWID",
#endif
#ifdef SQLITE_4_BYTE_ALIGNED_MALLOC
  "4_BYTE_ALIGNED_MALLOC",
#endif
#ifdef SQLITE_64BIT_STATS
  "64BIT_STATS",
#endif
#ifdef SQLITE_ALLOW_COVERING_INDEX_SCAN
# if SQLITE_ALLOW_COVERING_INDEX_SCAN != 1
  "ALLOW_COVERING_INDEX_SCAN=" CTIMEOPT_VAL(SQLITE_ALLOW_COVERING_INDEX_SCAN),
# endif
#endif
#ifdef SQLITE_ALLOW_URI_AUTHORITY
  "ALLOW_URI_AUTHORITY",







<
<
<







56
57
58
59
60
61
62



63
64
65
66
67
68
69

#ifdef SQLITE_32BIT_ROWID
  "32BIT_ROWID",
#endif
#ifdef SQLITE_4_BYTE_ALIGNED_MALLOC
  "4_BYTE_ALIGNED_MALLOC",
#endif



#ifdef SQLITE_ALLOW_COVERING_INDEX_SCAN
# if SQLITE_ALLOW_COVERING_INDEX_SCAN != 1
  "ALLOW_COVERING_INDEX_SCAN=" CTIMEOPT_VAL(SQLITE_ALLOW_COVERING_INDEX_SCAN),
# endif
#endif
#ifdef SQLITE_ALLOW_URI_AUTHORITY
  "ALLOW_URI_AUTHORITY",
281
282
283
284
285
286
287



288
289
290
291
292
293
294
  "ENABLE_MEMSYS3",
#endif
#ifdef SQLITE_ENABLE_MEMSYS5
  "ENABLE_MEMSYS5",
#endif
#ifdef SQLITE_ENABLE_MULTIPLEX
  "ENABLE_MULTIPLEX",



#endif
#ifdef SQLITE_ENABLE_NORMALIZE
  "ENABLE_NORMALIZE",
#endif
#ifdef SQLITE_ENABLE_NULL_TRIM
  "ENABLE_NULL_TRIM",
#endif







>
>
>







278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
  "ENABLE_MEMSYS3",
#endif
#ifdef SQLITE_ENABLE_MEMSYS5
  "ENABLE_MEMSYS5",
#endif
#ifdef SQLITE_ENABLE_MULTIPLEX
  "ENABLE_MULTIPLEX",
#endif
#ifdef SQLITE_ENABLE_NAN_INF
  "ENABLE_NAN_INF",
#endif
#ifdef SQLITE_ENABLE_NORMALIZE
  "ENABLE_NORMALIZE",
#endif
#ifdef SQLITE_ENABLE_NULL_TRIM
  "ENABLE_NULL_TRIM",
#endif
Changes to src/test_config.c.
766
767
768
769
770
771
772






773
774
775
776
777
778
779
#endif

#ifdef SQLITE_ENABLE_URI_00_ERROR
  Tcl_SetVar2(interp, "sqlite_options", "uri_00_error", "1", TCL_GLOBAL_ONLY);
#else
  Tcl_SetVar2(interp, "sqlite_options", "uri_00_error", "0", TCL_GLOBAL_ONLY);
#endif







#if defined(SQLITE_ENABLE_NORMALIZE)
  Tcl_SetVar2(interp, "sqlite_options", "normalize", "1", TCL_GLOBAL_ONLY);
#else
  Tcl_SetVar2(interp, "sqlite_options", "normalize", "0", TCL_GLOBAL_ONLY);
#endif








>
>
>
>
>
>







766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
#endif

#ifdef SQLITE_ENABLE_URI_00_ERROR
  Tcl_SetVar2(interp, "sqlite_options", "uri_00_error", "1", TCL_GLOBAL_ONLY);
#else
  Tcl_SetVar2(interp, "sqlite_options", "uri_00_error", "0", TCL_GLOBAL_ONLY);
#endif

#if defined(SQLITE_ENABLE_NAN_INF)
  Tcl_SetVar2(interp, "sqlite_options", "nan_inf", "1", TCL_GLOBAL_ONLY);
#else
  Tcl_SetVar2(interp, "sqlite_options", "nan_inf", "0", TCL_GLOBAL_ONLY);
#endif

#if defined(SQLITE_ENABLE_NORMALIZE)
  Tcl_SetVar2(interp, "sqlite_options", "normalize", "1", TCL_GLOBAL_ONLY);
#else
  Tcl_SetVar2(interp, "sqlite_options", "normalize", "0", TCL_GLOBAL_ONLY);
#endif

Changes to test/bind.test.
220
221
222
223
224
225
226















227
228
229
230
231
232
233
234
235
236
237
238
239

240
241
242
243
244
245
246
  execsql {SELECT typeof(a), typeof(b), typeof(c) FROM t1}
} {real real real}
do_test bind-4.3 {
  execsql {
    DELETE FROM t1;
  }
} {}















do_test bind-4.4 {
  sqlite3_bind_double $VM 1 NaN
  sqlite3_bind_double $VM 2 1e300
  sqlite3_bind_double $VM 3 -1e-300
  sqlite_step $VM N VALUES COLNAMES
  sqlite3_reset $VM
  set x [execsql {SELECT rowid, * FROM t1}]
  regsub {1e-005} $x {1e-05} y
  set y
} {1 {} 1e+300 -1e-300}
do_test bind-4.5 {
  execsql {SELECT typeof(a), typeof(b), typeof(c) FROM t1}
} {null real real}

do_test bind-4.6 {
  execsql {
    DELETE FROM t1;
  }
} {}

# NULL







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
>







220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
  execsql {SELECT typeof(a), typeof(b), typeof(c) FROM t1}
} {real real real}
do_test bind-4.3 {
  execsql {
    DELETE FROM t1;
  }
} {}
ifcapable nan_inf {
  do_test bind-4.4nan {
    sqlite3_bind_double $VM 1 NaN
    sqlite3_bind_double $VM 2 1e300
    sqlite3_bind_double $VM 3 -1e-300
    sqlite_step $VM N VALUES COLNAMES
    sqlite3_reset $VM
    set x [execsql {SELECT rowid, * FROM t1}]
    regsub {1e-005} $x {1e-05} y
    set y
  } {1 NaN(7ffffffffffff) 1e+300 -1e-300}
  do_test bind-4.5nan {
    execsql {SELECT typeof(a), typeof(b), typeof(c) FROM t1}
  } {real real real}
} else {
  do_test bind-4.4 {
    sqlite3_bind_double $VM 1 NaN
    sqlite3_bind_double $VM 2 1e300
    sqlite3_bind_double $VM 3 -1e-300
    sqlite_step $VM N VALUES COLNAMES
    sqlite3_reset $VM
    set x [execsql {SELECT rowid, * FROM t1}]
    regsub {1e-005} $x {1e-05} y
    set y
  } {1 {} 1e+300 -1e-300}
  do_test bind-4.5 {
    execsql {SELECT typeof(a), typeof(b), typeof(c) FROM t1}
  } {null real real}
}
do_test bind-4.6 {
  execsql {
    DELETE FROM t1;
  }
} {}

# NULL
Changes to test/capi3.test.
603
604
605
606
607
608
609

610

611
612
613
614
615
616
617

do_test capi3-5.5 {
  sqlite3_step $STMT
} SQLITE_ROW

check_header $STMT capi3-5.6 {a b c} {VARINT BLOB VARCHAR(16)}
check_origin_header $STMT capi3-5.6 {main main main} {t1 t1 t1} {a b c}

check_data $STMT capi3-5.7 {TEXT TEXT NULL} {0 0 0} {0.0 0.0 0.0} {one two {}}


do_test capi3-5.8 {
  sqlite3_step $STMT
} SQLITE_ROW

check_header $STMT capi3-5.9 {a b c} {VARINT BLOB VARCHAR(16)}
check_origin_header $STMT capi3-5.9 {main main main} {t1 t1 t1} {a b c}







>
|
>







603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619

do_test capi3-5.5 {
  sqlite3_step $STMT
} SQLITE_ROW

check_header $STMT capi3-5.6 {a b c} {VARINT BLOB VARCHAR(16)}
check_origin_header $STMT capi3-5.6 {main main main} {t1 t1 t1} {a b c}
ifcapable !nan_inf {
  check_data $STMT capi3-5.7 {TEXT TEXT NULL} {0 0 0} {0.0 0.0 0.0} {one two {}}
}

do_test capi3-5.8 {
  sqlite3_step $STMT
} SQLITE_ROW

check_header $STMT capi3-5.9 {a b c} {VARINT BLOB VARCHAR(16)}
check_origin_header $STMT capi3-5.9 {main main main} {t1 t1 t1} {a b c}
Changes to test/capi3c.test.
573
574
575
576
577
578
579

580

581
582
583
584
585
586
587

do_test capi3c-5.5 {
  sqlite3_step $STMT
} SQLITE_ROW

check_header $STMT capi3c-5.6 {a b c} {VARINT BLOB VARCHAR(16)}
check_origin_header $STMT capi3c-5.6 {main main main} {t1 t1 t1} {a b c}

check_data $STMT capi3c-5.7 {TEXT TEXT NULL} {0 0 0} {0.0 0.0 0.0} {one two {}}


do_test capi3c-5.8 {
  sqlite3_step $STMT
} SQLITE_ROW

check_header $STMT capi3c-5.9 {a b c} {VARINT BLOB VARCHAR(16)}
check_origin_header $STMT capi3c-5.9 {main main main} {t1 t1 t1} {a b c}







>
|
>







573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589

do_test capi3c-5.5 {
  sqlite3_step $STMT
} SQLITE_ROW

check_header $STMT capi3c-5.6 {a b c} {VARINT BLOB VARCHAR(16)}
check_origin_header $STMT capi3c-5.6 {main main main} {t1 t1 t1} {a b c}
ifcapable !nan_inf {
  check_data $STMT capi3c-5.7 {TEXT TEXT NULL} {0 0 0} {0.0 0.0 0.0} {one two {}}
}

do_test capi3c-5.8 {
  sqlite3_step $STMT
} SQLITE_ROW

check_header $STMT capi3c-5.9 {a b c} {VARINT BLOB VARCHAR(16)}
check_origin_header $STMT capi3c-5.9 {main main main} {t1 t1 t1} {a b c}
Changes to test/expr.test.
386
387
388
389
390
391
392

393
394




395
396
397
398
399
400
401
  test_expr expr-2.19 {r1=2.34, r2=2.34} {r2=r1} 1
  test_expr expr-2.20 {r1=2.34, r2=2.34} {r2<>r1} 0
  test_expr expr-2.21 {r1=2.34, r2=2.34} {r2==r1} 1
  test_expr expr-2.22 {r1=1.23, r2=2.34} {min(r1,r2,r1+r2,r1-r2)} {-1.11}
  test_expr expr-2.23 {r1=1.23, r2=2.34} {max(r1,r2,r1+r2,r1-r2)} {3.57}
  test_expr expr-2.24 {r1=25.0, r2=11.0} {r1%r2} 3.0
  test_expr expr-2.25 {r1=1.23, r2=NULL} {coalesce(r1+r2,99.0)} 99.0

  test_expr expr-2.26 {r1=1e300, r2=1e300} {coalesce((r1*r2)*0.0,99.0)} 99.0
  test_expr expr-2.26b {r1=1e300, r2=-1e300} {coalesce((r1*r2)*0.0,99.0)} 99.0




  test_expr expr-2.27 {r1=1.1, r2=0.0} {r1/r2} {{}}
  test_expr expr-2.28 {r1=1.1, r2=0.0} {r1%r2} {{}}
}

test_expr expr-3.1 {t1='abc', t2='xyz'} {t1<t2} 1
test_expr expr-3.2 {t1='xyz', t2='abc'} {t1<t2} 0
test_expr expr-3.3 {t1='abc', t2='abc'} {t1<t2} 0







>
|
|
>
>
>
>







386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
  test_expr expr-2.19 {r1=2.34, r2=2.34} {r2=r1} 1
  test_expr expr-2.20 {r1=2.34, r2=2.34} {r2<>r1} 0
  test_expr expr-2.21 {r1=2.34, r2=2.34} {r2==r1} 1
  test_expr expr-2.22 {r1=1.23, r2=2.34} {min(r1,r2,r1+r2,r1-r2)} {-1.11}
  test_expr expr-2.23 {r1=1.23, r2=2.34} {max(r1,r2,r1+r2,r1-r2)} {3.57}
  test_expr expr-2.24 {r1=25.0, r2=11.0} {r1%r2} 3.0
  test_expr expr-2.25 {r1=1.23, r2=NULL} {coalesce(r1+r2,99.0)} 99.0
  ifcapable nan_inf {
    test_expr expr-2.26a {r1=1e300, r2=1e300} {coalesce((r1*r2)*0.0,99.0)} -NaN
    test_expr expr-2.26b {r1=1e300, r2=-1e300} {coalesce((r1*r2)*0.0,99.0)} -NaN
  } else {
    test_expr expr-2.26c {r1=1e300, r2=1e300} {coalesce((r1*r2)*0.0,99.0)} 99.0
    test_expr expr-2.26d {r1=1e300, r2=-1e300} {coalesce((r1*r2)*0.0,99.0)} 99.0
  }
  test_expr expr-2.27 {r1=1.1, r2=0.0} {r1/r2} {{}}
  test_expr expr-2.28 {r1=1.1, r2=0.0} {r1%r2} {{}}
}

test_expr expr-3.1 {t1='abc', t2='xyz'} {t1<t2} 1
test_expr expr-3.2 {t1='xyz', t2='abc'} {t1<t2} 0
test_expr expr-3.3 {t1='abc', t2='abc'} {t1<t2} 0
Changes to test/func4.test.
720
721
722
723
724
725
726

727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753

754
755
756
757
758
  } {2.225073858507201e-308}
  do_execsql_test func4-6.3.15 {
    SELECT toreal(x'fff0000000000000');
  } {-Inf}
  do_execsql_test func4-6.3.16 {
    SELECT toreal(x'7ff0000000000000');
  } {Inf}

  do_execsql_test func4-6.3.17 {
    SELECT toreal(x'fff8000000000000');
  } {{}}
  do_execsql_test func4-6.3.18 {
    SELECT toreal(x'fff0000000000001');
  } {{}}
  do_execsql_test func4-6.3.19 {
    SELECT toreal(x'fff7ffffffffffff');
  } {{}}
  do_execsql_test func4-6.3.20 {
    SELECT toreal(x'7ff0000000000001');
  } {{}}
  do_execsql_test func4-6.3.21 {
    SELECT toreal(x'7ff7ffffffffffff');
  } {{}}
  do_execsql_test func4-6.3.22 {
    SELECT toreal(x'fff8000000000001');
  } {{}}
  do_execsql_test func4-6.3.23 {
    SELECT toreal(x'ffffffffffffffff');
  } {{}}
  do_execsql_test func4-6.3.24 {
    SELECT toreal(x'7ff8000000000000');
  } {{}}
  do_execsql_test func4-6.3.25 {
    SELECT toreal(x'7fffffffffffffff');
  } {{}}

}

set tcl_precision $saved_tcl_precision
unset saved_tcl_precision
finish_test







>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>





720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
  } {2.225073858507201e-308}
  do_execsql_test func4-6.3.15 {
    SELECT toreal(x'fff0000000000000');
  } {-Inf}
  do_execsql_test func4-6.3.16 {
    SELECT toreal(x'7ff0000000000000');
  } {Inf}
  ifcapable !nan_inf {
    do_execsql_test func4-6.3.17 {
      SELECT toreal(x'fff8000000000000');
    } {{}}
    do_execsql_test func4-6.3.18 {
      SELECT toreal(x'fff0000000000001');
    } {{}}
    do_execsql_test func4-6.3.19 {
      SELECT toreal(x'fff7ffffffffffff');
    } {{}}
    do_execsql_test func4-6.3.20 {
      SELECT toreal(x'7ff0000000000001');
    } {{}}
    do_execsql_test func4-6.3.21 {
      SELECT toreal(x'7ff7ffffffffffff');
    } {{}}
    do_execsql_test func4-6.3.22 {
      SELECT toreal(x'fff8000000000001');
    } {{}}
    do_execsql_test func4-6.3.23 {
      SELECT toreal(x'ffffffffffffffff');
    } {{}}
    do_execsql_test func4-6.3.24 {
      SELECT toreal(x'7ff8000000000000');
    } {{}}
    do_execsql_test func4-6.3.25 {
      SELECT toreal(x'7fffffffffffffff');
    } {{}}
  }
}

set tcl_precision $saved_tcl_precision
unset saved_tcl_precision
finish_test
Changes to test/func7.test.
161
162
163
164
165
166
167

168
169




170

171
172
173
174
175
176
177
} {0.5493061}

# Test cases derived from MySQL documentation
#
do_execsql_test func7-mysql-100 {
   SELECT acos(1);
} {0.0}

do_execsql_test func7-mysql-110 {
   SELECT acos(1.0001);




} {{}}

do_execsql_test func7-mysql-120 {
   SELECT round( acos(0.0), 7);
} {1.5707963}
do_execsql_test func7-mysql-130 {
   SELECT round( asin(0.2), 7);
} {0.2013579}
do_execsql_test func7-mysql-140 {







>
|
|
>
>
>
>
|
>







161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
} {0.5493061}

# Test cases derived from MySQL documentation
#
do_execsql_test func7-mysql-100 {
   SELECT acos(1);
} {0.0}
ifcapable nan_inf {
  do_execsql_test func7-mysql-110a {
     SELECT acos(1.0001);
  } {NaN}
} else {
  do_execsql_test func7-mysql-110b {
     SELECT acos(1.0001);
  } {{}}
}
do_execsql_test func7-mysql-120 {
   SELECT round( acos(0.0), 7);
} {1.5707963}
do_execsql_test func7-mysql-130 {
   SELECT round( asin(0.2), 7);
} {0.2013579}
do_execsql_test func7-mysql-140 {
233
234
235
236
237
238
239

240
241




242

243
244
245
246
247
248
249
250
251
} {1.5707963}
do_execsql_test func7-mysql-300 {
   SELECT sign(-32), sign(0), sign(234);
} {-1 0 1}
do_execsql_test func7-mysql-310 {
   SELECT sin(pi()) BETWEEN -1.0e-15 AND 1.0e-15;
} {1}

do_execsql_test func7-mysql-320 {
   SELECT sqrt(4), round(sqrt(20),7), quote(sqrt(-16));




} {2.0 4.472136 NULL}

do_execsql_test func7-mysql-330 {
   SELECT tan(pi()) BETWEEN -1.0e-15 AND 1.0e-15;
} {1}
do_execsql_test func7-mysql-331 {
   SELECT round(tan(pi()+1),7);
} {1.5574077}


finish_test







>
|
|
>
>
>
>
|
>









239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
} {1.5707963}
do_execsql_test func7-mysql-300 {
   SELECT sign(-32), sign(0), sign(234);
} {-1 0 1}
do_execsql_test func7-mysql-310 {
   SELECT sin(pi()) BETWEEN -1.0e-15 AND 1.0e-15;
} {1}
ifcapable nan_inf {
  do_execsql_test func7-mysql-320a {
     SELECT sqrt(4), round(sqrt(20),7), quote(sqrt(-16));
  } {2.0 4.472136 NaN}
} else {
  do_execsql_test func7-mysql-320b {
     SELECT sqrt(4), round(sqrt(20),7), quote(sqrt(-16));
  } {2.0 4.472136 NULL}
}
do_execsql_test func7-mysql-330 {
   SELECT tan(pi()) BETWEEN -1.0e-15 AND 1.0e-15;
} {1}
do_execsql_test func7-mysql-331 {
   SELECT round(tan(pi()+1),7);
} {1.5574077}


finish_test
Changes to test/ieee754.test.
49
50
51
52
53
54
55

56
57
58

59
60
  ]
} {inf 1.79769313486232e+308}
do_test ieee754-111 {
  string tolower [
    db eval {SELECT ieee754(-1,1024), ieee754(-4503599627370495,972);}
  ]
} {-inf -1.79769313486232e+308}

do_execsql_test ieee754-112 {
  SELECT ieee754(4503599627370495,973) is null;
} {1}


finish_test







>
|
|
|
>


49
50
51
52
53
54
55
56
57
58
59
60
61
62
  ]
} {inf 1.79769313486232e+308}
do_test ieee754-111 {
  string tolower [
    db eval {SELECT ieee754(-1,1024), ieee754(-4503599627370495,972);}
  ]
} {-inf -1.79769313486232e+308}
ifcapable !nan_inf {
  do_execsql_test ieee754-112 {
    SELECT ieee754(4503599627370495,973) is null;
  } {1}
}

finish_test
Changes to test/istrue.test.
131
132
133
134
135
136
137





138
139
140

141
142
143
144
145
146
147
  do_test istrue-600.$tn.2 {
    set ::STMT [sqlite3_prepare db "INSERT INTO t1 VALUES(?)" -1 TAIL]
    sqlite3_bind_double $::STMT 1 $val
    sqlite3_step $::STMT
    sqlite3_reset $::STMT
    sqlite3_finalize $::STMT
  } {SQLITE_OK}





  do_execsql_test istrue-600.$tn.3 {
    SELECT x IS TRUE FROM t1;
  } [expr {$tn in [list 5 6] ? {1} : {0}}]

  do_execsql_test istrue-600.$tn.4 {
    SELECT x IS FALSE FROM t1;
  } {0}
}

ifcapable altertable {
  do_execsql_test istrue-700 {







>
>
>
>
>


<
>







131
132
133
134
135
136
137
138
139
140
141
142
143
144

145
146
147
148
149
150
151
152
  do_test istrue-600.$tn.2 {
    set ::STMT [sqlite3_prepare db "INSERT INTO t1 VALUES(?)" -1 TAIL]
    sqlite3_bind_double $::STMT 1 $val
    sqlite3_step $::STMT
    sqlite3_reset $::STMT
    sqlite3_finalize $::STMT
  } {SQLITE_OK}
  ifcapable nan_inf {
    set res 1
  } else {
    set res [expr {$tn in [list 5 6] ? {1} : {0}}]
  }
  do_execsql_test istrue-600.$tn.3 {
    SELECT x IS TRUE FROM t1;

  } $res
  do_execsql_test istrue-600.$tn.4 {
    SELECT x IS FALSE FROM t1;
  } {0}
}

ifcapable altertable {
  do_execsql_test istrue-700 {
Changes to test/nan.test.
19
20
21
22
23
24
25





26
27
28
29
30
31
32
# out of range.
#
# $Id: nan.test,v 1.5 2008/09/18 11:30:13 danielk1977 Exp $
#

set testdir [file dirname $argv0]
source $testdir/tester.tcl






# Do not use a codec for tests in this file, as the database file is
# manipulated directly using tcl scripts (using the [hexio_write] command).
#
do_not_use_codec

do_test nan-1.1.1 {







>
>
>
>
>







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# out of range.
#
# $Id: nan.test,v 1.5 2008/09/18 11:30:13 danielk1977 Exp $
#

set testdir [file dirname $argv0]
source $testdir/tester.tcl

ifcapable nan_inf {
  finish_test
  return
}

# Do not use a codec for tests in this file, as the database file is
# manipulated directly using tcl scripts (using the [hexio_write] command).
#
do_not_use_codec

do_test nan-1.1.1 {
Changes to tool/mkctimec.tcl.
145
146
147
148
149
150
151

152
153
154
155
156
157
158
  SQLITE_ENABLE_LOAD_EXTENSION
  SQLITE_ENABLE_LOCKING_STYLE
  SQLITE_ENABLE_MATH_FUNCTIONS
  SQLITE_ENABLE_MEMORY_MANAGEMENT
  SQLITE_ENABLE_MEMSYS3
  SQLITE_ENABLE_MEMSYS5
  SQLITE_ENABLE_MULTIPLEX

  SQLITE_ENABLE_NORMALIZE
  SQLITE_ENABLE_NULL_TRIM
  SQLITE_ENABLE_OFFSET_SQL_FUNC
  SQLITE_ENABLE_OVERSIZE_CELL_CHECK
  SQLITE_ENABLE_PREUPDATE_HOOK
  SQLITE_ENABLE_QPSG
  SQLITE_ENABLE_RBU







>







145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
  SQLITE_ENABLE_LOAD_EXTENSION
  SQLITE_ENABLE_LOCKING_STYLE
  SQLITE_ENABLE_MATH_FUNCTIONS
  SQLITE_ENABLE_MEMORY_MANAGEMENT
  SQLITE_ENABLE_MEMSYS3
  SQLITE_ENABLE_MEMSYS5
  SQLITE_ENABLE_MULTIPLEX
  SQLITE_ENABLE_NAN_INF
  SQLITE_ENABLE_NORMALIZE
  SQLITE_ENABLE_NULL_TRIM
  SQLITE_ENABLE_OFFSET_SQL_FUNC
  SQLITE_ENABLE_OVERSIZE_CELL_CHECK
  SQLITE_ENABLE_PREUPDATE_HOOK
  SQLITE_ENABLE_QPSG
  SQLITE_ENABLE_RBU