/ Hex Artifact Content
Login

Artifact 6beacdfcb0e18c358e6c2dcacf1b65d1fa80955f:


0000: 23 20 32 30 31 33 20 4d 61 72 63 68 20 31 30 0a  # 2013 March 10.
0010: 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64  #.# The author d
0020: 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67  isclaims copyrig
0030: 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63  ht to this sourc
0040: 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63  e code.  In plac
0050: 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e  e of.# a legal n
0060: 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61  otice, here is a
0070: 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20   blessing:.#.#  
0080: 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f    May you do goo
0090: 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a  d and not evil..
00a0: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e  #    May you fin
00b0: 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f  d forgiveness fo
00c0: 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66  r yourself and f
00d0: 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23  orgive others..#
00e0: 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72      May you shar
00f0: 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20  e freely, never 
0100: 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e  taking more than
0110: 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a   you give..#.#**
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 0a 23 20 54 68 69 73 20 66 69 6c  *****.# This fil
0170: 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 72 65 67  e implements reg
0180: 72 65 73 73 69 6f 6e 20 74 65 73 74 73 20 66 6f  ression tests fo
0190: 72 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  r SQLite library
01a0: 2e 20 54 68 65 20 66 6f 63 75 73 20 6f 66 0a 23  . The focus of.#
01b0: 20 74 68 69 73 20 66 69 6c 65 20 69 73 20 74 65   this file is te
01c0: 73 74 69 6e 67 20 74 68 65 20 74 6f 69 6e 74 65  sting the tointe
01d0: 67 65 72 28 29 20 61 6e 64 20 74 6f 72 65 61 6c  ger() and toreal
01e0: 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 23 0a  () functions..#.
01f0: 23 20 53 65 76 65 72 61 6c 20 6f 66 20 74 68 65  # Several of the
0200: 20 74 6f 72 65 61 6c 28 29 20 74 65 73 74 73 20   toreal() tests 
0210: 61 72 65 20 64 69 73 61 62 6c 65 64 20 6f 6e 20  are disabled on 
0220: 70 6c 61 74 66 6f 72 6d 73 20 77 68 65 72 65 20  platforms where 
0230: 66 6c 6f 61 74 69 6e 67 0a 23 20 70 6f 69 6e 74  floating.# point
0240: 20 70 72 65 63 69 73 69 6f 6e 20 69 73 20 6e 6f   precision is no
0250: 74 20 68 69 67 68 20 65 6e 6f 75 67 68 20 74 6f  t high enough to
0260: 20 72 65 70 72 65 73 65 6e 74 20 74 68 65 69 72   represent their
0270: 20 63 6f 6e 73 74 61 6e 74 20 69 6e 74 65 67 65   constant intege
0280: 72 0a 23 20 65 78 70 72 65 73 73 69 6f 6e 20 61  r.# expression a
0290: 72 67 75 6d 65 6e 74 73 20 61 73 20 64 6f 75 62  rguments as doub
02a0: 6c 65 20 70 72 65 63 69 73 69 6f 6e 20 66 6c 6f  le precision flo
02b0: 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75  ating point valu
02c0: 65 73 2e 0a 23 0a 73 65 74 20 74 65 73 74 64 69  es..#.set testdi
02d0: 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  r [file dirname 
02e0: 24 61 72 67 76 30 5d 0a 73 6f 75 72 63 65 20 24  $argv0].source $
02f0: 74 65 73 74 64 69 72 2f 74 65 73 74 65 72 2e 74  testdir/tester.t
0300: 63 6c 0a 73 65 74 20 73 61 76 65 64 5f 74 63 6c  cl.set saved_tcl
0310: 5f 70 72 65 63 69 73 69 6f 6e 20 24 74 63 6c 5f  _precision $tcl_
0320: 70 72 65 63 69 73 69 6f 6e 0a 73 65 74 20 74 63  precision.set tc
0330: 6c 5f 70 72 65 63 69 73 69 6f 6e 20 30 0a 6c 6f  l_precision 0.lo
0340: 61 64 5f 73 74 61 74 69 63 5f 65 78 74 65 6e 73  ad_static_extens
0350: 69 6f 6e 20 64 62 20 74 6f 74 79 70 65 0a 0a 73  ion db totype..s
0360: 65 74 20 68 69 67 68 50 72 65 63 69 73 69 6f 6e  et highPrecision
0370: 28 31 29 20 5b 65 78 70 72 20 5c 0a 20 20 20 20  (1) [expr \.    
0380: 7b 5b 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43  {[db eval {SELEC
0390: 54 20 74 6f 69 6e 74 65 67 65 72 28 39 32 32 33  T tointeger(9223
03a0: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37 20  372036854775807 
03b0: 2b 20 31 29 3b 7d 5d 20 65 71 20 7b 7b 7d 7d 7d  + 1);}] eq {{}}}
03c0: 5d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  ]..do_execsql_te
03d0: 73 74 20 66 75 6e 63 34 2d 31 2e 31 20 7b 0a 20  st func4-1.1 {. 
03e0: 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65   SELECT tointege
03f0: 72 28 4e 55 4c 4c 29 3b 0a 7d 20 7b 7b 7d 7d 0a  r(NULL);.} {{}}.
0400: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0410: 66 75 6e 63 34 2d 31 2e 32 20 7b 0a 20 20 53 45  func4-1.2 {.  SE
0420: 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 27  LECT tointeger('
0430: 27 29 3b 0a 7d 20 7b 7b 7d 7d 0a 64 6f 5f 65 78  ');.} {{}}.do_ex
0440: 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34  ecsql_test func4
0450: 2d 31 2e 33 20 7b 0a 20 20 53 45 4c 45 43 54 20  -1.3 {.  SELECT 
0460: 74 6f 69 6e 74 65 67 65 72 28 27 20 20 20 27 29  tointeger('   ')
0470: 3b 0a 7d 20 7b 7b 7d 7d 0a 64 6f 5f 65 78 65 63  ;.} {{}}.do_exec
0480: 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 31  sql_test func4-1
0490: 2e 34 20 7b 0a 20 20 53 45 4c 45 43 54 20 74 6f  .4 {.  SELECT to
04a0: 69 6e 74 65 67 65 72 28 27 31 32 33 34 27 29 3b  integer('1234');
04b0: 0a 7d 20 7b 31 32 33 34 7d 0a 64 6f 5f 65 78 65  .} {1234}.do_exe
04c0: 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d  csql_test func4-
04d0: 31 2e 35 20 7b 0a 20 20 53 45 4c 45 43 54 20 74  1.5 {.  SELECT t
04e0: 6f 69 6e 74 65 67 65 72 28 27 20 20 20 31 32 33  ointeger('   123
04f0: 34 27 29 3b 0a 7d 20 7b 7b 7d 7d 0a 64 6f 5f 65  4');.} {{}}.do_e
0500: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
0510: 34 2d 31 2e 36 20 7b 0a 20 20 53 45 4c 45 43 54  4-1.6 {.  SELECT
0520: 20 74 6f 69 6e 74 65 67 65 72 28 27 62 61 64 27   tointeger('bad'
0530: 29 3b 0a 7d 20 7b 7b 7d 7d 0a 64 6f 5f 65 78 65  );.} {{}}.do_exe
0540: 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d  csql_test func4-
0550: 31 2e 37 20 7b 0a 20 20 53 45 4c 45 43 54 20 74  1.7 {.  SELECT t
0560: 6f 69 6e 74 65 67 65 72 28 27 30 78 42 41 44 27  ointeger('0xBAD'
0570: 29 3b 0a 7d 20 7b 7b 7d 7d 0a 64 6f 5f 65 78 65  );.} {{}}.do_exe
0580: 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d  csql_test func4-
0590: 31 2e 38 20 7b 0a 20 20 53 45 4c 45 43 54 20 74  1.8 {.  SELECT t
05a0: 6f 69 6e 74 65 67 65 72 28 27 31 32 33 42 41 44  ointeger('123BAD
05b0: 27 29 3b 0a 7d 20 7b 7b 7d 7d 0a 64 6f 5f 65 78  ');.} {{}}.do_ex
05c0: 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34  ecsql_test func4
05d0: 2d 31 2e 39 20 7b 0a 20 20 53 45 4c 45 43 54 20  -1.9 {.  SELECT 
05e0: 74 6f 69 6e 74 65 67 65 72 28 27 30 78 31 32 33  tointeger('0x123
05f0: 42 41 44 27 29 3b 0a 7d 20 7b 7b 7d 7d 0a 64 6f  BAD');.} {{}}.do
0600: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75  _execsql_test fu
0610: 6e 63 34 2d 31 2e 31 30 20 7b 0a 20 20 53 45 4c  nc4-1.10 {.  SEL
0620: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 27 31  ECT tointeger('1
0630: 32 33 4e 4f 27 29 3b 0a 7d 20 7b 7b 7d 7d 0a 64  23NO');.} {{}}.d
0640: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66  o_execsql_test f
0650: 75 6e 63 34 2d 31 2e 31 31 20 7b 0a 20 20 53 45  unc4-1.11 {.  SE
0660: 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 27  LECT tointeger('
0670: 30 78 31 32 33 4e 4f 27 29 3b 0a 7d 20 7b 7b 7d  0x123NO');.} {{}
0680: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
0690: 74 20 66 75 6e 63 34 2d 31 2e 31 32 20 7b 0a 20  t func4-1.12 {. 
06a0: 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65   SELECT tointege
06b0: 72 28 27 2d 30 78 31 27 29 3b 0a 7d 20 7b 7b 7d  r('-0x1');.} {{}
06c0: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
06d0: 74 20 66 75 6e 63 34 2d 31 2e 31 33 20 7b 0a 20  t func4-1.13 {. 
06e0: 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65   SELECT tointege
06f0: 72 28 27 2d 30 78 30 27 29 3b 0a 7d 20 7b 7b 7d  r('-0x0');.} {{}
0700: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
0710: 74 20 66 75 6e 63 34 2d 31 2e 31 34 20 7b 0a 20  t func4-1.14 {. 
0720: 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65   SELECT tointege
0730: 72 28 27 30 78 30 27 29 3b 0a 7d 20 7b 7b 7d 7d  r('0x0');.} {{}}
0740: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
0750: 20 66 75 6e 63 34 2d 31 2e 31 35 20 7b 0a 20 20   func4-1.15 {.  
0760: 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72  SELECT tointeger
0770: 28 27 30 78 31 27 29 3b 0a 7d 20 7b 7b 7d 7d 0a  ('0x1');.} {{}}.
0780: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0790: 66 75 6e 63 34 2d 31 2e 31 36 20 7b 0a 20 20 53  func4-1.16 {.  S
07a0: 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28  ELECT tointeger(
07b0: 2d 31 29 3b 0a 7d 20 7b 2d 31 7d 0a 64 6f 5f 65  -1);.} {-1}.do_e
07c0: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
07d0: 34 2d 31 2e 31 37 20 7b 0a 20 20 53 45 4c 45 43  4-1.17 {.  SELEC
07e0: 54 20 74 6f 69 6e 74 65 67 65 72 28 2d 30 29 3b  T tointeger(-0);
07f0: 0a 7d 20 7b 30 7d 0a 64 6f 5f 65 78 65 63 73 71  .} {0}.do_execsq
0800: 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 31 2e 31  l_test func4-1.1
0810: 38 20 7b 0a 20 20 53 45 4c 45 43 54 20 74 6f 69  8 {.  SELECT toi
0820: 6e 74 65 67 65 72 28 30 29 3b 0a 7d 20 7b 30 7d  nteger(0);.} {0}
0830: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
0840: 20 66 75 6e 63 34 2d 31 2e 31 39 20 7b 0a 20 20   func4-1.19 {.  
0850: 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72  SELECT tointeger
0860: 28 31 29 3b 0a 7d 20 7b 31 7d 0a 64 6f 5f 65 78  (1);.} {1}.do_ex
0870: 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34  ecsql_test func4
0880: 2d 31 2e 32 30 20 7b 0a 20 20 53 45 4c 45 43 54  -1.20 {.  SELECT
0890: 20 74 6f 69 6e 74 65 67 65 72 28 2d 31 2e 37 39   tointeger(-1.79
08a0: 37 36 39 33 31 33 34 38 36 32 33 32 65 33 30 38  769313486232e308
08b0: 20 2d 20 31 29 3b 0a 7d 20 7b 7b 7d 7d 0a 64 6f   - 1);.} {{}}.do
08c0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75  _execsql_test fu
08d0: 6e 63 34 2d 31 2e 32 31 20 7b 0a 20 20 53 45 4c  nc4-1.21 {.  SEL
08e0: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 2d 31  ECT tointeger(-1
08f0: 2e 37 39 37 36 39 33 31 33 34 38 36 32 33 32 65  .79769313486232e
0900: 33 30 38 29 3b 0a 7d 20 7b 7b 7d 7d 0a 64 6f 5f  308);.} {{}}.do_
0910: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
0920: 63 34 2d 31 2e 32 32 20 7b 0a 20 20 53 45 4c 45  c4-1.22 {.  SELE
0930: 43 54 20 74 6f 69 6e 74 65 67 65 72 28 2d 31 2e  CT tointeger(-1.
0940: 37 39 37 36 39 33 31 33 34 38 36 32 33 32 65 33  79769313486232e3
0950: 30 38 20 2b 20 31 29 3b 0a 7d 20 7b 7b 7d 7d 0a  08 + 1);.} {{}}.
0960: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0970: 66 75 6e 63 34 2d 31 2e 32 33 20 7b 0a 20 20 53  func4-1.23 {.  S
0980: 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28  ELECT tointeger(
0990: 2d 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37  -922337203685477
09a0: 35 38 30 38 20 2d 20 31 29 3b 0a 7d 20 7b 2d 39  5808 - 1);.} {-9
09b0: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
09c0: 30 38 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  08}.do_execsql_t
09d0: 65 73 74 20 66 75 6e 63 34 2d 31 2e 32 34 20 7b  est func4-1.24 {
09e0: 0a 20 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65  .  SELECT tointe
09f0: 67 65 72 28 2d 39 32 32 33 33 37 32 30 33 36 38  ger(-92233720368
0a00: 35 34 37 37 35 38 30 38 29 3b 0a 7d 20 7b 2d 39  54775808);.} {-9
0a10: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
0a20: 30 38 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  08}.do_execsql_t
0a30: 65 73 74 20 66 75 6e 63 34 2d 31 2e 32 35 20 7b  est func4-1.25 {
0a40: 0a 20 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65  .  SELECT tointe
0a50: 67 65 72 28 2d 39 32 32 33 33 37 32 30 33 36 38  ger(-92233720368
0a60: 35 34 37 37 35 38 30 38 20 2b 20 31 29 3b 0a 7d  54775808 + 1);.}
0a70: 20 7b 2d 39 32 32 33 33 37 32 30 33 36 38 35 34   {-9223372036854
0a80: 37 37 35 38 30 37 7d 0a 64 6f 5f 65 78 65 63 73  775807}.do_execs
0a90: 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 31 2e  ql_test func4-1.
0aa0: 32 36 20 7b 0a 20 20 53 45 4c 45 43 54 20 74 6f  26 {.  SELECT to
0ab0: 69 6e 74 65 67 65 72 28 2d 39 32 32 33 33 37 32  integer(-9223372
0ac0: 30 33 36 38 35 34 37 37 35 38 30 37 20 2d 20 31  036854775807 - 1
0ad0: 29 3b 0a 7d 20 7b 2d 39 32 32 33 33 37 32 30 33  );.} {-922337203
0ae0: 36 38 35 34 37 37 35 38 30 38 7d 0a 64 6f 5f 65  6854775808}.do_e
0af0: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
0b00: 34 2d 31 2e 32 37 20 7b 0a 20 20 53 45 4c 45 43  4-1.27 {.  SELEC
0b10: 54 20 74 6f 69 6e 74 65 67 65 72 28 2d 39 32 32  T tointeger(-922
0b20: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
0b30: 29 3b 0a 7d 20 7b 2d 39 32 32 33 33 37 32 30 33  );.} {-922337203
0b40: 36 38 35 34 37 37 35 38 30 37 7d 0a 64 6f 5f 65  6854775807}.do_e
0b50: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
0b60: 34 2d 31 2e 32 38 20 7b 0a 20 20 53 45 4c 45 43  4-1.28 {.  SELEC
0b70: 54 20 74 6f 69 6e 74 65 67 65 72 28 2d 39 32 32  T tointeger(-922
0b80: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
0b90: 20 2b 20 31 29 3b 0a 7d 20 7b 2d 39 32 32 33 33   + 1);.} {-92233
0ba0: 37 32 30 33 36 38 35 34 37 37 35 38 30 36 7d 0a  72036854775806}.
0bb0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0bc0: 66 75 6e 63 34 2d 31 2e 32 39 20 7b 0a 20 20 53  func4-1.29 {.  S
0bd0: 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28  ELECT tointeger(
0be0: 2d 32 31 34 37 34 38 33 36 34 38 20 2d 20 31 29  -2147483648 - 1)
0bf0: 3b 0a 7d 20 7b 2d 32 31 34 37 34 38 33 36 34 39  ;.} {-2147483649
0c00: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
0c10: 74 20 66 75 6e 63 34 2d 31 2e 33 30 20 7b 0a 20  t func4-1.30 {. 
0c20: 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65   SELECT tointege
0c30: 72 28 2d 32 31 34 37 34 38 33 36 34 38 29 3b 0a  r(-2147483648);.
0c40: 7d 20 7b 2d 32 31 34 37 34 38 33 36 34 38 7d 0a  } {-2147483648}.
0c50: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0c60: 66 75 6e 63 34 2d 31 2e 33 31 20 7b 0a 20 20 53  func4-1.31 {.  S
0c70: 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28  ELECT tointeger(
0c80: 2d 32 31 34 37 34 38 33 36 34 38 20 2b 20 31 29  -2147483648 + 1)
0c90: 3b 0a 7d 20 7b 2d 32 31 34 37 34 38 33 36 34 37  ;.} {-2147483647
0ca0: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
0cb0: 74 20 66 75 6e 63 34 2d 31 2e 33 32 20 7b 0a 20  t func4-1.32 {. 
0cc0: 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65   SELECT tointege
0cd0: 72 28 32 31 34 37 34 38 33 36 34 37 20 2d 20 31  r(2147483647 - 1
0ce0: 29 3b 0a 7d 20 7b 32 31 34 37 34 38 33 36 34 36  );.} {2147483646
0cf0: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
0d00: 74 20 66 75 6e 63 34 2d 31 2e 33 33 20 7b 0a 20  t func4-1.33 {. 
0d10: 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65   SELECT tointege
0d20: 72 28 32 31 34 37 34 38 33 36 34 37 29 3b 0a 7d  r(2147483647);.}
0d30: 20 7b 32 31 34 37 34 38 33 36 34 37 7d 0a 64 6f   {2147483647}.do
0d40: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75  _execsql_test fu
0d50: 6e 63 34 2d 31 2e 33 34 20 7b 0a 20 20 53 45 4c  nc4-1.34 {.  SEL
0d60: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 32 31  ECT tointeger(21
0d70: 34 37 34 38 33 36 34 37 20 2b 20 31 29 3b 0a 7d  47483647 + 1);.}
0d80: 20 7b 32 31 34 37 34 38 33 36 34 38 7d 0a 64 6f   {2147483648}.do
0d90: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75  _execsql_test fu
0da0: 6e 63 34 2d 31 2e 33 35 20 7b 0a 20 20 53 45 4c  nc4-1.35 {.  SEL
0db0: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 39 32  ECT tointeger(92
0dc0: 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30  2337203685477580
0dd0: 37 20 2d 20 31 29 3b 0a 7d 20 7b 39 32 32 33 33  7 - 1);.} {92233
0de0: 37 32 30 33 36 38 35 34 37 37 35 38 30 36 7d 0a  72036854775806}.
0df0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0e00: 66 75 6e 63 34 2d 31 2e 33 36 20 7b 0a 20 20 53  func4-1.36 {.  S
0e10: 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28  ELECT tointeger(
0e20: 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35  9223372036854775
0e30: 38 30 37 29 3b 0a 7d 20 7b 39 32 32 33 33 37 32  807);.} {9223372
0e40: 30 33 36 38 35 34 37 37 35 38 30 37 7d 0a 69 66  036854775807}.if
0e50: 20 7b 24 68 69 67 68 50 72 65 63 69 73 69 6f 6e   {$highPrecision
0e60: 28 31 29 7d 20 7b 0a 20 20 64 6f 5f 65 78 65 63  (1)} {.  do_exec
0e70: 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 31  sql_test func4-1
0e80: 2e 33 37 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  .37 {.    SELECT
0e90: 20 74 6f 69 6e 74 65 67 65 72 28 39 32 32 33 33   tointeger(92233
0ea0: 37 32 30 33 36 38 35 34 37 37 35 38 30 37 20 2b  72036854775807 +
0eb0: 20 31 29 3b 0a 20 20 7d 20 7b 7b 7d 7d 0a 7d 0a   1);.  } {{}}.}.
0ec0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0ed0: 66 75 6e 63 34 2d 31 2e 33 38 20 7b 0a 20 20 53  func4-1.38 {.  S
0ee0: 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28  ELECT tointeger(
0ef0: 31 2e 37 39 37 36 39 33 31 33 34 38 36 32 33 32  1.79769313486232
0f00: 65 33 30 38 20 2d 20 31 29 3b 0a 7d 20 7b 7b 7d  e308 - 1);.} {{}
0f10: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
0f20: 74 20 66 75 6e 63 34 2d 31 2e 33 39 20 7b 0a 20  t func4-1.39 {. 
0f30: 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65   SELECT tointege
0f40: 72 28 31 2e 37 39 37 36 39 33 31 33 34 38 36 32  r(1.797693134862
0f50: 33 32 65 33 30 38 29 3b 0a 7d 20 7b 7b 7d 7d 0a  32e308);.} {{}}.
0f60: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0f70: 66 75 6e 63 34 2d 31 2e 34 30 20 7b 0a 20 20 53  func4-1.40 {.  S
0f80: 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28  ELECT tointeger(
0f90: 31 2e 37 39 37 36 39 33 31 33 34 38 36 32 33 32  1.79769313486232
0fa0: 65 33 30 38 20 2b 20 31 29 3b 0a 7d 20 7b 7b 7d  e308 + 1);.} {{}
0fb0: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
0fc0: 74 20 66 75 6e 63 34 2d 31 2e 34 31 20 7b 0a 20  t func4-1.41 {. 
0fd0: 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65   SELECT tointege
0fe0: 72 28 34 35 30 33 35 39 39 36 32 37 33 37 30 34  r(45035996273704
0ff0: 39 36 20 2d 20 31 29 3b 0a 7d 20 7b 34 35 30 33  96 - 1);.} {4503
1000: 35 39 39 36 32 37 33 37 30 34 39 35 7d 0a 64 6f  599627370495}.do
1010: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75  _execsql_test fu
1020: 6e 63 34 2d 31 2e 34 32 20 7b 0a 20 20 53 45 4c  nc4-1.42 {.  SEL
1030: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 34 35  ECT tointeger(45
1040: 30 33 35 39 39 36 32 37 33 37 30 34 39 36 29 3b  03599627370496);
1050: 0a 7d 20 7b 34 35 30 33 35 39 39 36 32 37 33 37  .} {450359962737
1060: 30 34 39 36 7d 0a 64 6f 5f 65 78 65 63 73 71 6c  0496}.do_execsql
1070: 5f 74 65 73 74 20 66 75 6e 63 34 2d 31 2e 34 33  _test func4-1.43
1080: 20 7b 0a 20 20 53 45 4c 45 43 54 20 74 6f 69 6e   {.  SELECT toin
1090: 74 65 67 65 72 28 34 35 30 33 35 39 39 36 32 37  teger(4503599627
10a0: 33 37 30 34 39 36 20 2b 20 31 29 3b 0a 7d 20 7b  370496 + 1);.} {
10b0: 34 35 30 33 35 39 39 36 32 37 33 37 30 34 39 37  4503599627370497
10c0: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
10d0: 74 20 66 75 6e 63 34 2d 31 2e 34 34 20 7b 0a 20  t func4-1.44 {. 
10e0: 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65   SELECT tointege
10f0: 72 28 39 30 30 37 31 39 39 32 35 34 37 34 30 39  r(90071992547409
1100: 39 32 20 2d 20 31 29 3b 0a 7d 20 7b 39 30 30 37  92 - 1);.} {9007
1110: 31 39 39 32 35 34 37 34 30 39 39 31 7d 0a 64 6f  199254740991}.do
1120: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75  _execsql_test fu
1130: 6e 63 34 2d 31 2e 34 35 20 7b 0a 20 20 53 45 4c  nc4-1.45 {.  SEL
1140: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 39 30  ECT tointeger(90
1150: 30 37 31 39 39 32 35 34 37 34 30 39 39 32 29 3b  07199254740992);
1160: 0a 7d 20 7b 39 30 30 37 31 39 39 32 35 34 37 34  .} {900719925474
1170: 30 39 39 32 7d 0a 64 6f 5f 65 78 65 63 73 71 6c  0992}.do_execsql
1180: 5f 74 65 73 74 20 66 75 6e 63 34 2d 31 2e 34 36  _test func4-1.46
1190: 20 7b 0a 20 20 53 45 4c 45 43 54 20 74 6f 69 6e   {.  SELECT toin
11a0: 74 65 67 65 72 28 39 30 30 37 31 39 39 32 35 34  teger(9007199254
11b0: 37 34 30 39 39 32 20 2b 20 31 29 3b 0a 7d 20 7b  740992 + 1);.} {
11c0: 39 30 30 37 31 39 39 32 35 34 37 34 30 39 39 33  9007199254740993
11d0: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
11e0: 74 20 66 75 6e 63 34 2d 31 2e 34 37 20 7b 0a 20  t func4-1.47 {. 
11f0: 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65   SELECT tointege
1200: 72 28 39 32 32 33 33 37 32 30 33 36 38 35 34 37  r(92233720368547
1210: 37 35 38 30 37 20 2d 20 31 29 3b 0a 7d 20 7b 39  75807 - 1);.} {9
1220: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
1230: 30 36 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  06}.do_execsql_t
1240: 65 73 74 20 66 75 6e 63 34 2d 31 2e 34 38 20 7b  est func4-1.48 {
1250: 0a 20 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65  .  SELECT tointe
1260: 67 65 72 28 39 32 32 33 33 37 32 30 33 36 38 35  ger(922337203685
1270: 34 37 37 35 38 30 37 29 3b 0a 7d 20 7b 39 32 32  4775807);.} {922
1280: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
1290: 7d 0a 69 66 20 7b 24 68 69 67 68 50 72 65 63 69  }.if {$highPreci
12a0: 73 69 6f 6e 28 31 29 7d 20 7b 0a 20 20 64 6f 5f  sion(1)} {.  do_
12b0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
12c0: 63 34 2d 31 2e 34 39 20 7b 0a 20 20 20 20 53 45  c4-1.49 {.    SE
12d0: 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 39  LECT tointeger(9
12e0: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
12f0: 30 37 20 2b 20 31 29 3b 0a 20 20 7d 20 7b 7b 7d  07 + 1);.  } {{}
1300: 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74  }.  do_execsql_t
1310: 65 73 74 20 66 75 6e 63 34 2d 31 2e 35 30 20 7b  est func4-1.50 {
1320: 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 69 6e  .    SELECT toin
1330: 74 65 67 65 72 28 39 32 32 33 33 37 32 30 33 36  teger(9223372036
1340: 38 35 34 37 37 35 38 30 38 20 2d 20 31 29 3b 0a  854775808 - 1);.
1350: 20 20 7d 20 7b 7b 7d 7d 0a 20 20 64 6f 5f 65 78    } {{}}.  do_ex
1360: 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34  ecsql_test func4
1370: 2d 31 2e 35 31 20 7b 0a 20 20 20 20 53 45 4c 45  -1.51 {.    SELE
1380: 43 54 20 74 6f 69 6e 74 65 67 65 72 28 39 32 32  CT tointeger(922
1390: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 38  3372036854775808
13a0: 29 3b 0a 20 20 7d 20 7b 7b 7d 7d 0a 20 20 64 6f  );.  } {{}}.  do
13b0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75  _execsql_test fu
13c0: 6e 63 34 2d 31 2e 35 32 20 7b 0a 20 20 20 20 53  nc4-1.52 {.    S
13d0: 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28  ELECT tointeger(
13e0: 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35  9223372036854775
13f0: 38 30 38 20 2b 20 31 29 3b 0a 20 20 7d 20 7b 7b  808 + 1);.  } {{
1400: 7d 7d 0a 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  }}.}.do_execsql_
1410: 74 65 73 74 20 66 75 6e 63 34 2d 31 2e 35 33 20  test func4-1.53 
1420: 7b 0a 20 20 53 45 4c 45 43 54 20 74 6f 69 6e 74  {.  SELECT toint
1430: 65 67 65 72 28 31 38 34 34 36 37 34 34 30 37 33  eger(18446744073
1440: 37 30 39 35 35 31 36 31 36 20 2d 20 31 29 3b 0a  709551616 - 1);.
1450: 7d 20 7b 7b 7d 7d 0a 64 6f 5f 65 78 65 63 73 71  } {{}}.do_execsq
1460: 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 31 2e 35  l_test func4-1.5
1470: 34 20 7b 0a 20 20 53 45 4c 45 43 54 20 74 6f 69  4 {.  SELECT toi
1480: 6e 74 65 67 65 72 28 31 38 34 34 36 37 34 34 30  nteger(184467440
1490: 37 33 37 30 39 35 35 31 36 31 36 29 3b 0a 7d 20  73709551616);.} 
14a0: 7b 7b 7d 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  {{}}.do_execsql_
14b0: 74 65 73 74 20 66 75 6e 63 34 2d 31 2e 35 35 20  test func4-1.55 
14c0: 7b 0a 20 20 53 45 4c 45 43 54 20 74 6f 69 6e 74  {.  SELECT toint
14d0: 65 67 65 72 28 31 38 34 34 36 37 34 34 30 37 33  eger(18446744073
14e0: 37 30 39 35 35 31 36 31 36 20 2b 20 31 29 3b 0a  709551616 + 1);.
14f0: 7d 20 7b 7b 7d 7d 0a 0a 69 66 63 61 70 61 62 6c  } {{}}..ifcapabl
1500: 65 20 66 6c 6f 61 74 69 6e 67 70 6f 69 6e 74 20  e floatingpoint 
1510: 7b 0a 20 20 73 65 74 20 68 69 67 68 50 72 65 63  {.  set highPrec
1520: 69 73 69 6f 6e 28 32 29 20 5b 65 78 70 72 20 5c  ision(2) [expr \
1530: 0a 20 20 20 20 20 20 7b 5b 64 62 20 65 76 61 6c  .      {[db eval
1540: 20 7b 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28   {SELECT toreal(
1550: 2d 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37  -922337203685477
1560: 35 38 30 38 20 2b 20 31 29 3b 7d 5d 20 65 71 20  5808 + 1);}] eq 
1570: 7b 7b 7d 7d 7d 5d 0a 0a 20 20 64 6f 5f 65 78 65  {{}}}]..  do_exe
1580: 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d  csql_test func4-
1590: 32 2e 31 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  2.1 {.    SELECT
15a0: 20 74 6f 72 65 61 6c 28 4e 55 4c 4c 29 3b 0a 20   toreal(NULL);. 
15b0: 20 7d 20 7b 7b 7d 7d 0a 20 20 64 6f 5f 65 78 65   } {{}}.  do_exe
15c0: 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d  csql_test func4-
15d0: 32 2e 32 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  2.2 {.    SELECT
15e0: 20 74 6f 72 65 61 6c 28 27 27 29 3b 0a 20 20 7d   toreal('');.  }
15f0: 20 7b 7b 7d 7d 0a 20 20 64 6f 5f 65 78 65 63 73   {{}}.  do_execs
1600: 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 32 2e  ql_test func4-2.
1610: 33 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74  3 {.    SELECT t
1620: 6f 72 65 61 6c 28 27 20 20 20 27 29 3b 0a 20 20  oreal('   ');.  
1630: 7d 20 7b 7b 7d 7d 0a 20 20 64 6f 5f 65 78 65 63  } {{}}.  do_exec
1640: 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 32  sql_test func4-2
1650: 2e 34 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  .4 {.    SELECT 
1660: 74 6f 72 65 61 6c 28 27 31 32 33 34 27 29 3b 0a  toreal('1234');.
1670: 20 20 7d 20 7b 31 32 33 34 2e 30 7d 0a 20 20 64    } {1234.0}.  d
1680: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66  o_execsql_test f
1690: 75 6e 63 34 2d 32 2e 35 20 7b 0a 20 20 20 20 53  unc4-2.5 {.    S
16a0: 45 4c 45 43 54 20 74 6f 72 65 61 6c 28 27 20 20  ELECT toreal('  
16b0: 20 31 32 33 34 27 29 3b 0a 20 20 7d 20 7b 7b 7d   1234');.  } {{}
16c0: 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74  }.  do_execsql_t
16d0: 65 73 74 20 66 75 6e 63 34 2d 32 2e 36 20 7b 0a  est func4-2.6 {.
16e0: 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61      SELECT torea
16f0: 6c 28 27 62 61 64 27 29 3b 0a 20 20 7d 20 7b 7b  l('bad');.  } {{
1700: 7d 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f  }}.  do_execsql_
1710: 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 37 20 7b  test func4-2.7 {
1720: 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65  .    SELECT tore
1730: 61 6c 28 27 30 78 42 41 44 27 29 3b 0a 20 20 7d  al('0xBAD');.  }
1740: 20 7b 7b 7d 7d 0a 20 20 64 6f 5f 65 78 65 63 73   {{}}.  do_execs
1750: 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 32 2e  ql_test func4-2.
1760: 38 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74  8 {.    SELECT t
1770: 6f 72 65 61 6c 28 27 31 32 33 42 41 44 27 29 3b  oreal('123BAD');
1780: 0a 20 20 7d 20 7b 7b 7d 7d 0a 20 20 64 6f 5f 65  .  } {{}}.  do_e
1790: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
17a0: 34 2d 32 2e 39 20 7b 0a 20 20 20 20 53 45 4c 45  4-2.9 {.    SELE
17b0: 43 54 20 74 6f 72 65 61 6c 28 27 30 78 31 32 33  CT toreal('0x123
17c0: 42 41 44 27 29 3b 0a 20 20 7d 20 7b 7b 7d 7d 0a  BAD');.  } {{}}.
17d0: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
17e0: 74 20 66 75 6e 63 34 2d 32 2e 31 30 20 7b 0a 20  t func4-2.10 {. 
17f0: 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c     SELECT toreal
1800: 28 27 31 32 33 4e 4f 27 29 3b 0a 20 20 7d 20 7b  ('123NO');.  } {
1810: 7b 7d 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c  {}}.  do_execsql
1820: 5f 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 31 31  _test func4-2.11
1830: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f   {.    SELECT to
1840: 72 65 61 6c 28 27 30 78 31 32 33 4e 4f 27 29 3b  real('0x123NO');
1850: 0a 20 20 7d 20 7b 7b 7d 7d 0a 20 20 64 6f 5f 65  .  } {{}}.  do_e
1860: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
1870: 34 2d 32 2e 31 32 20 7b 0a 20 20 20 20 53 45 4c  4-2.12 {.    SEL
1880: 45 43 54 20 74 6f 72 65 61 6c 28 27 2d 30 78 31  ECT toreal('-0x1
1890: 27 29 3b 0a 20 20 7d 20 7b 7b 7d 7d 0a 20 20 64  ');.  } {{}}.  d
18a0: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66  o_execsql_test f
18b0: 75 6e 63 34 2d 32 2e 31 33 20 7b 0a 20 20 20 20  unc4-2.13 {.    
18c0: 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28 27 2d  SELECT toreal('-
18d0: 30 78 30 27 29 3b 0a 20 20 7d 20 7b 7b 7d 7d 0a  0x0');.  } {{}}.
18e0: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
18f0: 74 20 66 75 6e 63 34 2d 32 2e 31 34 20 7b 0a 20  t func4-2.14 {. 
1900: 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c     SELECT toreal
1910: 28 27 30 78 30 27 29 3b 0a 20 20 7d 20 7b 7b 7d  ('0x0');.  } {{}
1920: 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74  }.  do_execsql_t
1930: 65 73 74 20 66 75 6e 63 34 2d 32 2e 31 35 20 7b  est func4-2.15 {
1940: 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65  .    SELECT tore
1950: 61 6c 28 27 30 78 31 27 29 3b 0a 20 20 7d 20 7b  al('0x1');.  } {
1960: 7b 7d 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c  {}}.  do_execsql
1970: 5f 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 31 36  _test func4-2.16
1980: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f   {.    SELECT to
1990: 72 65 61 6c 28 2d 31 29 3b 0a 20 20 7d 20 7b 2d  real(-1);.  } {-
19a0: 31 2e 30 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71  1.0}.  do_execsq
19b0: 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 31  l_test func4-2.1
19c0: 37 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74  7 {.    SELECT t
19d0: 6f 72 65 61 6c 28 2d 30 29 3b 0a 20 20 7d 20 7b  oreal(-0);.  } {
19e0: 30 2e 30 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71  0.0}.  do_execsq
19f0: 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 31  l_test func4-2.1
1a00: 38 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74  8 {.    SELECT t
1a10: 6f 72 65 61 6c 28 30 29 3b 0a 20 20 7d 20 7b 30  oreal(0);.  } {0
1a20: 2e 30 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c  .0}.  do_execsql
1a30: 5f 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 31 39  _test func4-2.19
1a40: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f   {.    SELECT to
1a50: 72 65 61 6c 28 31 29 3b 0a 20 20 7d 20 7b 31 2e  real(1);.  } {1.
1a60: 30 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f  0}.  do_execsql_
1a70: 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 32 30 20  test func4-2.20 
1a80: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72  {.    SELECT tor
1a90: 65 61 6c 28 2d 31 2e 37 39 37 36 39 33 31 33 34  eal(-1.797693134
1aa0: 38 36 32 33 32 65 33 30 38 20 2d 20 31 29 3b 0a  86232e308 - 1);.
1ab0: 20 20 7d 20 7b 2d 49 6e 66 7d 0a 20 20 64 6f 5f    } {-Inf}.  do_
1ac0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
1ad0: 63 34 2d 32 2e 32 31 20 7b 0a 20 20 20 20 53 45  c4-2.21 {.    SE
1ae0: 4c 45 43 54 20 74 6f 72 65 61 6c 28 2d 31 2e 37  LECT toreal(-1.7
1af0: 39 37 36 39 33 31 33 34 38 36 32 33 32 65 33 30  9769313486232e30
1b00: 38 29 3b 0a 20 20 7d 20 7b 2d 49 6e 66 7d 0a 20  8);.  } {-Inf}. 
1b10: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
1b20: 20 66 75 6e 63 34 2d 32 2e 32 32 20 7b 0a 20 20   func4-2.22 {.  
1b30: 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28    SELECT toreal(
1b40: 2d 31 2e 37 39 37 36 39 33 31 33 34 38 36 32 33  -1.7976931348623
1b50: 32 65 33 30 38 20 2b 20 31 29 3b 0a 20 20 7d 20  2e308 + 1);.  } 
1b60: 7b 2d 49 6e 66 7d 0a 20 20 64 6f 5f 65 78 65 63  {-Inf}.  do_exec
1b70: 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 32  sql_test func4-2
1b80: 2e 32 33 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  .23 {.    SELECT
1b90: 20 74 6f 72 65 61 6c 28 2d 39 32 32 33 33 37 32   toreal(-9223372
1ba0: 30 33 36 38 35 34 37 37 35 38 30 38 20 2d 20 31  036854775808 - 1
1bb0: 29 3b 0a 20 20 7d 20 7b 2d 39 2e 32 32 33 33 37  );.  } {-9.22337
1bc0: 32 30 33 36 38 35 34 37 37 36 65 2b 31 38 7d 0a  2036854776e+18}.
1bd0: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
1be0: 74 20 66 75 6e 63 34 2d 32 2e 32 34 20 7b 0a 20  t func4-2.24 {. 
1bf0: 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c     SELECT toreal
1c00: 28 2d 39 32 32 33 33 37 32 30 33 36 38 35 34 37  (-92233720368547
1c10: 37 35 38 30 38 29 3b 0a 20 20 7d 20 7b 2d 39 2e  75808);.  } {-9.
1c20: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 36 65  223372036854776e
1c30: 2b 31 38 7d 0a 20 20 69 66 20 7b 24 68 69 67 68  +18}.  if {$high
1c40: 50 72 65 63 69 73 69 6f 6e 28 32 29 7d 20 7b 0a  Precision(2)} {.
1c50: 20 20 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74      do_execsql_t
1c60: 65 73 74 20 66 75 6e 63 34 2d 32 2e 32 35 20 7b  est func4-2.25 {
1c70: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 74 6f  .      SELECT to
1c80: 72 65 61 6c 28 2d 39 32 32 33 33 37 32 30 33 36  real(-9223372036
1c90: 38 35 34 37 37 35 38 30 38 20 2b 20 31 29 3b 0a  854775808 + 1);.
1ca0: 20 20 20 20 7d 20 7b 7b 7d 7d 0a 20 20 7d 0a 20      } {{}}.  }. 
1cb0: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
1cc0: 20 66 75 6e 63 34 2d 32 2e 32 36 20 7b 0a 20 20   func4-2.26 {.  
1cd0: 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28    SELECT toreal(
1ce0: 2d 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37  -922337203685477
1cf0: 35 38 30 37 20 2d 20 31 29 3b 0a 20 20 7d 20 7b  5807 - 1);.  } {
1d00: 2d 39 2e 32 32 33 33 37 32 30 33 36 38 35 34 37  -9.2233720368547
1d10: 37 36 65 2b 31 38 7d 0a 20 20 69 66 20 7b 24 68  76e+18}.  if {$h
1d20: 69 67 68 50 72 65 63 69 73 69 6f 6e 28 32 29 7d  ighPrecision(2)}
1d30: 20 7b 0a 20 20 20 20 64 6f 5f 65 78 65 63 73 71   {.    do_execsq
1d40: 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 32  l_test func4-2.2
1d50: 37 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  7 {.      SELECT
1d60: 20 74 6f 72 65 61 6c 28 2d 39 32 32 33 33 37 32   toreal(-9223372
1d70: 30 33 36 38 35 34 37 37 35 38 30 37 29 3b 0a 20  036854775807);. 
1d80: 20 20 20 7d 20 7b 7b 7d 7d 0a 20 20 20 20 64 6f     } {{}}.    do
1d90: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75  _execsql_test fu
1da0: 6e 63 34 2d 32 2e 32 38 20 7b 0a 20 20 20 20 20  nc4-2.28 {.     
1db0: 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28 2d   SELECT toreal(-
1dc0: 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35  9223372036854775
1dd0: 38 30 37 20 2b 20 31 29 3b 0a 20 20 20 20 7d 20  807 + 1);.    } 
1de0: 7b 7b 7d 7d 0a 20 20 7d 0a 20 20 64 6f 5f 65 78  {{}}.  }.  do_ex
1df0: 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34  ecsql_test func4
1e00: 2d 32 2e 32 39 20 7b 0a 20 20 20 20 53 45 4c 45  -2.29 {.    SELE
1e10: 43 54 20 74 6f 72 65 61 6c 28 2d 32 31 34 37 34  CT toreal(-21474
1e20: 38 33 36 34 38 20 2d 20 31 29 3b 0a 20 20 7d 20  83648 - 1);.  } 
1e30: 7b 2d 32 31 34 37 34 38 33 36 34 39 2e 30 7d 0a  {-2147483649.0}.
1e40: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
1e50: 74 20 66 75 6e 63 34 2d 32 2e 33 30 20 7b 0a 20  t func4-2.30 {. 
1e60: 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c     SELECT toreal
1e70: 28 2d 32 31 34 37 34 38 33 36 34 38 29 3b 0a 20  (-2147483648);. 
1e80: 20 7d 20 7b 2d 32 31 34 37 34 38 33 36 34 38 2e   } {-2147483648.
1e90: 30 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f  0}.  do_execsql_
1ea0: 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 33 31 20  test func4-2.31 
1eb0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72  {.    SELECT tor
1ec0: 65 61 6c 28 2d 32 31 34 37 34 38 33 36 34 38 20  eal(-2147483648 
1ed0: 2b 20 31 29 3b 0a 20 20 7d 20 7b 2d 32 31 34 37  + 1);.  } {-2147
1ee0: 34 38 33 36 34 37 2e 30 7d 0a 20 20 64 6f 5f 65  483647.0}.  do_e
1ef0: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
1f00: 34 2d 32 2e 33 32 20 7b 0a 20 20 20 20 53 45 4c  4-2.32 {.    SEL
1f10: 45 43 54 20 74 6f 72 65 61 6c 28 32 31 34 37 34  ECT toreal(21474
1f20: 38 33 36 34 37 20 2d 20 31 29 3b 0a 20 20 7d 20  83647 - 1);.  } 
1f30: 7b 32 31 34 37 34 38 33 36 34 36 2e 30 7d 0a 20  {2147483646.0}. 
1f40: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
1f50: 20 66 75 6e 63 34 2d 32 2e 33 33 20 7b 0a 20 20   func4-2.33 {.  
1f60: 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28    SELECT toreal(
1f70: 32 31 34 37 34 38 33 36 34 37 29 3b 0a 20 20 7d  2147483647);.  }
1f80: 20 7b 32 31 34 37 34 38 33 36 34 37 2e 30 7d 0a   {2147483647.0}.
1f90: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
1fa0: 74 20 66 75 6e 63 34 2d 32 2e 33 34 20 7b 0a 20  t func4-2.34 {. 
1fb0: 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c     SELECT toreal
1fc0: 28 32 31 34 37 34 38 33 36 34 37 20 2b 20 31 29  (2147483647 + 1)
1fd0: 3b 0a 20 20 7d 20 7b 32 31 34 37 34 38 33 36 34  ;.  } {214748364
1fe0: 38 2e 30 7d 0a 20 20 69 66 20 7b 24 68 69 67 68  8.0}.  if {$high
1ff0: 50 72 65 63 69 73 69 6f 6e 28 32 29 7d 20 7b 0a  Precision(2)} {.
2000: 20 20 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74      do_execsql_t
2010: 65 73 74 20 66 75 6e 63 34 2d 32 2e 33 35 20 7b  est func4-2.35 {
2020: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 74 6f  .      SELECT to
2030: 72 65 61 6c 28 39 32 32 33 33 37 32 30 33 36 38  real(92233720368
2040: 35 34 37 37 35 38 30 37 20 2d 20 31 29 3b 0a 20  54775807 - 1);. 
2050: 20 20 20 7d 20 7b 7b 7d 7d 0a 20 20 20 20 69 66     } {{}}.    if
2060: 20 7b 24 68 69 67 68 50 72 65 63 69 73 69 6f 6e   {$highPrecision
2070: 28 31 29 7d 20 7b 0a 20 20 20 20 20 20 64 6f 5f  (1)} {.      do_
2080: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
2090: 63 34 2d 32 2e 33 36 20 7b 0a 20 20 20 20 20 20  c4-2.36 {.      
20a0: 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28    SELECT toreal(
20b0: 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35  9223372036854775
20c0: 38 30 37 29 3b 0a 20 20 20 20 20 20 7d 20 7b 7b  807);.      } {{
20d0: 7d 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 64  }}.    }.  }.  d
20e0: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66  o_execsql_test f
20f0: 75 6e 63 34 2d 32 2e 33 37 20 7b 0a 20 20 20 20  unc4-2.37 {.    
2100: 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28 39 32  SELECT toreal(92
2110: 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30  2337203685477580
2120: 37 20 2b 20 31 29 3b 0a 20 20 7d 20 7b 39 2e 32  7 + 1);.  } {9.2
2130: 32 33 33 37 32 30 33 36 38 35 34 37 37 36 65 2b  23372036854776e+
2140: 31 38 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c  18}.  do_execsql
2150: 5f 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 33 38  _test func4-2.38
2160: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f   {.    SELECT to
2170: 72 65 61 6c 28 31 2e 37 39 37 36 39 33 31 33 34  real(1.797693134
2180: 38 36 32 33 32 65 33 30 38 20 2d 20 31 29 3b 0a  86232e308 - 1);.
2190: 20 20 7d 20 7b 49 6e 66 7d 0a 20 20 64 6f 5f 65    } {Inf}.  do_e
21a0: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
21b0: 34 2d 32 2e 33 39 20 7b 0a 20 20 20 20 53 45 4c  4-2.39 {.    SEL
21c0: 45 43 54 20 74 6f 72 65 61 6c 28 31 2e 37 39 37  ECT toreal(1.797
21d0: 36 39 33 31 33 34 38 36 32 33 32 65 33 30 38 29  69313486232e308)
21e0: 3b 0a 20 20 7d 20 7b 49 6e 66 7d 0a 20 20 64 6f  ;.  } {Inf}.  do
21f0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75  _execsql_test fu
2200: 6e 63 34 2d 32 2e 34 30 20 7b 0a 20 20 20 20 53  nc4-2.40 {.    S
2210: 45 4c 45 43 54 20 74 6f 72 65 61 6c 28 31 2e 37  ELECT toreal(1.7
2220: 39 37 36 39 33 31 33 34 38 36 32 33 32 65 33 30  9769313486232e30
2230: 38 20 2b 20 31 29 3b 0a 20 20 7d 20 7b 49 6e 66  8 + 1);.  } {Inf
2240: 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74  }.  do_execsql_t
2250: 65 73 74 20 66 75 6e 63 34 2d 32 2e 34 31 20 7b  est func4-2.41 {
2260: 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65  .    SELECT tore
2270: 61 6c 28 34 35 30 33 35 39 39 36 32 37 33 37 30  al(4503599627370
2280: 34 39 36 20 2d 20 31 29 3b 0a 20 20 7d 20 7b 34  496 - 1);.  } {4
2290: 35 30 33 35 39 39 36 32 37 33 37 30 34 39 35 2e  503599627370495.
22a0: 30 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f  0}.  do_execsql_
22b0: 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 34 32 20  test func4-2.42 
22c0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72  {.    SELECT tor
22d0: 65 61 6c 28 34 35 30 33 35 39 39 36 32 37 33 37  eal(450359962737
22e0: 30 34 39 36 29 3b 0a 20 20 7d 20 7b 34 35 30 33  0496);.  } {4503
22f0: 35 39 39 36 32 37 33 37 30 34 39 36 2e 30 7d 0a  599627370496.0}.
2300: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
2310: 74 20 66 75 6e 63 34 2d 32 2e 34 33 20 7b 0a 20  t func4-2.43 {. 
2320: 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c     SELECT toreal
2330: 28 34 35 30 33 35 39 39 36 32 37 33 37 30 34 39  (450359962737049
2340: 36 20 2b 20 31 29 3b 0a 20 20 7d 20 7b 34 35 30  6 + 1);.  } {450
2350: 33 35 39 39 36 32 37 33 37 30 34 39 37 2e 30 7d  3599627370497.0}
2360: 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  .  do_execsql_te
2370: 73 74 20 66 75 6e 63 34 2d 32 2e 34 34 20 7b 0a  st func4-2.44 {.
2380: 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61      SELECT torea
2390: 6c 28 39 30 30 37 31 39 39 32 35 34 37 34 30 39  l(90071992547409
23a0: 39 32 20 2d 20 31 29 3b 0a 20 20 7d 20 7b 39 30  92 - 1);.  } {90
23b0: 30 37 31 39 39 32 35 34 37 34 30 39 39 31 2e 30  07199254740991.0
23c0: 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74  }.  do_execsql_t
23d0: 65 73 74 20 66 75 6e 63 34 2d 32 2e 34 35 20 7b  est func4-2.45 {
23e0: 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65  .    SELECT tore
23f0: 61 6c 28 39 30 30 37 31 39 39 32 35 34 37 34 30  al(9007199254740
2400: 39 39 32 29 3b 0a 20 20 7d 20 7b 39 30 30 37 31  992);.  } {90071
2410: 39 39 32 35 34 37 34 30 39 39 32 2e 30 7d 0a 20  99254740992.0}. 
2420: 20 69 66 20 7b 24 68 69 67 68 50 72 65 63 69 73   if {$highPrecis
2430: 69 6f 6e 28 32 29 7d 20 7b 0a 20 20 20 20 64 6f  ion(2)} {.    do
2440: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75  _execsql_test fu
2450: 6e 63 34 2d 32 2e 34 36 20 7b 0a 20 20 20 20 20  nc4-2.46 {.     
2460: 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28 39   SELECT toreal(9
2470: 30 30 37 31 39 39 32 35 34 37 34 30 39 39 32 20  007199254740992 
2480: 2b 20 31 29 3b 0a 20 20 20 20 7d 20 7b 7b 7d 7d  + 1);.    } {{}}
2490: 0a 20 20 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71  .  }.  do_execsq
24a0: 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 34  l_test func4-2.4
24b0: 37 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74  7 {.    SELECT t
24c0: 6f 72 65 61 6c 28 39 30 30 37 31 39 39 32 35 34  oreal(9007199254
24d0: 37 34 30 39 39 32 20 2b 20 32 29 3b 0a 20 20 7d  740992 + 2);.  }
24e0: 20 7b 39 30 30 37 31 39 39 32 35 34 37 34 30 39   {90071992547409
24f0: 39 34 2e 30 7d 0a 20 20 64 6f 5f 65 78 65 63 73  94.0}.  do_execs
2500: 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 32 2e  ql_test func4-2.
2510: 34 38 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  48 {.    SELECT 
2520: 74 6f 72 65 61 6c 28 74 6f 69 6e 74 65 67 65 72  toreal(tointeger
2530: 28 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37  (922337203685477
2540: 35 38 30 38 29 20 2d 20 31 29 3b 0a 20 20 7d 20  5808) - 1);.  } 
2550: 7b 7b 7d 7d 0a 20 20 69 66 20 7b 24 68 69 67 68  {{}}.  if {$high
2560: 50 72 65 63 69 73 69 6f 6e 28 31 29 7d 20 7b 0a  Precision(1)} {.
2570: 20 20 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74      do_execsql_t
2580: 65 73 74 20 66 75 6e 63 34 2d 32 2e 34 39 20 7b  est func4-2.49 {
2590: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 74 6f  .      SELECT to
25a0: 72 65 61 6c 28 74 6f 69 6e 74 65 67 65 72 28 39  real(tointeger(9
25b0: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
25c0: 30 38 29 29 3b 0a 20 20 20 20 7d 20 7b 7b 7d 7d  08));.    } {{}}
25d0: 0a 20 20 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f  .    do_execsql_
25e0: 74 65 73 74 20 66 75 6e 63 34 2d 32 2e 35 30 20  test func4-2.50 
25f0: 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 74  {.      SELECT t
2600: 6f 72 65 61 6c 28 74 6f 69 6e 74 65 67 65 72 28  oreal(tointeger(
2610: 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35  9223372036854775
2620: 38 30 38 29 20 2b 20 31 29 3b 0a 20 20 20 20 7d  808) + 1);.    }
2630: 20 7b 7b 7d 7d 0a 20 20 7d 0a 20 20 64 6f 5f 65   {{}}.  }.  do_e
2640: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
2650: 34 2d 32 2e 35 31 20 7b 0a 20 20 20 20 53 45 4c  4-2.51 {.    SEL
2660: 45 43 54 20 74 6f 72 65 61 6c 28 74 6f 69 6e 74  ECT toreal(toint
2670: 65 67 65 72 28 31 38 34 34 36 37 34 34 30 37 33  eger(18446744073
2680: 37 30 39 35 35 31 36 31 36 29 20 2d 20 31 29 3b  709551616) - 1);
2690: 0a 20 20 7d 20 7b 7b 7d 7d 0a 20 20 64 6f 5f 65  .  } {{}}.  do_e
26a0: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
26b0: 34 2d 32 2e 35 32 20 7b 0a 20 20 20 20 53 45 4c  4-2.52 {.    SEL
26c0: 45 43 54 20 74 6f 72 65 61 6c 28 74 6f 69 6e 74  ECT toreal(toint
26d0: 65 67 65 72 28 31 38 34 34 36 37 34 34 30 37 33  eger(18446744073
26e0: 37 30 39 35 35 31 36 31 36 29 29 3b 0a 20 20 7d  709551616));.  }
26f0: 20 7b 7b 7d 7d 0a 20 20 64 6f 5f 65 78 65 63 73   {{}}.  do_execs
2700: 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 32 2e  ql_test func4-2.
2710: 35 33 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  53 {.    SELECT 
2720: 74 6f 72 65 61 6c 28 74 6f 69 6e 74 65 67 65 72  toreal(tointeger
2730: 28 31 38 34 34 36 37 34 34 30 37 33 37 30 39 35  (184467440737095
2740: 35 31 36 31 36 29 20 2b 20 31 29 3b 0a 20 20 7d  51616) + 1);.  }
2750: 20 7b 7b 7d 7d 0a 7d 0a 0a 69 66 63 61 70 61 62   {{}}.}..ifcapab
2760: 6c 65 20 63 68 65 63 6b 20 7b 0a 20 20 64 6f 5f  le check {.  do_
2770: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
2780: 63 34 2d 33 2e 31 20 7b 0a 20 20 20 20 43 52 45  c4-3.1 {.    CRE
2790: 41 54 45 20 54 41 42 4c 45 20 74 31 28 0a 20 20  ATE TABLE t1(.  
27a0: 20 20 20 20 78 20 49 4e 54 45 47 45 52 20 43 48      x INTEGER CH
27b0: 45 43 4b 28 74 6f 69 6e 74 65 67 65 72 28 78 29  ECK(tointeger(x)
27c0: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 29 0a 20 20   IS NOT NULL).  
27d0: 20 20 29 3b 0a 20 20 7d 20 7b 7d 0a 20 20 64 6f    );.  } {}.  do
27e0: 5f 74 65 73 74 20 66 75 6e 63 34 2d 33 2e 32 20  _test func4-3.2 
27f0: 7b 0a 20 20 20 20 63 61 74 63 68 73 71 6c 20 7b  {.    catchsql {
2800: 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e  .      INSERT IN
2810: 54 4f 20 74 31 20 28 78 29 20 56 41 4c 55 45 53  TO t1 (x) VALUES
2820: 20 28 4e 55 4c 4c 29 3b 0a 20 20 20 20 7d 0a 20   (NULL);.    }. 
2830: 20 7d 20 7b 31 20 7b 43 48 45 43 4b 20 63 6f 6e   } {1 {CHECK con
2840: 73 74 72 61 69 6e 74 20 66 61 69 6c 65 64 3a 20  straint failed: 
2850: 74 31 7d 7d 0a 20 20 64 6f 5f 74 65 73 74 20 66  t1}}.  do_test f
2860: 75 6e 63 34 2d 33 2e 33 20 7b 0a 20 20 20 20 63  unc4-3.3 {.    c
2870: 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 20 20  atchsql {.      
2880: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 28  INSERT INTO t1 (
2890: 78 29 20 56 41 4c 55 45 53 20 28 4e 55 4c 4c 29  x) VALUES (NULL)
28a0: 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 7b  ;.    }.  } {1 {
28b0: 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74  CHECK constraint
28c0: 20 66 61 69 6c 65 64 3a 20 74 31 7d 7d 0a 20 20   failed: t1}}.  
28d0: 64 6f 5f 74 65 73 74 20 66 75 6e 63 34 2d 33 2e  do_test func4-3.
28e0: 34 20 7b 0a 20 20 20 20 63 61 74 63 68 73 71 6c  4 {.    catchsql
28f0: 20 7b 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20   {.      INSERT 
2900: 49 4e 54 4f 20 74 31 20 28 78 29 20 56 41 4c 55  INTO t1 (x) VALU
2910: 45 53 20 28 27 27 29 3b 0a 20 20 20 20 7d 0a 20  ES ('');.    }. 
2920: 20 7d 20 7b 31 20 7b 43 48 45 43 4b 20 63 6f 6e   } {1 {CHECK con
2930: 73 74 72 61 69 6e 74 20 66 61 69 6c 65 64 3a 20  straint failed: 
2940: 74 31 7d 7d 0a 20 20 64 6f 5f 74 65 73 74 20 66  t1}}.  do_test f
2950: 75 6e 63 34 2d 33 2e 35 20 7b 0a 20 20 20 20 63  unc4-3.5 {.    c
2960: 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 20 20  atchsql {.      
2970: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 28  INSERT INTO t1 (
2980: 78 29 20 56 41 4c 55 45 53 20 28 27 62 61 64 27  x) VALUES ('bad'
2990: 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20  );.    }.  } {1 
29a0: 7b 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e  {CHECK constrain
29b0: 74 20 66 61 69 6c 65 64 3a 20 74 31 7d 7d 0a 20  t failed: t1}}. 
29c0: 20 64 6f 5f 74 65 73 74 20 66 75 6e 63 34 2d 33   do_test func4-3
29d0: 2e 36 20 7b 0a 20 20 20 20 63 61 74 63 68 73 71  .6 {.    catchsq
29e0: 6c 20 7b 0a 20 20 20 20 20 20 49 4e 53 45 52 54  l {.      INSERT
29f0: 20 49 4e 54 4f 20 74 31 20 28 78 29 20 56 41 4c   INTO t1 (x) VAL
2a00: 55 45 53 20 28 27 31 32 33 34 62 61 64 27 29 3b  UES ('1234bad');
2a10: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 7b 43  .    }.  } {1 {C
2a20: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 20  HECK constraint 
2a30: 66 61 69 6c 65 64 3a 20 74 31 7d 7d 0a 20 20 64  failed: t1}}.  d
2a40: 6f 5f 74 65 73 74 20 66 75 6e 63 34 2d 33 2e 37  o_test func4-3.7
2a50: 20 7b 0a 20 20 20 20 63 61 74 63 68 73 71 6c 20   {.    catchsql 
2a60: 7b 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49  {.      INSERT I
2a70: 4e 54 4f 20 74 31 20 28 78 29 20 56 41 4c 55 45  NTO t1 (x) VALUE
2a80: 53 20 28 27 31 32 33 34 2e 35 36 62 61 64 27 29  S ('1234.56bad')
2a90: 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 7b  ;.    }.  } {1 {
2aa0: 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74  CHECK constraint
2ab0: 20 66 61 69 6c 65 64 3a 20 74 31 7d 7d 0a 20 20   failed: t1}}.  
2ac0: 64 6f 5f 74 65 73 74 20 66 75 6e 63 34 2d 33 2e  do_test func4-3.
2ad0: 38 20 7b 0a 20 20 20 20 63 61 74 63 68 73 71 6c  8 {.    catchsql
2ae0: 20 7b 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20   {.      INSERT 
2af0: 49 4e 54 4f 20 74 31 20 28 78 29 20 56 41 4c 55  INTO t1 (x) VALU
2b00: 45 53 20 28 31 32 33 34 29 3b 0a 20 20 20 20 7d  ES (1234);.    }
2b10: 0a 20 20 7d 20 7b 30 20 7b 7d 7d 0a 20 20 64 6f  .  } {0 {}}.  do
2b20: 5f 74 65 73 74 20 66 75 6e 63 34 2d 33 2e 39 20  _test func4-3.9 
2b30: 7b 0a 20 20 20 20 63 61 74 63 68 73 71 6c 20 7b  {.    catchsql {
2b40: 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e  .      INSERT IN
2b50: 54 4f 20 74 31 20 28 78 29 20 56 41 4c 55 45 53  TO t1 (x) VALUES
2b60: 20 28 31 32 33 34 2e 35 36 29 3b 0a 20 20 20 20   (1234.56);.    
2b70: 7d 0a 20 20 7d 20 7b 31 20 7b 43 48 45 43 4b 20  }.  } {1 {CHECK 
2b80: 63 6f 6e 73 74 72 61 69 6e 74 20 66 61 69 6c 65  constraint faile
2b90: 64 3a 20 74 31 7d 7d 0a 20 20 64 6f 5f 74 65 73  d: t1}}.  do_tes
2ba0: 74 20 66 75 6e 63 34 2d 33 2e 31 30 20 7b 0a 20  t func4-3.10 {. 
2bb0: 20 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20     catchsql {.  
2bc0: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
2bd0: 74 31 20 28 78 29 20 56 41 4c 55 45 53 20 28 27  t1 (x) VALUES ('
2be0: 31 32 33 34 27 29 3b 0a 20 20 20 20 7d 0a 20 20  1234');.    }.  
2bf0: 7d 20 7b 30 20 7b 7d 7d 0a 20 20 64 6f 5f 74 65  } {0 {}}.  do_te
2c00: 73 74 20 66 75 6e 63 34 2d 33 2e 31 31 20 7b 0a  st func4-3.11 {.
2c10: 20 20 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20      catchsql {. 
2c20: 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f       INSERT INTO
2c30: 20 74 31 20 28 78 29 20 56 41 4c 55 45 53 20 28   t1 (x) VALUES (
2c40: 27 31 32 33 34 2e 35 36 27 29 3b 0a 20 20 20 20  '1234.56');.    
2c50: 7d 0a 20 20 7d 20 7b 31 20 7b 43 48 45 43 4b 20  }.  } {1 {CHECK 
2c60: 63 6f 6e 73 74 72 61 69 6e 74 20 66 61 69 6c 65  constraint faile
2c70: 64 3a 20 74 31 7d 7d 0a 20 20 64 6f 5f 74 65 73  d: t1}}.  do_tes
2c80: 74 20 66 75 6e 63 34 2d 33 2e 31 32 20 7b 0a 20  t func4-3.12 {. 
2c90: 20 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20     catchsql {.  
2ca0: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
2cb0: 74 31 20 28 78 29 20 56 41 4c 55 45 53 20 28 5a  t1 (x) VALUES (Z
2cc0: 45 52 4f 42 4c 4f 42 28 34 29 29 3b 0a 20 20 20  EROBLOB(4));.   
2cd0: 20 7d 0a 20 20 7d 20 7b 31 20 7b 43 48 45 43 4b   }.  } {1 {CHECK
2ce0: 20 63 6f 6e 73 74 72 61 69 6e 74 20 66 61 69 6c   constraint fail
2cf0: 65 64 3a 20 74 31 7d 7d 0a 20 20 64 6f 5f 74 65  ed: t1}}.  do_te
2d00: 73 74 20 66 75 6e 63 34 2d 33 2e 31 33 20 7b 0a  st func4-3.13 {.
2d10: 20 20 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20      catchsql {. 
2d20: 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f       INSERT INTO
2d30: 20 74 31 20 28 78 29 20 56 41 4c 55 45 53 20 28   t1 (x) VALUES (
2d40: 58 27 27 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 20  X'');.    }.  } 
2d50: 7b 31 20 7b 43 48 45 43 4b 20 63 6f 6e 73 74 72  {1 {CHECK constr
2d60: 61 69 6e 74 20 66 61 69 6c 65 64 3a 20 74 31 7d  aint failed: t1}
2d70: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 66 75 6e 63  }.  do_test func
2d80: 34 2d 33 2e 31 34 20 7b 0a 20 20 20 20 63 61 74  4-3.14 {.    cat
2d90: 63 68 73 71 6c 20 7b 0a 20 20 20 20 20 20 49 4e  chsql {.      IN
2da0: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 28 78 29  SERT INTO t1 (x)
2db0: 20 56 41 4c 55 45 53 20 28 58 27 31 32 33 34 27   VALUES (X'1234'
2dc0: 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20  );.    }.  } {1 
2dd0: 7b 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e  {CHECK constrain
2de0: 74 20 66 61 69 6c 65 64 3a 20 74 31 7d 7d 0a 20  t failed: t1}}. 
2df0: 20 64 6f 5f 74 65 73 74 20 66 75 6e 63 34 2d 33   do_test func4-3
2e00: 2e 31 35 20 7b 0a 20 20 20 20 63 61 74 63 68 73  .15 {.    catchs
2e10: 71 6c 20 7b 0a 20 20 20 20 20 20 49 4e 53 45 52  ql {.      INSER
2e20: 54 20 49 4e 54 4f 20 74 31 20 28 78 29 20 56 41  T INTO t1 (x) VA
2e30: 4c 55 45 53 20 28 58 27 31 32 33 34 35 36 37 38  LUES (X'12345678
2e40: 27 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31  ');.    }.  } {1
2e50: 20 7b 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69   {CHECK constrai
2e60: 6e 74 20 66 61 69 6c 65 64 3a 20 74 31 7d 7d 0a  nt failed: t1}}.
2e70: 20 20 64 6f 5f 74 65 73 74 20 66 75 6e 63 34 2d    do_test func4-
2e80: 33 2e 31 36 20 7b 0a 20 20 20 20 63 61 74 63 68  3.16 {.    catch
2e90: 73 71 6c 20 7b 0a 20 20 20 20 20 20 49 4e 53 45  sql {.      INSE
2ea0: 52 54 20 49 4e 54 4f 20 74 31 20 28 78 29 20 56  RT INTO t1 (x) V
2eb0: 41 4c 55 45 53 20 28 27 31 32 33 34 2e 30 30 27  ALUES ('1234.00'
2ec0: 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20  );.    }.  } {1 
2ed0: 7b 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e  {CHECK constrain
2ee0: 74 20 66 61 69 6c 65 64 3a 20 74 31 7d 7d 0a 20  t failed: t1}}. 
2ef0: 20 64 6f 5f 74 65 73 74 20 66 75 6e 63 34 2d 33   do_test func4-3
2f00: 2e 31 37 20 7b 0a 20 20 20 20 63 61 74 63 68 73  .17 {.    catchs
2f10: 71 6c 20 7b 0a 20 20 20 20 20 20 49 4e 53 45 52  ql {.      INSER
2f20: 54 20 49 4e 54 4f 20 74 31 20 28 78 29 20 56 41  T INTO t1 (x) VA
2f30: 4c 55 45 53 20 28 31 32 33 34 2e 30 30 29 3b 0a  LUES (1234.00);.
2f40: 20 20 20 20 7d 0a 20 20 7d 20 7b 30 20 7b 7d 7d      }.  } {0 {}}
2f50: 0a 20 20 64 6f 5f 74 65 73 74 20 66 75 6e 63 34  .  do_test func4
2f60: 2d 33 2e 31 38 20 7b 0a 20 20 20 20 63 61 74 63  -3.18 {.    catc
2f70: 68 73 71 6c 20 7b 0a 20 20 20 20 20 20 49 4e 53  hsql {.      INS
2f80: 45 52 54 20 49 4e 54 4f 20 74 31 20 28 78 29 20  ERT INTO t1 (x) 
2f90: 56 41 4c 55 45 53 20 28 27 2d 39 32 32 33 33 37  VALUES ('-922337
2fa0: 32 30 33 36 38 35 34 37 37 35 38 30 39 27 29 3b  2036854775809');
2fb0: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 7b 43  .    }.  } {1 {C
2fc0: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 20  HECK constraint 
2fd0: 66 61 69 6c 65 64 3a 20 74 31 7d 7d 0a 20 20 69  failed: t1}}.  i
2fe0: 66 20 7b 24 68 69 67 68 50 72 65 63 69 73 69 6f  f {$highPrecisio
2ff0: 6e 28 31 29 7d 20 7b 0a 20 20 20 20 64 6f 5f 74  n(1)} {.    do_t
3000: 65 73 74 20 66 75 6e 63 34 2d 33 2e 31 39 20 7b  est func4-3.19 {
3010: 0a 20 20 20 20 20 20 63 61 74 63 68 73 71 6c 20  .      catchsql 
3020: 7b 0a 20 20 20 20 20 20 20 20 49 4e 53 45 52 54  {.        INSERT
3030: 20 49 4e 54 4f 20 74 31 20 28 78 29 20 56 41 4c   INTO t1 (x) VAL
3040: 55 45 53 20 28 39 32 32 33 33 37 32 30 33 36 38  UES (92233720368
3050: 35 34 37 37 35 38 30 38 29 3b 0a 20 20 20 20 20  54775808);.     
3060: 20 7d 0a 20 20 20 20 7d 20 7b 31 20 7b 43 48 45   }.    } {1 {CHE
3070: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 20 66 61  CK constraint fa
3080: 69 6c 65 64 3a 20 74 31 7d 7d 0a 20 20 7d 0a 20  iled: t1}}.  }. 
3090: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
30a0: 20 66 75 6e 63 34 2d 33 2e 32 30 20 7b 0a 20 20   func4-3.20 {.  
30b0: 20 20 53 45 4c 45 43 54 20 78 20 46 52 4f 4d 20    SELECT x FROM 
30c0: 74 31 20 4f 52 44 45 52 20 42 59 20 78 3b 0a 20  t1 ORDER BY x;. 
30d0: 20 7d 20 7b 31 32 33 34 20 31 32 33 34 20 31 32   } {1234 1234 12
30e0: 33 34 7d 0a 0a 20 20 69 66 63 61 70 61 62 6c 65  34}..  ifcapable
30f0: 20 66 6c 6f 61 74 69 6e 67 70 6f 69 6e 74 20 7b   floatingpoint {
3100: 0a 20 20 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f  .    do_execsql_
3110: 74 65 73 74 20 66 75 6e 63 34 2d 34 2e 31 20 7b  test func4-4.1 {
3120: 0a 20 20 20 20 20 20 43 52 45 41 54 45 20 54 41  .      CREATE TA
3130: 42 4c 45 20 74 32 28 0a 20 20 20 20 20 20 20 20  BLE t2(.        
3140: 78 20 52 45 41 4c 20 43 48 45 43 4b 28 74 6f 72  x REAL CHECK(tor
3150: 65 61 6c 28 78 29 20 49 53 20 4e 4f 54 20 4e 55  eal(x) IS NOT NU
3160: 4c 4c 29 0a 20 20 20 20 20 20 29 3b 0a 20 20 20  LL).      );.   
3170: 20 7d 20 7b 7d 0a 20 20 20 20 64 6f 5f 74 65 73   } {}.    do_tes
3180: 74 20 66 75 6e 63 34 2d 34 2e 32 20 7b 0a 20 20  t func4-4.2 {.  
3190: 20 20 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20      catchsql {. 
31a0: 20 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e         INSERT IN
31b0: 54 4f 20 74 32 20 28 78 29 20 56 41 4c 55 45 53  TO t2 (x) VALUES
31c0: 20 28 4e 55 4c 4c 29 3b 0a 20 20 20 20 20 20 7d   (NULL);.      }
31d0: 0a 20 20 20 20 7d 20 7b 31 20 7b 43 48 45 43 4b  .    } {1 {CHECK
31e0: 20 63 6f 6e 73 74 72 61 69 6e 74 20 66 61 69 6c   constraint fail
31f0: 65 64 3a 20 74 32 7d 7d 0a 20 20 20 20 64 6f 5f  ed: t2}}.    do_
3200: 74 65 73 74 20 66 75 6e 63 34 2d 34 2e 33 20 7b  test func4-4.3 {
3210: 0a 20 20 20 20 20 20 63 61 74 63 68 73 71 6c 20  .      catchsql 
3220: 7b 0a 20 20 20 20 20 20 20 20 49 4e 53 45 52 54  {.        INSERT
3230: 20 49 4e 54 4f 20 74 32 20 28 78 29 20 56 41 4c   INTO t2 (x) VAL
3240: 55 45 53 20 28 4e 55 4c 4c 29 3b 0a 20 20 20 20  UES (NULL);.    
3250: 20 20 7d 0a 20 20 20 20 7d 20 7b 31 20 7b 43 48    }.    } {1 {CH
3260: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 20 66  ECK constraint f
3270: 61 69 6c 65 64 3a 20 74 32 7d 7d 0a 20 20 20 20  ailed: t2}}.    
3280: 64 6f 5f 74 65 73 74 20 66 75 6e 63 34 2d 34 2e  do_test func4-4.
3290: 34 20 7b 0a 20 20 20 20 20 20 63 61 74 63 68 73  4 {.      catchs
32a0: 71 6c 20 7b 0a 20 20 20 20 20 20 20 20 49 4e 53  ql {.        INS
32b0: 45 52 54 20 49 4e 54 4f 20 74 32 20 28 78 29 20  ERT INTO t2 (x) 
32c0: 56 41 4c 55 45 53 20 28 27 27 29 3b 0a 20 20 20  VALUES ('');.   
32d0: 20 20 20 7d 0a 20 20 20 20 7d 20 7b 31 20 7b 43     }.    } {1 {C
32e0: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 20  HECK constraint 
32f0: 66 61 69 6c 65 64 3a 20 74 32 7d 7d 0a 20 20 20  failed: t2}}.   
3300: 20 64 6f 5f 74 65 73 74 20 66 75 6e 63 34 2d 34   do_test func4-4
3310: 2e 35 20 7b 0a 20 20 20 20 20 20 63 61 74 63 68  .5 {.      catch
3320: 73 71 6c 20 7b 0a 20 20 20 20 20 20 20 20 49 4e  sql {.        IN
3330: 53 45 52 54 20 49 4e 54 4f 20 74 32 20 28 78 29  SERT INTO t2 (x)
3340: 20 56 41 4c 55 45 53 20 28 27 62 61 64 27 29 3b   VALUES ('bad');
3350: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 20 7b  .      }.    } {
3360: 31 20 7b 43 48 45 43 4b 20 63 6f 6e 73 74 72 61  1 {CHECK constra
3370: 69 6e 74 20 66 61 69 6c 65 64 3a 20 74 32 7d 7d  int failed: t2}}
3380: 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 66 75 6e  .    do_test fun
3390: 63 34 2d 34 2e 36 20 7b 0a 20 20 20 20 20 20 63  c4-4.6 {.      c
33a0: 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 20 20  atchsql {.      
33b0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32    INSERT INTO t2
33c0: 20 28 78 29 20 56 41 4c 55 45 53 20 28 27 31 32   (x) VALUES ('12
33d0: 33 34 62 61 64 27 29 3b 0a 20 20 20 20 20 20 7d  34bad');.      }
33e0: 0a 20 20 20 20 7d 20 7b 31 20 7b 43 48 45 43 4b  .    } {1 {CHECK
33f0: 20 63 6f 6e 73 74 72 61 69 6e 74 20 66 61 69 6c   constraint fail
3400: 65 64 3a 20 74 32 7d 7d 0a 20 20 20 20 64 6f 5f  ed: t2}}.    do_
3410: 74 65 73 74 20 66 75 6e 63 34 2d 34 2e 37 20 7b  test func4-4.7 {
3420: 0a 20 20 20 20 20 20 63 61 74 63 68 73 71 6c 20  .      catchsql 
3430: 7b 0a 20 20 20 20 20 20 20 20 49 4e 53 45 52 54  {.        INSERT
3440: 20 49 4e 54 4f 20 74 32 20 28 78 29 20 56 41 4c   INTO t2 (x) VAL
3450: 55 45 53 20 28 27 31 32 33 34 2e 35 36 62 61 64  UES ('1234.56bad
3460: 27 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20  ');.      }.    
3470: 7d 20 7b 31 20 7b 43 48 45 43 4b 20 63 6f 6e 73  } {1 {CHECK cons
3480: 74 72 61 69 6e 74 20 66 61 69 6c 65 64 3a 20 74  traint failed: t
3490: 32 7d 7d 0a 20 20 20 20 64 6f 5f 74 65 73 74 20  2}}.    do_test 
34a0: 66 75 6e 63 34 2d 34 2e 38 20 7b 0a 20 20 20 20  func4-4.8 {.    
34b0: 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20 20    catchsql {.   
34c0: 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f       INSERT INTO
34d0: 20 74 32 20 28 78 29 20 56 41 4c 55 45 53 20 28   t2 (x) VALUES (
34e0: 31 32 33 34 29 3b 0a 20 20 20 20 20 20 7d 0a 20  1234);.      }. 
34f0: 20 20 20 7d 20 7b 30 20 7b 7d 7d 0a 20 20 20 20     } {0 {}}.    
3500: 64 6f 5f 74 65 73 74 20 66 75 6e 63 34 2d 34 2e  do_test func4-4.
3510: 39 20 7b 0a 20 20 20 20 20 20 63 61 74 63 68 73  9 {.      catchs
3520: 71 6c 20 7b 0a 20 20 20 20 20 20 20 20 49 4e 53  ql {.        INS
3530: 45 52 54 20 49 4e 54 4f 20 74 32 20 28 78 29 20  ERT INTO t2 (x) 
3540: 56 41 4c 55 45 53 20 28 31 32 33 34 2e 35 36 29  VALUES (1234.56)
3550: 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 20  ;.      }.    } 
3560: 7b 30 20 7b 7d 7d 0a 20 20 20 20 64 6f 5f 74 65  {0 {}}.    do_te
3570: 73 74 20 66 75 6e 63 34 2d 34 2e 31 30 20 7b 0a  st func4-4.10 {.
3580: 20 20 20 20 20 20 63 61 74 63 68 73 71 6c 20 7b        catchsql {
3590: 0a 20 20 20 20 20 20 20 20 49 4e 53 45 52 54 20  .        INSERT 
35a0: 49 4e 54 4f 20 74 32 20 28 78 29 20 56 41 4c 55  INTO t2 (x) VALU
35b0: 45 53 20 28 27 31 32 33 34 27 29 3b 0a 20 20 20  ES ('1234');.   
35c0: 20 20 20 7d 0a 20 20 20 20 7d 20 7b 30 20 7b 7d     }.    } {0 {}
35d0: 7d 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 66 75  }.    do_test fu
35e0: 6e 63 34 2d 34 2e 31 31 20 7b 0a 20 20 20 20 20  nc4-4.11 {.     
35f0: 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20   catchsql {.    
3600: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
3610: 74 32 20 28 78 29 20 56 41 4c 55 45 53 20 28 27  t2 (x) VALUES ('
3620: 31 32 33 34 2e 35 36 27 29 3b 0a 20 20 20 20 20  1234.56');.     
3630: 20 7d 0a 20 20 20 20 7d 20 7b 30 20 7b 7d 7d 0a   }.    } {0 {}}.
3640: 20 20 20 20 64 6f 5f 74 65 73 74 20 66 75 6e 63      do_test func
3650: 34 2d 34 2e 31 32 20 7b 0a 20 20 20 20 20 20 63  4-4.12 {.      c
3660: 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 20 20  atchsql {.      
3670: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32    INSERT INTO t2
3680: 20 28 78 29 20 56 41 4c 55 45 53 20 28 5a 45 52   (x) VALUES (ZER
3690: 4f 42 4c 4f 42 28 34 29 29 3b 0a 20 20 20 20 20  OBLOB(4));.     
36a0: 20 7d 0a 20 20 20 20 7d 20 7b 31 20 7b 43 48 45   }.    } {1 {CHE
36b0: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 20 66 61  CK constraint fa
36c0: 69 6c 65 64 3a 20 74 32 7d 7d 0a 20 20 20 20 64  iled: t2}}.    d
36d0: 6f 5f 74 65 73 74 20 66 75 6e 63 34 2d 34 2e 31  o_test func4-4.1
36e0: 33 20 7b 0a 20 20 20 20 20 20 63 61 74 63 68 73  3 {.      catchs
36f0: 71 6c 20 7b 0a 20 20 20 20 20 20 20 20 49 4e 53  ql {.        INS
3700: 45 52 54 20 49 4e 54 4f 20 74 32 20 28 78 29 20  ERT INTO t2 (x) 
3710: 56 41 4c 55 45 53 20 28 58 27 27 29 3b 0a 20 20  VALUES (X'');.  
3720: 20 20 20 20 7d 0a 20 20 20 20 7d 20 7b 31 20 7b      }.    } {1 {
3730: 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74  CHECK constraint
3740: 20 66 61 69 6c 65 64 3a 20 74 32 7d 7d 0a 20 20   failed: t2}}.  
3750: 20 20 64 6f 5f 74 65 73 74 20 66 75 6e 63 34 2d    do_test func4-
3760: 34 2e 31 34 20 7b 0a 20 20 20 20 20 20 63 61 74  4.14 {.      cat
3770: 63 68 73 71 6c 20 7b 0a 20 20 20 20 20 20 20 20  chsql {.        
3780: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20 28  INSERT INTO t2 (
3790: 78 29 20 56 41 4c 55 45 53 20 28 58 27 31 32 33  x) VALUES (X'123
37a0: 34 27 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20  4');.      }.   
37b0: 20 7d 20 7b 31 20 7b 43 48 45 43 4b 20 63 6f 6e   } {1 {CHECK con
37c0: 73 74 72 61 69 6e 74 20 66 61 69 6c 65 64 3a 20  straint failed: 
37d0: 74 32 7d 7d 0a 20 20 20 20 64 6f 5f 74 65 73 74  t2}}.    do_test
37e0: 20 66 75 6e 63 34 2d 34 2e 31 35 20 7b 0a 20 20   func4-4.15 {.  
37f0: 20 20 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20      catchsql {. 
3800: 20 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e         INSERT IN
3810: 54 4f 20 74 32 20 28 78 29 20 56 41 4c 55 45 53  TO t2 (x) VALUES
3820: 20 28 58 27 31 32 33 34 35 36 37 38 27 29 3b 0a   (X'12345678');.
3830: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 20 7b 31        }.    } {1
3840: 20 7b 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69   {CHECK constrai
3850: 6e 74 20 66 61 69 6c 65 64 3a 20 74 32 7d 7d 0a  nt failed: t2}}.
3860: 20 20 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74      do_execsql_t
3870: 65 73 74 20 66 75 6e 63 34 2d 34 2e 31 36 20 7b  est func4-4.16 {
3880: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 78 20  .      SELECT x 
3890: 46 52 4f 4d 20 74 32 20 4f 52 44 45 52 20 42 59  FROM t2 ORDER BY
38a0: 20 78 3b 0a 20 20 20 20 7d 20 7b 31 32 33 34 2e   x;.    } {1234.
38b0: 30 20 31 32 33 34 2e 30 20 31 32 33 34 2e 35 36  0 1234.0 1234.56
38c0: 20 31 32 33 34 2e 35 36 7d 0a 20 20 7d 0a 7d 0a   1234.56}.  }.}.
38d0: 0a 69 66 63 61 70 61 62 6c 65 20 66 6c 6f 61 74  .ifcapable float
38e0: 69 6e 67 70 6f 69 6e 74 20 7b 0a 20 20 64 6f 5f  ingpoint {.  do_
38f0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
3900: 63 34 2d 35 2e 31 20 7b 0a 20 20 20 20 53 45 4c  c4-5.1 {.    SEL
3910: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f  ECT tointeger(to
3920: 72 65 61 6c 28 27 31 32 33 34 27 29 29 3b 0a 20  real('1234'));. 
3930: 20 7d 20 7b 31 32 33 34 7d 0a 20 20 64 6f 5f 65   } {1234}.  do_e
3940: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
3950: 34 2d 35 2e 32 20 7b 0a 20 20 20 20 53 45 4c 45  4-5.2 {.    SELE
3960: 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f 72  CT tointeger(tor
3970: 65 61 6c 28 2d 31 29 29 3b 0a 20 20 7d 20 7b 2d  eal(-1));.  } {-
3980: 31 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f  1}.  do_execsql_
3990: 74 65 73 74 20 66 75 6e 63 34 2d 35 2e 33 20 7b  test func4-5.3 {
39a0: 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 69 6e  .    SELECT toin
39b0: 74 65 67 65 72 28 74 6f 72 65 61 6c 28 2d 30 29  teger(toreal(-0)
39c0: 29 3b 0a 20 20 7d 20 7b 30 7d 0a 20 20 64 6f 5f  );.  } {0}.  do_
39d0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
39e0: 63 34 2d 35 2e 34 20 7b 0a 20 20 20 20 53 45 4c  c4-5.4 {.    SEL
39f0: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f  ECT tointeger(to
3a00: 72 65 61 6c 28 30 29 29 3b 0a 20 20 7d 20 7b 30  real(0));.  } {0
3a10: 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74  }.  do_execsql_t
3a20: 65 73 74 20 66 75 6e 63 34 2d 35 2e 35 20 7b 0a  est func4-5.5 {.
3a30: 20 20 20 20 53 45 4c 45 43 54 20 74 6f 69 6e 74      SELECT toint
3a40: 65 67 65 72 28 74 6f 72 65 61 6c 28 31 29 29 3b  eger(toreal(1));
3a50: 0a 20 20 7d 20 7b 31 7d 0a 20 20 64 6f 5f 65 78  .  } {1}.  do_ex
3a60: 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34  ecsql_test func4
3a70: 2d 35 2e 36 20 7b 0a 20 20 20 20 53 45 4c 45 43  -5.6 {.    SELEC
3a80: 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f 72 65  T tointeger(tore
3a90: 61 6c 28 2d 39 32 32 33 33 37 32 30 33 36 38 35  al(-922337203685
3aa0: 34 37 37 35 38 30 38 20 2d 20 31 29 29 3b 0a 20  4775808 - 1));. 
3ab0: 20 7d 20 7b 2d 39 32 32 33 33 37 32 30 33 36 38   } {-92233720368
3ac0: 35 34 37 37 35 38 30 38 7d 0a 20 20 64 6f 5f 65  54775808}.  do_e
3ad0: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
3ae0: 34 2d 35 2e 37 20 7b 0a 20 20 20 20 53 45 4c 45  4-5.7 {.    SELE
3af0: 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f 72  CT tointeger(tor
3b00: 65 61 6c 28 2d 39 32 32 33 33 37 32 30 33 36 38  eal(-92233720368
3b10: 35 34 37 37 35 38 30 38 29 29 3b 0a 20 20 7d 20  54775808));.  } 
3b20: 7b 2d 39 32 32 33 33 37 32 30 33 36 38 35 34 37  {-92233720368547
3b30: 37 35 38 30 38 7d 0a 20 20 69 66 20 7b 24 68 69  75808}.  if {$hi
3b40: 67 68 50 72 65 63 69 73 69 6f 6e 28 32 29 7d 20  ghPrecision(2)} 
3b50: 7b 0a 20 20 20 20 64 6f 5f 65 78 65 63 73 71 6c  {.    do_execsql
3b60: 5f 74 65 73 74 20 66 75 6e 63 34 2d 35 2e 38 20  _test func4-5.8 
3b70: 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 74  {.      SELECT t
3b80: 6f 69 6e 74 65 67 65 72 28 74 6f 72 65 61 6c 28  ointeger(toreal(
3b90: 2d 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37  -922337203685477
3ba0: 35 38 30 38 20 2b 20 31 29 29 3b 0a 20 20 20 20  5808 + 1));.    
3bb0: 7d 20 7b 7b 7d 7d 0a 20 20 7d 0a 20 20 64 6f 5f  } {{}}.  }.  do_
3bc0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
3bd0: 63 34 2d 35 2e 39 20 7b 0a 20 20 20 20 53 45 4c  c4-5.9 {.    SEL
3be0: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f  ECT tointeger(to
3bf0: 72 65 61 6c 28 2d 32 31 34 37 34 38 33 36 34 38  real(-2147483648
3c00: 20 2d 20 31 29 29 3b 0a 20 20 7d 20 7b 2d 32 31   - 1));.  } {-21
3c10: 34 37 34 38 33 36 34 39 7d 0a 20 20 64 6f 5f 65  47483649}.  do_e
3c20: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
3c30: 34 2d 35 2e 31 30 20 7b 0a 20 20 20 20 53 45 4c  4-5.10 {.    SEL
3c40: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f  ECT tointeger(to
3c50: 72 65 61 6c 28 2d 32 31 34 37 34 38 33 36 34 38  real(-2147483648
3c60: 29 29 3b 0a 20 20 7d 20 7b 2d 32 31 34 37 34 38  ));.  } {-214748
3c70: 33 36 34 38 7d 0a 20 20 64 6f 5f 65 78 65 63 73  3648}.  do_execs
3c80: 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 35 2e  ql_test func4-5.
3c90: 31 31 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  11 {.    SELECT 
3ca0: 74 6f 69 6e 74 65 67 65 72 28 74 6f 72 65 61 6c  tointeger(toreal
3cb0: 28 2d 32 31 34 37 34 38 33 36 34 38 20 2b 20 31  (-2147483648 + 1
3cc0: 29 29 3b 0a 20 20 7d 20 7b 2d 32 31 34 37 34 38  ));.  } {-214748
3cd0: 33 36 34 37 7d 0a 20 20 64 6f 5f 65 78 65 63 73  3647}.  do_execs
3ce0: 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 35 2e  ql_test func4-5.
3cf0: 31 32 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  12 {.    SELECT 
3d00: 74 6f 69 6e 74 65 67 65 72 28 74 6f 72 65 61 6c  tointeger(toreal
3d10: 28 32 31 34 37 34 38 33 36 34 37 20 2d 20 31 29  (2147483647 - 1)
3d20: 29 3b 0a 20 20 7d 20 7b 32 31 34 37 34 38 33 36  );.  } {21474836
3d30: 34 36 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c  46}.  do_execsql
3d40: 5f 74 65 73 74 20 66 75 6e 63 34 2d 35 2e 31 33  _test func4-5.13
3d50: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f   {.    SELECT to
3d60: 69 6e 74 65 67 65 72 28 74 6f 72 65 61 6c 28 32  integer(toreal(2
3d70: 31 34 37 34 38 33 36 34 37 29 29 3b 0a 20 20 7d  147483647));.  }
3d80: 20 7b 32 31 34 37 34 38 33 36 34 37 7d 0a 20 20   {2147483647}.  
3d90: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
3da0: 66 75 6e 63 34 2d 35 2e 31 34 20 7b 0a 20 20 20  func4-5.14 {.   
3db0: 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65   SELECT tointege
3dc0: 72 28 74 6f 72 65 61 6c 28 32 31 34 37 34 38 33  r(toreal(2147483
3dd0: 36 34 37 20 2b 20 31 29 29 3b 0a 20 20 7d 20 7b  647 + 1));.  } {
3de0: 32 31 34 37 34 38 33 36 34 38 7d 0a 20 20 64 6f  2147483648}.  do
3df0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75  _execsql_test fu
3e00: 6e 63 34 2d 35 2e 31 35 20 7b 0a 20 20 20 20 53  nc4-5.15 {.    S
3e10: 45 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28  ELECT tointeger(
3e20: 74 6f 72 65 61 6c 28 39 32 32 33 33 37 32 30 33  toreal(922337203
3e30: 36 38 35 34 37 37 35 38 30 37 20 2d 20 31 29 29  6854775807 - 1))
3e40: 3b 0a 20 20 7d 20 7b 7b 7d 7d 0a 20 20 69 66 20  ;.  } {{}}.  if 
3e50: 7b 24 68 69 67 68 50 72 65 63 69 73 69 6f 6e 28  {$highPrecision(
3e60: 31 29 7d 20 7b 0a 20 20 20 20 64 6f 5f 65 78 65  1)} {.    do_exe
3e70: 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d  csql_test func4-
3e80: 35 2e 31 36 20 7b 0a 20 20 20 20 20 20 53 45 4c  5.16 {.      SEL
3e90: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f  ECT tointeger(to
3ea0: 72 65 61 6c 28 39 32 32 33 33 37 32 30 33 36 38  real(92233720368
3eb0: 35 34 37 37 35 38 30 37 29 29 3b 0a 20 20 20 20  54775807));.    
3ec0: 7d 20 7b 7b 7d 7d 0a 20 20 20 20 64 6f 5f 65 78  } {{}}.    do_ex
3ed0: 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34  ecsql_test func4
3ee0: 2d 35 2e 31 37 20 7b 0a 20 20 20 20 20 20 53 45  -5.17 {.      SE
3ef0: 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74  LECT tointeger(t
3f00: 6f 72 65 61 6c 28 39 32 32 33 33 37 32 30 33 36  oreal(9223372036
3f10: 38 35 34 37 37 35 38 30 37 20 2b 20 31 29 29 3b  854775807 + 1));
3f20: 0a 20 20 20 20 7d 20 7b 7b 7d 7d 0a 20 20 7d 0a  .    } {{}}.  }.
3f30: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
3f40: 74 20 66 75 6e 63 34 2d 35 2e 31 38 20 7b 0a 20  t func4-5.18 {. 
3f50: 20 20 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65     SELECT tointe
3f60: 67 65 72 28 74 6f 72 65 61 6c 28 34 35 30 33 35  ger(toreal(45035
3f70: 39 39 36 32 37 33 37 30 34 39 36 20 2d 20 31 29  99627370496 - 1)
3f80: 29 3b 0a 20 20 7d 20 7b 34 35 30 33 35 39 39 36  );.  } {45035996
3f90: 32 37 33 37 30 34 39 35 7d 0a 20 20 64 6f 5f 65  27370495}.  do_e
3fa0: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
3fb0: 34 2d 35 2e 31 39 20 7b 0a 20 20 20 20 53 45 4c  4-5.19 {.    SEL
3fc0: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f  ECT tointeger(to
3fd0: 72 65 61 6c 28 34 35 30 33 35 39 39 36 32 37 33  real(45035996273
3fe0: 37 30 34 39 36 29 29 3b 0a 20 20 7d 20 7b 34 35  70496));.  } {45
3ff0: 30 33 35 39 39 36 32 37 33 37 30 34 39 36 7d 0a  03599627370496}.
4000: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
4010: 74 20 66 75 6e 63 34 2d 35 2e 32 30 20 7b 0a 20  t func4-5.20 {. 
4020: 20 20 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65     SELECT tointe
4030: 67 65 72 28 74 6f 72 65 61 6c 28 34 35 30 33 35  ger(toreal(45035
4040: 39 39 36 32 37 33 37 30 34 39 36 20 2b 20 31 29  99627370496 + 1)
4050: 29 3b 0a 20 20 7d 20 7b 34 35 30 33 35 39 39 36  );.  } {45035996
4060: 32 37 33 37 30 34 39 37 7d 0a 20 20 64 6f 5f 65  27370497}.  do_e
4070: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
4080: 34 2d 35 2e 32 31 20 7b 0a 20 20 20 20 53 45 4c  4-5.21 {.    SEL
4090: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f  ECT tointeger(to
40a0: 72 65 61 6c 28 39 30 30 37 31 39 39 32 35 34 37  real(90071992547
40b0: 34 30 39 39 32 20 2d 20 31 29 29 3b 0a 20 20 7d  40992 - 1));.  }
40c0: 20 7b 39 30 30 37 31 39 39 32 35 34 37 34 30 39   {90071992547409
40d0: 39 31 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c  91}.  do_execsql
40e0: 5f 74 65 73 74 20 66 75 6e 63 34 2d 35 2e 32 32  _test func4-5.22
40f0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f   {.    SELECT to
4100: 69 6e 74 65 67 65 72 28 74 6f 72 65 61 6c 28 39  integer(toreal(9
4110: 30 30 37 31 39 39 32 35 34 37 34 30 39 39 32 29  007199254740992)
4120: 29 3b 0a 20 20 7d 20 7b 39 30 30 37 31 39 39 32  );.  } {90071992
4130: 35 34 37 34 30 39 39 32 7d 0a 20 20 69 66 20 7b  54740992}.  if {
4140: 24 68 69 67 68 50 72 65 63 69 73 69 6f 6e 28 32  $highPrecision(2
4150: 29 7d 20 7b 0a 20 20 20 20 64 6f 5f 65 78 65 63  )} {.    do_exec
4160: 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 35  sql_test func4-5
4170: 2e 32 33 20 7b 0a 20 20 20 20 20 20 53 45 4c 45  .23 {.      SELE
4180: 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f 72  CT tointeger(tor
4190: 65 61 6c 28 39 30 30 37 31 39 39 32 35 34 37 34  eal(900719925474
41a0: 30 39 39 32 20 2b 20 31 29 29 3b 0a 20 20 20 20  0992 + 1));.    
41b0: 7d 20 7b 7b 7d 7d 0a 20 20 7d 0a 20 20 64 6f 5f  } {{}}.  }.  do_
41c0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
41d0: 63 34 2d 35 2e 32 34 20 7b 0a 20 20 20 20 53 45  c4-5.24 {.    SE
41e0: 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74  LECT tointeger(t
41f0: 6f 72 65 61 6c 28 39 30 30 37 31 39 39 32 35 34  oreal(9007199254
4200: 37 34 30 39 39 32 20 2b 20 32 29 29 3b 0a 20 20  740992 + 2));.  
4210: 7d 20 7b 39 30 30 37 31 39 39 32 35 34 37 34 30  } {9007199254740
4220: 39 39 34 7d 0a 20 20 69 66 20 7b 24 68 69 67 68  994}.  if {$high
4230: 50 72 65 63 69 73 69 6f 6e 28 31 29 7d 20 7b 0a  Precision(1)} {.
4240: 20 20 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74      do_execsql_t
4250: 65 73 74 20 66 75 6e 63 34 2d 35 2e 32 35 20 7b  est func4-5.25 {
4260: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 74 6f  .      SELECT to
4270: 69 6e 74 65 67 65 72 28 74 6f 72 65 61 6c 28 39  integer(toreal(9
4280: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
4290: 30 38 20 2d 20 31 29 29 3b 0a 20 20 20 20 7d 20  08 - 1));.    } 
42a0: 7b 7b 7d 7d 0a 20 20 20 20 64 6f 5f 65 78 65 63  {{}}.    do_exec
42b0: 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 35  sql_test func4-5
42c0: 2e 32 36 20 7b 0a 20 20 20 20 20 20 53 45 4c 45  .26 {.      SELE
42d0: 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f 72  CT tointeger(tor
42e0: 65 61 6c 28 39 32 32 33 33 37 32 30 33 36 38 35  eal(922337203685
42f0: 34 37 37 35 38 30 38 29 29 3b 0a 20 20 20 20 7d  4775808));.    }
4300: 20 7b 7b 7d 7d 0a 20 20 20 20 64 6f 5f 65 78 65   {{}}.    do_exe
4310: 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d  csql_test func4-
4320: 35 2e 32 37 20 7b 0a 20 20 20 20 20 20 53 45 4c  5.27 {.      SEL
4330: 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74 6f  ECT tointeger(to
4340: 72 65 61 6c 28 39 32 32 33 33 37 32 30 33 36 38  real(92233720368
4350: 35 34 37 37 35 38 30 38 20 2b 20 31 29 29 3b 0a  54775808 + 1));.
4360: 20 20 20 20 7d 20 7b 7b 7d 7d 0a 20 20 7d 0a 20      } {{}}.  }. 
4370: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
4380: 20 66 75 6e 63 34 2d 35 2e 32 38 20 7b 0a 20 20   func4-5.28 {.  
4390: 20 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67    SELECT tointeg
43a0: 65 72 28 74 6f 72 65 61 6c 28 31 38 34 34 36 37  er(toreal(184467
43b0: 34 34 30 37 33 37 30 39 35 35 31 36 31 36 20 2d  44073709551616 -
43c0: 20 31 29 29 3b 0a 20 20 7d 20 7b 7b 7d 7d 0a 20   1));.  } {{}}. 
43d0: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
43e0: 20 66 75 6e 63 34 2d 35 2e 32 39 20 7b 0a 20 20   func4-5.29 {.  
43f0: 20 20 53 45 4c 45 43 54 20 74 6f 69 6e 74 65 67    SELECT tointeg
4400: 65 72 28 74 6f 72 65 61 6c 28 31 38 34 34 36 37  er(toreal(184467
4410: 34 34 30 37 33 37 30 39 35 35 31 36 31 36 29 29  44073709551616))
4420: 3b 0a 20 20 7d 20 7b 7b 7d 7d 0a 20 20 64 6f 5f  ;.  } {{}}.  do_
4430: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
4440: 63 34 2d 35 2e 33 30 20 7b 0a 20 20 20 20 53 45  c4-5.30 {.    SE
4450: 4c 45 43 54 20 74 6f 69 6e 74 65 67 65 72 28 74  LECT tointeger(t
4460: 6f 72 65 61 6c 28 31 38 34 34 36 37 34 34 30 37  oreal(1844674407
4470: 33 37 30 39 35 35 31 36 31 36 20 2b 20 31 29 29  3709551616 + 1))
4480: 3b 0a 20 20 7d 20 7b 7b 7d 7d 0a 7d 0a 0a 66 6f  ;.  } {{}}.}..fo
4490: 72 20 7b 73 65 74 20 69 20 30 7d 20 7b 24 69 20  r {set i 0} {$i 
44a0: 3c 20 31 30 7d 20 7b 69 6e 63 72 20 69 7d 20 7b  < 10} {incr i} {
44b0: 0a 20 20 69 66 20 7b 24 69 20 3d 3d 20 38 7d 20  .  if {$i == 8} 
44c0: 63 6f 6e 74 69 6e 75 65 0a 20 20 64 6f 5f 65 78  continue.  do_ex
44d0: 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34  ecsql_test func4
44e0: 2d 36 2e 31 2e 24 69 2e 31 20 5b 73 75 62 73 74  -6.1.$i.1 [subst
44f0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f   {.    SELECT to
4500: 69 6e 74 65 67 65 72 28 78 27 5b 73 74 72 69 6e  integer(x'[strin
4510: 67 20 72 65 70 65 61 74 20 30 31 20 24 69 5d 27  g repeat 01 $i]'
4520: 29 3b 0a 20 20 7d 5d 20 7b 7b 7d 7d 0a 20 20 69  );.  }] {{}}.  i
4530: 66 63 61 70 61 62 6c 65 20 66 6c 6f 61 74 69 6e  fcapable floatin
4540: 67 70 6f 69 6e 74 20 7b 0a 20 20 20 20 64 6f 5f  gpoint {.    do_
4550: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
4560: 63 34 2d 36 2e 31 2e 24 69 2e 32 20 5b 73 75 62  c4-6.1.$i.2 [sub
4570: 73 74 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43  st {.      SELEC
4580: 54 20 74 6f 72 65 61 6c 28 78 27 5b 73 74 72 69  T toreal(x'[stri
4590: 6e 67 20 72 65 70 65 61 74 20 30 31 20 24 69 5d  ng repeat 01 $i]
45a0: 27 29 3b 0a 20 20 20 20 7d 5d 20 7b 7b 7d 7d 0a  ');.    }] {{}}.
45b0: 20 20 7d 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71    }.}..do_execsq
45c0: 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 36 2e 32  l_test func4-6.2
45d0: 2e 31 20 7b 0a 20 20 53 45 4c 45 43 54 20 74 6f  .1 {.  SELECT to
45e0: 69 6e 74 65 67 65 72 28 78 27 30 31 30 32 30 33  integer(x'010203
45f0: 30 34 30 35 30 36 30 37 30 38 27 29 3b 0a 7d 20  0405060708');.} 
4600: 7b 35 37 38 34 33 37 36 39 35 37 35 32 33 30 37  {578437695752307
4610: 32 30 31 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  201}.do_execsql_
4620: 74 65 73 74 20 66 75 6e 63 34 2d 36 2e 32 2e 32  test func4-6.2.2
4630: 20 7b 0a 20 20 53 45 4c 45 43 54 20 74 6f 69 6e   {.  SELECT toin
4640: 74 65 67 65 72 28 78 27 30 38 30 37 30 36 30 35  teger(x'08070605
4650: 30 34 30 33 30 32 30 31 27 29 3b 0a 7d 20 7b 37  04030201');.} {7
4660: 32 36 32 33 38 35 39 37 39 30 33 38 32 38 35 36  2623859790382856
4670: 7d 0a 0a 69 66 63 61 70 61 62 6c 65 20 66 6c 6f  }..ifcapable flo
4680: 61 74 69 6e 67 70 6f 69 6e 74 20 7b 0a 20 20 64  atingpoint {.  d
4690: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66  o_execsql_test f
46a0: 75 6e 63 34 2d 36 2e 33 2e 31 20 7b 0a 20 20 20  unc4-6.3.1 {.   
46b0: 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28 78   SELECT toreal(x
46c0: 27 66 66 65 66 66 66 66 66 66 66 66 66 66 66 66  'ffeffffffffffff
46d0: 66 27 29 3b 0a 20 20 7d 20 7b 2d 31 2e 37 39 37  f');.  } {-1.797
46e0: 36 39 33 31 33 34 38 36 32 33 31 35 37 65 2b 33  6931348623157e+3
46f0: 30 38 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c  08}.  do_execsql
4700: 5f 74 65 73 74 20 66 75 6e 63 34 2d 36 2e 33 2e  _test func4-6.3.
4710: 32 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74  2 {.    SELECT t
4720: 6f 72 65 61 6c 28 78 27 38 30 31 30 30 30 30 30  oreal(x'80100000
4730: 30 30 30 30 30 30 30 30 27 29 3b 0a 20 20 7d 20  00000000');.  } 
4740: 7b 2d 32 2e 32 32 35 30 37 33 38 35 38 35 30 37  {-2.225073858507
4750: 32 30 31 34 65 2d 33 30 38 7d 0a 20 20 64 6f 5f  2014e-308}.  do_
4760: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
4770: 63 34 2d 36 2e 33 2e 33 20 7b 0a 20 20 20 20 53  c4-6.3.3 {.    S
4780: 45 4c 45 43 54 20 74 6f 72 65 61 6c 28 78 27 63  ELECT toreal(x'c
4790: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 27  000000000000000'
47a0: 29 3b 0a 20 20 7d 20 7b 2d 32 2e 30 7d 0a 20 20  );.  } {-2.0}.  
47b0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
47c0: 66 75 6e 63 34 2d 36 2e 33 2e 34 20 7b 0a 20 20  func4-6.3.4 {.  
47d0: 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28    SELECT toreal(
47e0: 78 27 62 66 66 30 30 30 30 30 30 30 30 30 30 30  x'bff00000000000
47f0: 30 30 27 29 3b 0a 20 20 7d 20 7b 2d 31 2e 30 7d  00');.  } {-1.0}
4800: 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  .  do_execsql_te
4810: 73 74 20 66 75 6e 63 34 2d 36 2e 33 2e 35 20 7b  st func4-6.3.5 {
4820: 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65  .    SELECT tore
4830: 61 6c 28 78 27 38 30 30 30 30 30 30 30 30 30 30  al(x'80000000000
4840: 30 30 30 30 30 27 29 3b 0a 20 20 7d 20 7b 2d 30  00000');.  } {-0
4850: 2e 30 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c  .0}.  do_execsql
4860: 5f 74 65 73 74 20 66 75 6e 63 34 2d 36 2e 33 2e  _test func4-6.3.
4870: 36 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74  6 {.    SELECT t
4880: 6f 72 65 61 6c 28 78 27 30 30 30 30 30 30 30 30  oreal(x'00000000
4890: 30 30 30 30 30 30 30 30 27 29 3b 0a 20 20 7d 20  00000000');.  } 
48a0: 7b 30 2e 30 7d 0a 20 20 64 6f 5f 65 78 65 63 73  {0.0}.  do_execs
48b0: 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 36 2e  ql_test func4-6.
48c0: 33 2e 37 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  3.7 {.    SELECT
48d0: 20 74 6f 72 65 61 6c 28 78 27 33 66 66 30 30 30   toreal(x'3ff000
48e0: 30 30 30 30 30 30 30 30 30 30 27 29 3b 0a 20 20  0000000000');.  
48f0: 7d 20 7b 31 2e 30 7d 0a 20 20 64 6f 5f 65 78 65  } {1.0}.  do_exe
4900: 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d  csql_test func4-
4910: 36 2e 33 2e 38 20 7b 0a 20 20 20 20 53 45 4c 45  6.3.8 {.    SELE
4920: 43 54 20 74 6f 72 65 61 6c 28 78 27 34 30 30 30  CT toreal(x'4000
4930: 30 30 30 30 30 30 30 30 30 30 30 30 27 29 3b 0a  000000000000');.
4940: 20 20 7d 20 7b 32 2e 30 7d 0a 20 20 64 6f 5f 65    } {2.0}.  do_e
4950: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
4960: 34 2d 36 2e 33 2e 39 20 7b 0a 20 20 20 20 53 45  4-6.3.9 {.    SE
4970: 4c 45 43 54 20 74 6f 72 65 61 6c 28 78 27 30 30  LECT toreal(x'00
4980: 31 30 30 30 30 30 30 30 30 30 30 30 30 30 27 29  10000000000000')
4990: 3b 0a 20 20 7d 20 7b 32 2e 32 32 35 30 37 33 38  ;.  } {2.2250738
49a0: 35 38 35 30 37 32 30 31 34 65 2d 33 30 38 7d 0a  585072014e-308}.
49b0: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
49c0: 74 20 66 75 6e 63 34 2d 36 2e 33 2e 31 30 20 7b  t func4-6.3.10 {
49d0: 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65  .    SELECT tore
49e0: 61 6c 28 78 27 37 66 65 66 66 66 66 66 66 66 66  al(x'7feffffffff
49f0: 66 66 66 66 66 27 29 3b 0a 20 20 7d 20 7b 31 2e  fffff');.  } {1.
4a00: 37 39 37 36 39 33 31 33 34 38 36 32 33 31 35 37  7976931348623157
4a10: 65 2b 33 30 38 7d 0a 20 20 64 6f 5f 65 78 65 63  e+308}.  do_exec
4a20: 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 36  sql_test func4-6
4a30: 2e 33 2e 31 31 20 7b 0a 20 20 20 20 53 45 4c 45  .3.11 {.    SELE
4a40: 43 54 20 74 6f 72 65 61 6c 28 78 27 38 30 30 30  CT toreal(x'8000
4a50: 30 30 30 30 30 30 30 30 30 30 30 31 27 29 3b 0a  000000000001');.
4a60: 20 20 7d 20 7b 2d 35 65 2d 33 32 34 7d 0a 20 20    } {-5e-324}.  
4a70: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
4a80: 66 75 6e 63 34 2d 36 2e 33 2e 31 32 20 7b 0a 20  func4-6.3.12 {. 
4a90: 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c     SELECT toreal
4aa0: 28 78 27 38 30 30 66 66 66 66 66 66 66 66 66 66  (x'800ffffffffff
4ab0: 66 66 66 27 29 3b 0a 20 20 7d 20 7b 2d 32 2e 32  fff');.  } {-2.2
4ac0: 32 35 30 37 33 38 35 38 35 30 37 32 30 31 65 2d  25073858507201e-
4ad0: 33 30 38 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71  308}.  do_execsq
4ae0: 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 36 2e 33  l_test func4-6.3
4af0: 2e 31 33 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  .13 {.    SELECT
4b00: 20 74 6f 72 65 61 6c 28 78 27 30 30 30 30 30 30   toreal(x'000000
4b10: 30 30 30 30 30 30 30 30 30 31 27 29 3b 0a 20 20  0000000001');.  
4b20: 7d 20 7b 35 65 2d 33 32 34 7d 0a 20 20 64 6f 5f  } {5e-324}.  do_
4b30: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e  execsql_test fun
4b40: 63 34 2d 36 2e 33 2e 31 34 20 7b 0a 20 20 20 20  c4-6.3.14 {.    
4b50: 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28 78 27  SELECT toreal(x'
4b60: 30 30 30 66 66 66 66 66 66 66 66 66 66 66 66 66  000fffffffffffff
4b70: 27 29 3b 0a 20 20 7d 20 7b 32 2e 32 32 35 30 37  ');.  } {2.22507
4b80: 33 38 35 38 35 30 37 32 30 31 65 2d 33 30 38 7d  3858507201e-308}
4b90: 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  .  do_execsql_te
4ba0: 73 74 20 66 75 6e 63 34 2d 36 2e 33 2e 31 35 20  st func4-6.3.15 
4bb0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72  {.    SELECT tor
4bc0: 65 61 6c 28 78 27 66 66 66 30 30 30 30 30 30 30  eal(x'fff0000000
4bd0: 30 30 30 30 30 30 27 29 3b 0a 20 20 7d 20 7b 2d  000000');.  } {-
4be0: 49 6e 66 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71  Inf}.  do_execsq
4bf0: 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 36 2e 33  l_test func4-6.3
4c00: 2e 31 36 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  .16 {.    SELECT
4c10: 20 74 6f 72 65 61 6c 28 78 27 37 66 66 30 30 30   toreal(x'7ff000
4c20: 30 30 30 30 30 30 30 30 30 30 27 29 3b 0a 20 20  0000000000');.  
4c30: 7d 20 7b 49 6e 66 7d 0a 20 20 64 6f 5f 65 78 65  } {Inf}.  do_exe
4c40: 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d  csql_test func4-
4c50: 36 2e 33 2e 31 37 20 7b 0a 20 20 20 20 53 45 4c  6.3.17 {.    SEL
4c60: 45 43 54 20 74 6f 72 65 61 6c 28 78 27 66 66 66  ECT toreal(x'fff
4c70: 38 30 30 30 30 30 30 30 30 30 30 30 30 27 29 3b  8000000000000');
4c80: 0a 20 20 7d 20 7b 7b 7d 7d 0a 20 20 64 6f 5f 65  .  } {{}}.  do_e
4c90: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63  xecsql_test func
4ca0: 34 2d 36 2e 33 2e 31 38 20 7b 0a 20 20 20 20 53  4-6.3.18 {.    S
4cb0: 45 4c 45 43 54 20 74 6f 72 65 61 6c 28 78 27 66  ELECT toreal(x'f
4cc0: 66 66 30 30 30 30 30 30 30 30 30 30 30 30 31 27  ff0000000000001'
4cd0: 29 3b 0a 20 20 7d 20 7b 7b 7d 7d 0a 20 20 64 6f  );.  } {{}}.  do
4ce0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75  _execsql_test fu
4cf0: 6e 63 34 2d 36 2e 33 2e 31 39 20 7b 0a 20 20 20  nc4-6.3.19 {.   
4d00: 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c 28 78   SELECT toreal(x
4d10: 27 66 66 66 37 66 66 66 66 66 66 66 66 66 66 66  'fff7fffffffffff
4d20: 66 27 29 3b 0a 20 20 7d 20 7b 7b 7d 7d 0a 20 20  f');.  } {{}}.  
4d30: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
4d40: 66 75 6e 63 34 2d 36 2e 33 2e 32 30 20 7b 0a 20  func4-6.3.20 {. 
4d50: 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65 61 6c     SELECT toreal
4d60: 28 78 27 37 66 66 30 30 30 30 30 30 30 30 30 30  (x'7ff0000000000
4d70: 30 30 31 27 29 3b 0a 20 20 7d 20 7b 7b 7d 7d 0a  001');.  } {{}}.
4d80: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
4d90: 74 20 66 75 6e 63 34 2d 36 2e 33 2e 32 31 20 7b  t func4-6.3.21 {
4da0: 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f 72 65  .    SELECT tore
4db0: 61 6c 28 78 27 37 66 66 37 66 66 66 66 66 66 66  al(x'7ff7fffffff
4dc0: 66 66 66 66 66 27 29 3b 0a 20 20 7d 20 7b 7b 7d  fffff');.  } {{}
4dd0: 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74  }.  do_execsql_t
4de0: 65 73 74 20 66 75 6e 63 34 2d 36 2e 33 2e 32 32  est func4-6.3.22
4df0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 6f   {.    SELECT to
4e00: 72 65 61 6c 28 78 27 66 66 66 38 30 30 30 30 30  real(x'fff800000
4e10: 30 30 30 30 30 30 31 27 29 3b 0a 20 20 7d 20 7b  0000001');.  } {
4e20: 7b 7d 7d 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c  {}}.  do_execsql
4e30: 5f 74 65 73 74 20 66 75 6e 63 34 2d 36 2e 33 2e  _test func4-6.3.
4e40: 32 33 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  23 {.    SELECT 
4e50: 74 6f 72 65 61 6c 28 78 27 66 66 66 66 66 66 66  toreal(x'fffffff
4e60: 66 66 66 66 66 66 66 66 66 27 29 3b 0a 20 20 7d  fffffffff');.  }
4e70: 20 7b 7b 7d 7d 0a 20 20 64 6f 5f 65 78 65 63 73   {{}}.  do_execs
4e80: 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d 36 2e  ql_test func4-6.
4e90: 33 2e 32 34 20 7b 0a 20 20 20 20 53 45 4c 45 43  3.24 {.    SELEC
4ea0: 54 20 74 6f 72 65 61 6c 28 78 27 37 66 66 38 30  T toreal(x'7ff80
4eb0: 30 30 30 30 30 30 30 30 30 30 30 27 29 3b 0a 20  00000000000');. 
4ec0: 20 7d 20 7b 7b 7d 7d 0a 20 20 64 6f 5f 65 78 65   } {{}}.  do_exe
4ed0: 63 73 71 6c 5f 74 65 73 74 20 66 75 6e 63 34 2d  csql_test func4-
4ee0: 36 2e 33 2e 32 35 20 7b 0a 20 20 20 20 53 45 4c  6.3.25 {.    SEL
4ef0: 45 43 54 20 74 6f 72 65 61 6c 28 78 27 37 66 66  ECT toreal(x'7ff
4f00: 66 66 66 66 66 66 66 66 66 66 66 66 66 27 29 3b  fffffffffffff');
4f10: 0a 20 20 7d 20 7b 7b 7d 7d 0a 7d 0a 0a 73 65 74  .  } {{}}.}..set
4f20: 20 74 63 6c 5f 70 72 65 63 69 73 69 6f 6e 20 24   tcl_precision $
4f30: 73 61 76 65 64 5f 74 63 6c 5f 70 72 65 63 69 73  saved_tcl_precis
4f40: 69 6f 6e 0a 75 6e 73 65 74 20 73 61 76 65 64 5f  ion.unset saved_
4f50: 74 63 6c 5f 70 72 65 63 69 73 69 6f 6e 0a 66 69  tcl_precision.fi
4f60: 6e 69 73 68 5f 74 65 73 74 0a                    nish_test.