/ Hex Artifact Content
Login

Artifact 9a8802f28437d8ade53fedfc47b2ca599b4e48ba:


0000: 23 20 32 30 31 32 20 4f 63 74 6f 62 65 72 20 32  # 2012 October 2
0010: 34 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72  4.#.# The author
0020: 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72   disclaims copyr
0030: 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75  ight to this sou
0040: 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c  rce code.  In pl
0050: 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c  ace of.# a legal
0060: 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73   notice, here is
0070: 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23   a blessing:.#.#
0080: 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67      May you do g
0090: 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c  ood and not evil
00a0: 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66  ..#    May you f
00b0: 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20  ind forgiveness 
00c0: 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64  for yourself and
00d0: 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e   forgive others.
00e0: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68  .#    May you sh
00f0: 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65  are freely, neve
0100: 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68  r taking more th
0110: 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23  an 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 2a 2a 0a 23 20 54 68 69 73 20 66  *******.# This f
0170: 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 72  ile implements r
0180: 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73 20  egression tests 
0190: 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72 61  for SQLite libra
01a0: 72 79 2e 20 20 54 68 65 0a 23 20 66 6f 63 75 73  ry.  The.# focus
01b0: 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20 69 73   of this file is
01c0: 20 74 65 73 74 69 6e 67 20 74 68 65 20 62 75 69   testing the bui
01d0: 6c 74 2d 69 6e 20 49 4e 53 54 52 28 29 20 66 75  lt-in INSTR() fu
01e0: 6e 63 74 69 6f 6e 73 2e 0a 23 0a 23 20 45 56 49  nctions..#.# EVI
01f0: 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 32 37 35 34  DENCE-OF: R-2754
0200: 39 2d 35 39 36 31 31 20 54 68 65 20 69 6e 73 74  9-59611 The inst
0210: 72 28 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20  r(X,Y) function 
0220: 66 69 6e 64 73 20 74 68 65 20 66 69 72 73 74 0a  finds the first.
0230: 23 20 6f 63 63 75 72 72 65 6e 63 65 20 6f 66 20  # occurrence of 
0240: 73 74 72 69 6e 67 20 59 20 77 69 74 68 69 6e 20  string Y within 
0250: 73 74 72 69 6e 67 20 58 20 61 6e 64 20 72 65 74  string X and ret
0260: 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20  urns the number 
0270: 6f 66 20 70 72 69 6f 72 0a 23 20 63 68 61 72 61  of prior.# chara
0280: 63 74 65 72 73 20 70 6c 75 73 20 31 2c 20 6f 72  cters plus 1, or
0290: 20 30 20 69 66 20 59 20 69 73 20 6e 6f 77 68 65   0 if Y is nowhe
02a0: 72 65 20 66 6f 75 6e 64 20 77 69 74 68 69 6e 20  re found within 
02b0: 58 2e 0a 23 0a 0a 0a 73 65 74 20 74 65 73 74 64  X..#...set testd
02c0: 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65  ir [file dirname
02d0: 20 24 61 72 67 76 30 5d 0a 73 6f 75 72 63 65 20   $argv0].source 
02e0: 24 74 65 73 74 64 69 72 2f 74 65 73 74 65 72 2e  $testdir/tester.
02f0: 74 63 6c 0a 0a 23 20 43 72 65 61 74 65 20 61 20  tcl..# Create a 
0300: 74 61 62 6c 65 20 74 6f 20 77 6f 72 6b 20 77 69  table to work wi
0310: 74 68 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e  th..#.do_test in
0320: 73 74 72 2d 31 2e 31 20 7b 0a 20 20 64 62 20 65  str-1.1 {.  db e
0330: 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73 74  val {SELECT inst
0340: 72 28 27 61 62 63 64 65 66 67 27 2c 27 61 27 29  r('abcdefg','a')
0350: 3b 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74  ;}.} {1}.do_test
0360: 20 69 6e 73 74 72 2d 31 2e 32 20 7b 0a 20 20 64   instr-1.2 {.  d
0370: 62 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 69  b eval {SELECT i
0380: 6e 73 74 72 28 27 61 62 63 64 65 66 67 27 2c 27  nstr('abcdefg','
0390: 62 27 29 3b 7d 0a 7d 20 7b 32 7d 0a 64 6f 5f 74  b');}.} {2}.do_t
03a0: 65 73 74 20 69 6e 73 74 72 2d 31 2e 33 20 7b 0a  est instr-1.3 {.
03b0: 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43    db eval {SELEC
03c0: 54 20 69 6e 73 74 72 28 27 61 62 63 64 65 66 67  T instr('abcdefg
03d0: 27 2c 27 63 27 29 3b 7d 0a 7d 20 7b 33 7d 0a 64  ','c');}.} {3}.d
03e0: 6f 5f 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 34  o_test instr-1.4
03f0: 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45   {.  db eval {SE
0400: 4c 45 43 54 20 69 6e 73 74 72 28 27 61 62 63 64  LECT instr('abcd
0410: 65 66 67 27 2c 27 64 27 29 3b 7d 0a 7d 20 7b 34  efg','d');}.} {4
0420: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73 74 72 2d  }.do_test instr-
0430: 31 2e 35 20 7b 0a 20 20 64 62 20 65 76 61 6c 20  1.5 {.  db eval 
0440: 7b 53 45 4c 45 43 54 20 69 6e 73 74 72 28 27 61  {SELECT instr('a
0450: 62 63 64 65 66 67 27 2c 27 65 27 29 3b 7d 0a 7d  bcdefg','e');}.}
0460: 20 7b 35 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73   {5}.do_test ins
0470: 74 72 2d 31 2e 36 20 7b 0a 20 20 64 62 20 65 76  tr-1.6 {.  db ev
0480: 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73 74 72  al {SELECT instr
0490: 28 27 61 62 63 64 65 66 67 27 2c 27 66 27 29 3b  ('abcdefg','f');
04a0: 7d 0a 7d 20 7b 36 7d 0a 64 6f 5f 74 65 73 74 20  }.} {6}.do_test 
04b0: 69 6e 73 74 72 2d 31 2e 37 20 7b 0a 20 20 64 62  instr-1.7 {.  db
04c0: 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e   eval {SELECT in
04d0: 73 74 72 28 27 61 62 63 64 65 66 67 27 2c 27 67  str('abcdefg','g
04e0: 27 29 3b 7d 0a 7d 20 7b 37 7d 0a 64 6f 5f 74 65  ');}.} {7}.do_te
04f0: 73 74 20 69 6e 73 74 72 2d 31 2e 38 20 7b 0a 20  st instr-1.8 {. 
0500: 20 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43 54   db eval {SELECT
0510: 20 69 6e 73 74 72 28 27 61 62 63 64 65 66 67 27   instr('abcdefg'
0520: 2c 27 68 27 29 3b 7d 0a 7d 20 7b 30 7d 0a 64 6f  ,'h');}.} {0}.do
0530: 5f 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 39 20  _test instr-1.9 
0540: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c  {.  db eval {SEL
0550: 45 43 54 20 69 6e 73 74 72 28 27 61 62 63 64 65  ECT instr('abcde
0560: 66 67 27 2c 27 61 62 63 64 65 66 67 27 29 3b 7d  fg','abcdefg');}
0570: 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 69  .} {1}.do_test i
0580: 6e 73 74 72 2d 31 2e 31 30 20 7b 0a 20 20 64 62  nstr-1.10 {.  db
0590: 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e   eval {SELECT in
05a0: 73 74 72 28 27 61 62 63 64 65 66 67 27 2c 27 61  str('abcdefg','a
05b0: 62 63 64 65 66 67 68 27 29 3b 7d 0a 7d 20 7b 30  bcdefgh');}.} {0
05c0: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73 74 72 2d  }.do_test instr-
05d0: 31 2e 31 31 20 7b 0a 20 20 64 62 20 65 76 61 6c  1.11 {.  db eval
05e0: 20 7b 53 45 4c 45 43 54 20 69 6e 73 74 72 28 27   {SELECT instr('
05f0: 61 62 63 64 65 66 67 27 2c 27 62 63 64 65 66 67  abcdefg','bcdefg
0600: 27 29 3b 7d 0a 7d 20 7b 32 7d 0a 64 6f 5f 74 65  ');}.} {2}.do_te
0610: 73 74 20 69 6e 73 74 72 2d 31 2e 31 32 20 7b 0a  st instr-1.12 {.
0620: 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43    db eval {SELEC
0630: 54 20 69 6e 73 74 72 28 27 61 62 63 64 65 66 67  T instr('abcdefg
0640: 27 2c 27 62 63 64 65 66 67 68 27 29 3b 7d 0a 7d  ','bcdefgh');}.}
0650: 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73   {0}.do_test ins
0660: 74 72 2d 31 2e 31 33 20 7b 0a 20 20 64 62 20 65  tr-1.13 {.  db e
0670: 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73 74  val {SELECT inst
0680: 72 28 27 61 62 63 64 65 66 67 27 2c 27 63 64 65  r('abcdefg','cde
0690: 66 67 27 29 3b 7d 0a 7d 20 7b 33 7d 0a 64 6f 5f  fg');}.} {3}.do_
06a0: 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 31 34 20  test instr-1.14 
06b0: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c  {.  db eval {SEL
06c0: 45 43 54 20 69 6e 73 74 72 28 27 61 62 63 64 65  ECT instr('abcde
06d0: 66 67 27 2c 27 63 64 65 66 67 68 27 29 3b 7d 0a  fg','cdefgh');}.
06e0: 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 69 6e  } {0}.do_test in
06f0: 73 74 72 2d 31 2e 31 35 20 7b 0a 20 20 64 62 20  str-1.15 {.  db 
0700: 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73  eval {SELECT ins
0710: 74 72 28 27 61 62 63 64 65 66 67 27 2c 27 64 65  tr('abcdefg','de
0720: 66 67 27 29 3b 7d 0a 7d 20 7b 34 7d 0a 64 6f 5f  fg');}.} {4}.do_
0730: 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 31 36 20  test instr-1.16 
0740: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c  {.  db eval {SEL
0750: 45 43 54 20 69 6e 73 74 72 28 27 61 62 63 64 65  ECT instr('abcde
0760: 66 67 27 2c 27 64 65 66 67 68 27 29 3b 7d 0a 7d  fg','defgh');}.}
0770: 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73   {0}.do_test ins
0780: 74 72 2d 31 2e 31 37 20 7b 0a 20 20 64 62 20 65  tr-1.17 {.  db e
0790: 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73 74  val {SELECT inst
07a0: 72 28 27 61 62 63 64 65 66 67 27 2c 27 65 66 67  r('abcdefg','efg
07b0: 27 29 3b 7d 0a 7d 20 7b 35 7d 0a 64 6f 5f 74 65  ');}.} {5}.do_te
07c0: 73 74 20 69 6e 73 74 72 2d 31 2e 31 38 20 7b 0a  st instr-1.18 {.
07d0: 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43    db eval {SELEC
07e0: 54 20 69 6e 73 74 72 28 27 61 62 63 64 65 66 67  T instr('abcdefg
07f0: 27 2c 27 65 66 67 68 27 29 3b 7d 0a 7d 20 7b 30  ','efgh');}.} {0
0800: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73 74 72 2d  }.do_test instr-
0810: 31 2e 31 39 20 7b 0a 20 20 64 62 20 65 76 61 6c  1.19 {.  db eval
0820: 20 7b 53 45 4c 45 43 54 20 69 6e 73 74 72 28 27   {SELECT instr('
0830: 61 62 63 64 65 66 67 27 2c 27 66 67 27 29 3b 7d  abcdefg','fg');}
0840: 0a 7d 20 7b 36 7d 0a 64 6f 5f 74 65 73 74 20 69  .} {6}.do_test i
0850: 6e 73 74 72 2d 31 2e 32 30 20 7b 0a 20 20 64 62  nstr-1.20 {.  db
0860: 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e   eval {SELECT in
0870: 73 74 72 28 27 61 62 63 64 65 66 67 27 2c 27 66  str('abcdefg','f
0880: 67 68 27 29 3b 7d 0a 7d 20 7b 30 7d 0a 64 6f 5f  gh');}.} {0}.do_
0890: 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 32 31 20  test instr-1.21 
08a0: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c  {.  db eval {SEL
08b0: 45 43 54 20 63 6f 61 6c 65 73 63 65 28 69 6e 73  ECT coalesce(ins
08c0: 74 72 28 27 61 62 63 64 65 66 67 27 2c 4e 55 4c  tr('abcdefg',NUL
08d0: 4c 29 2c 27 6e 69 6c 27 29 3b 7d 0a 7d 20 7b 6e  L),'nil');}.} {n
08e0: 69 6c 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73 74  il}.do_test inst
08f0: 72 2d 31 2e 32 32 20 7b 0a 20 20 64 62 20 65 76  r-1.22 {.  db ev
0900: 61 6c 20 7b 53 45 4c 45 43 54 20 63 6f 61 6c 65  al {SELECT coale
0910: 73 63 65 28 69 6e 73 74 72 28 4e 55 4c 4c 2c 27  sce(instr(NULL,'
0920: 78 27 29 2c 27 6e 69 6c 27 29 3b 7d 0a 7d 20 7b  x'),'nil');}.} {
0930: 6e 69 6c 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73  nil}.do_test ins
0940: 74 72 2d 31 2e 32 33 20 7b 0a 20 20 64 62 20 65  tr-1.23 {.  db e
0950: 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73 74  val {SELECT inst
0960: 72 28 31 32 33 34 35 2c 33 34 29 3b 7d 0a 7d 20  r(12345,34);}.} 
0970: 7b 33 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73 74  {3}.do_test inst
0980: 72 2d 31 2e 32 34 20 7b 0a 20 20 64 62 20 65 76  r-1.24 {.  db ev
0990: 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73 74 72  al {SELECT instr
09a0: 28 31 32 33 34 35 36 2e 37 38 2c 33 34 29 3b 7d  (123456.78,34);}
09b0: 0a 7d 20 7b 33 7d 0a 64 6f 5f 74 65 73 74 20 69  .} {3}.do_test i
09c0: 6e 73 74 72 2d 31 2e 32 35 20 7b 0a 20 20 64 62  nstr-1.25 {.  db
09d0: 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e   eval {SELECT in
09e0: 73 74 72 28 31 32 33 34 35 36 2e 37 38 2c 78 27  str(123456.78,x'
09f0: 33 33 33 34 27 29 3b 7d 0a 7d 20 7b 33 7d 0a 64  3334');}.} {3}.d
0a00: 6f 5f 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 32  o_test instr-1.2
0a10: 36 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53  6 {.  db eval {S
0a20: 45 4c 45 43 54 20 69 6e 73 74 72 28 27 c3 a4 62  ELECT instr('..b
0a30: 63 64 65 66 67 27 2c 27 65 66 67 27 29 3b 7d 0a  cdefg','efg');}.
0a40: 7d 20 7b 35 7d 0a 64 6f 5f 74 65 73 74 20 69 6e  } {5}.do_test in
0a50: 73 74 72 2d 31 2e 32 37 20 7b 0a 20 20 64 62 20  str-1.27 {.  db 
0a60: 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73  eval {SELECT ins
0a70: 74 72 28 27 e2 82 ac 78 79 7a 7a 79 27 2c 27 78  tr('...xyzzy','x
0a80: 79 7a 27 29 3b 7d 0a 7d 20 7b 32 7d 0a 64 6f 5f  yz');}.} {2}.do_
0a90: 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 32 38 20  test instr-1.28 
0aa0: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c  {.  db eval {SEL
0ab0: 45 43 54 20 69 6e 73 74 72 28 27 61 62 63 e2 82  ECT instr('abc..
0ac0: ac 78 79 7a 7a 79 27 2c 27 78 79 7a 27 29 3b 7d  .xyzzy','xyz');}
0ad0: 0a 7d 20 7b 35 7d 0a 64 6f 5f 74 65 73 74 20 69  .} {5}.do_test i
0ae0: 6e 73 74 72 2d 31 2e 32 39 20 7b 0a 20 20 64 62  nstr-1.29 {.  db
0af0: 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e   eval {SELECT in
0b00: 73 74 72 28 27 61 62 63 e2 82 ac 78 79 7a 7a 79  str('abc...xyzzy
0b10: 27 2c 27 e2 82 ac 78 79 7a 27 29 3b 7d 0a 7d 20  ','...xyz');}.} 
0b20: 7b 34 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73 74  {4}.do_test inst
0b30: 72 2d 31 2e 33 30 20 7b 0a 20 20 64 62 20 65 76  r-1.30 {.  db ev
0b40: 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73 74 72  al {SELECT instr
0b50: 28 27 61 62 63 e2 82 ac 78 79 7a 7a 79 27 2c 27  ('abc...xyzzy','
0b60: 63 e2 82 ac 78 79 7a 27 29 3b 7d 0a 7d 20 7b 33  c...xyz');}.} {3
0b70: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73 74 72 2d  }.do_test instr-
0b80: 31 2e 33 31 20 7b 0a 20 20 64 62 20 65 76 61 6c  1.31 {.  db eval
0b90: 20 7b 53 45 4c 45 43 54 20 69 6e 73 74 72 28 78   {SELECT instr(x
0ba0: 27 30 31 30 32 30 33 30 34 30 35 27 2c 78 27 30  '0102030405',x'0
0bb0: 31 27 29 3b 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74  1');}.} {1}.do_t
0bc0: 65 73 74 20 69 6e 73 74 72 2d 31 2e 33 32 20 7b  est instr-1.32 {
0bd0: 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c 45  .  db eval {SELE
0be0: 43 54 20 69 6e 73 74 72 28 78 27 30 31 30 32 30  CT instr(x'01020
0bf0: 33 30 34 30 35 27 2c 78 27 30 32 27 29 3b 7d 0a  30405',x'02');}.
0c00: 7d 20 7b 32 7d 0a 64 6f 5f 74 65 73 74 20 69 6e  } {2}.do_test in
0c10: 73 74 72 2d 31 2e 33 33 20 7b 0a 20 20 64 62 20  str-1.33 {.  db 
0c20: 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73  eval {SELECT ins
0c30: 74 72 28 78 27 30 31 30 32 30 33 30 34 30 35 27  tr(x'0102030405'
0c40: 2c 78 27 30 33 27 29 3b 7d 0a 7d 20 7b 33 7d 0a  ,x'03');}.} {3}.
0c50: 64 6f 5f 74 65 73 74 20 69 6e 73 74 72 2d 31 2e  do_test instr-1.
0c60: 33 34 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b  34 {.  db eval {
0c70: 53 45 4c 45 43 54 20 69 6e 73 74 72 28 78 27 30  SELECT instr(x'0
0c80: 31 30 32 30 33 30 34 30 35 27 2c 78 27 30 34 27  102030405',x'04'
0c90: 29 3b 7d 0a 7d 20 7b 34 7d 0a 64 6f 5f 74 65 73  );}.} {4}.do_tes
0ca0: 74 20 69 6e 73 74 72 2d 31 2e 33 35 20 7b 0a 20  t instr-1.35 {. 
0cb0: 20 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43 54   db eval {SELECT
0cc0: 20 69 6e 73 74 72 28 78 27 30 31 30 32 30 33 30   instr(x'0102030
0cd0: 34 30 35 27 2c 78 27 30 35 27 29 3b 7d 0a 7d 20  405',x'05');}.} 
0ce0: 7b 35 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73 74  {5}.do_test inst
0cf0: 72 2d 31 2e 33 36 20 7b 0a 20 20 64 62 20 65 76  r-1.36 {.  db ev
0d00: 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73 74 72  al {SELECT instr
0d10: 28 78 27 30 31 30 32 30 33 30 34 30 35 27 2c 78  (x'0102030405',x
0d20: 27 30 36 27 29 3b 7d 0a 7d 20 7b 30 7d 0a 64 6f  '06');}.} {0}.do
0d30: 5f 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 33 37  _test instr-1.37
0d40: 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45   {.  db eval {SE
0d50: 4c 45 43 54 20 69 6e 73 74 72 28 78 27 30 31 30  LECT instr(x'010
0d60: 32 30 33 30 34 30 35 27 2c 78 27 30 31 30 32 30  2030405',x'01020
0d70: 33 30 34 30 35 27 29 3b 7d 0a 7d 20 7b 31 7d 0a  30405');}.} {1}.
0d80: 64 6f 5f 74 65 73 74 20 69 6e 73 74 72 2d 31 2e  do_test instr-1.
0d90: 33 38 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b  38 {.  db eval {
0da0: 53 45 4c 45 43 54 20 69 6e 73 74 72 28 78 27 30  SELECT instr(x'0
0db0: 31 30 32 30 33 30 34 30 35 27 2c 78 27 30 32 30  102030405',x'020
0dc0: 33 30 34 30 35 27 29 3b 7d 0a 7d 20 7b 32 7d 0a  30405');}.} {2}.
0dd0: 64 6f 5f 74 65 73 74 20 69 6e 73 74 72 2d 31 2e  do_test instr-1.
0de0: 33 39 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b  39 {.  db eval {
0df0: 53 45 4c 45 43 54 20 69 6e 73 74 72 28 78 27 30  SELECT instr(x'0
0e00: 31 30 32 30 33 30 34 30 35 27 2c 78 27 30 33 30  102030405',x'030
0e10: 34 30 35 27 29 3b 7d 0a 7d 20 7b 33 7d 0a 64 6f  405');}.} {3}.do
0e20: 5f 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 34 30  _test instr-1.40
0e30: 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45   {.  db eval {SE
0e40: 4c 45 43 54 20 69 6e 73 74 72 28 78 27 30 31 30  LECT instr(x'010
0e50: 32 30 33 30 34 30 35 27 2c 78 27 30 34 30 35 27  2030405',x'0405'
0e60: 29 3b 7d 0a 7d 20 7b 34 7d 0a 64 6f 5f 74 65 73  );}.} {4}.do_tes
0e70: 74 20 69 6e 73 74 72 2d 31 2e 34 31 20 7b 0a 20  t instr-1.41 {. 
0e80: 20 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43 54   db eval {SELECT
0e90: 20 69 6e 73 74 72 28 78 27 30 31 30 32 30 33 30   instr(x'0102030
0ea0: 34 30 35 27 2c 78 27 30 35 30 36 27 29 3b 7d 0a  405',x'0506');}.
0eb0: 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 69 6e  } {0}.do_test in
0ec0: 73 74 72 2d 31 2e 34 32 20 7b 0a 20 20 64 62 20  str-1.42 {.  db 
0ed0: 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73  eval {SELECT ins
0ee0: 74 72 28 78 27 30 31 30 32 30 33 30 34 30 35 27  tr(x'0102030405'
0ef0: 2c 78 27 27 29 3b 7d 0a 7d 20 7b 31 7d 0a 64 6f  ,x'');}.} {1}.do
0f00: 5f 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 34 33  _test instr-1.43
0f10: 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45   {.  db eval {SE
0f20: 4c 45 43 54 20 69 6e 73 74 72 28 78 27 27 2c 78  LECT instr(x'',x
0f30: 27 27 29 3b 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74  '');}.} {1}.do_t
0f40: 65 73 74 20 69 6e 73 74 72 2d 31 2e 34 34 20 7b  est instr-1.44 {
0f50: 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c 45  .  db eval {SELE
0f60: 43 54 20 69 6e 73 74 72 28 27 27 2c 27 27 29 3b  CT instr('','');
0f70: 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20  }.} {1}.do_test 
0f80: 69 6e 73 74 72 2d 31 2e 34 35 20 7b 0a 20 20 64  instr-1.45 {.  d
0f90: 62 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 69  b eval {SELECT i
0fa0: 6e 73 74 72 28 27 61 62 63 64 65 66 67 27 2c 27  nstr('abcdefg','
0fb0: 27 29 3b 7d 0a 7d 20 7b 31 7d 0a 75 6e 73 65 74  ');}.} {1}.unset
0fc0: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 6c 6f 6e   -nocomplain lon
0fd0: 67 73 74 72 0a 73 65 74 20 6c 6f 6e 67 73 74 72  gstr.set longstr
0fe0: 20 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6f 6e   abcdefghijklmon
0ff0: 70 71 72 73 74 75 76 77 78 79 7a 0a 61 70 70 65  pqrstuvwxyz.appe
1000: 6e 64 20 6c 6f 6e 67 73 74 72 20 24 6c 6f 6e 67  nd longstr $long
1010: 73 74 72 0a 61 70 70 65 6e 64 20 6c 6f 6e 67 73  str.append longs
1020: 74 72 20 24 6c 6f 6e 67 73 74 72 0a 61 70 70 65  tr $longstr.appe
1030: 6e 64 20 6c 6f 6e 67 73 74 72 20 24 6c 6f 6e 67  nd longstr $long
1040: 73 74 72 0a 61 70 70 65 6e 64 20 6c 6f 6e 67 73  str.append longs
1050: 74 72 20 24 6c 6f 6e 67 73 74 72 0a 61 70 70 65  tr $longstr.appe
1060: 6e 64 20 6c 6f 6e 67 73 74 72 20 24 6c 6f 6e 67  nd longstr $long
1070: 73 74 72 0a 61 70 70 65 6e 64 20 6c 6f 6e 67 73  str.append longs
1080: 74 72 20 24 6c 6f 6e 67 73 74 72 0a 61 70 70 65  tr $longstr.appe
1090: 6e 64 20 6c 6f 6e 67 73 74 72 20 24 6c 6f 6e 67  nd longstr $long
10a0: 73 74 72 0a 61 70 70 65 6e 64 20 6c 6f 6e 67 73  str.append longs
10b0: 74 72 20 24 6c 6f 6e 67 73 74 72 0a 61 70 70 65  tr $longstr.appe
10c0: 6e 64 20 6c 6f 6e 67 73 74 72 20 24 6c 6f 6e 67  nd longstr $long
10d0: 73 74 72 0a 61 70 70 65 6e 64 20 6c 6f 6e 67 73  str.append longs
10e0: 74 72 20 24 6c 6f 6e 67 73 74 72 0a 61 70 70 65  tr $longstr.appe
10f0: 6e 64 20 6c 6f 6e 67 73 74 72 20 24 6c 6f 6e 67  nd longstr $long
1100: 73 74 72 0a 61 70 70 65 6e 64 20 6c 6f 6e 67 73  str.append longs
1110: 74 72 20 24 6c 6f 6e 67 73 74 72 0a 23 20 70 75  tr $longstr.# pu
1120: 74 73 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74  ts [string lengt
1130: 68 20 24 6c 6f 6e 67 73 74 72 5d 0a 61 70 70 65  h $longstr].appe
1140: 6e 64 20 6c 6f 6e 67 73 74 72 20 58 61 62 63 64  nd longstr Xabcd
1150: 65 0a 64 6f 5f 74 65 73 74 20 69 6e 73 74 72 2d  e.do_test instr-
1160: 31 2e 34 36 20 7b 0a 20 20 64 62 20 65 76 61 6c  1.46 {.  db eval
1170: 20 7b 53 45 4c 45 43 54 20 69 6e 73 74 72 28 24   {SELECT instr($
1180: 6c 6f 6e 67 73 74 72 2c 27 58 27 29 3b 7d 0a 7d  longstr,'X');}.}
1190: 20 7b 31 30 36 34 39 37 7d 0a 64 6f 5f 74 65 73   {106497}.do_tes
11a0: 74 20 69 6e 73 74 72 2d 31 2e 34 37 20 7b 0a 20  t instr-1.47 {. 
11b0: 20 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43 54   db eval {SELECT
11c0: 20 69 6e 73 74 72 28 24 6c 6f 6e 67 73 74 72 2c   instr($longstr,
11d0: 27 59 27 29 3b 7d 0a 7d 20 7b 30 7d 0a 64 6f 5f  'Y');}.} {0}.do_
11e0: 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 34 38 20  test instr-1.48 
11f0: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c  {.  db eval {SEL
1200: 45 43 54 20 69 6e 73 74 72 28 24 6c 6f 6e 67 73  ECT instr($longs
1210: 74 72 2c 27 58 61 27 29 3b 7d 0a 7d 20 7b 31 30  tr,'Xa');}.} {10
1220: 36 34 39 37 7d 0a 64 6f 5f 74 65 73 74 20 69 6e  6497}.do_test in
1230: 73 74 72 2d 31 2e 34 39 20 7b 0a 20 20 64 62 20  str-1.49 {.  db 
1240: 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73  eval {SELECT ins
1250: 74 72 28 24 6c 6f 6e 67 73 74 72 2c 27 7a 58 61  tr($longstr,'zXa
1260: 27 29 3b 7d 0a 7d 20 7b 31 30 36 34 39 36 7d 0a  ');}.} {106496}.
1270: 73 65 74 20 6c 6f 6e 67 73 74 72 20 5b 73 74 72  set longstr [str
1280: 69 6e 67 20 6d 61 70 20 7b 61 20 c3 a4 7d 20 24  ing map {a ..} $
1290: 6c 6f 6e 67 73 74 72 5d 0a 64 6f 5f 74 65 73 74  longstr].do_test
12a0: 20 69 6e 73 74 72 2d 31 2e 35 30 20 7b 0a 20 20   instr-1.50 {.  
12b0: 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20  db eval {SELECT 
12c0: 69 6e 73 74 72 28 24 6c 6f 6e 67 73 74 72 2c 27  instr($longstr,'
12d0: 58 27 29 3b 7d 0a 7d 20 7b 31 30 36 34 39 37 7d  X');}.} {106497}
12e0: 0a 64 6f 5f 74 65 73 74 20 69 6e 73 74 72 2d 31  .do_test instr-1
12f0: 2e 35 31 20 7b 0a 20 20 64 62 20 65 76 61 6c 20  .51 {.  db eval 
1300: 7b 53 45 4c 45 43 54 20 69 6e 73 74 72 28 24 6c  {SELECT instr($l
1310: 6f 6e 67 73 74 72 2c 27 59 27 29 3b 7d 0a 7d 20  ongstr,'Y');}.} 
1320: 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73 74  {0}.do_test inst
1330: 72 2d 31 2e 35 32 20 7b 0a 20 20 64 62 20 65 76  r-1.52 {.  db ev
1340: 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73 74 72  al {SELECT instr
1350: 28 24 6c 6f 6e 67 73 74 72 2c 27 58 c3 a4 27 29  ($longstr,'X..')
1360: 3b 7d 0a 7d 20 7b 31 30 36 34 39 37 7d 0a 64 6f  ;}.} {106497}.do
1370: 5f 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 35 33  _test instr-1.53
1380: 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45   {.  db eval {SE
1390: 4c 45 43 54 20 69 6e 73 74 72 28 24 6c 6f 6e 67  LECT instr($long
13a0: 73 74 72 2c 27 7a 58 c3 a4 27 29 3b 7d 0a 7d 20  str,'zX..');}.} 
13b0: 7b 31 30 36 34 39 36 7d 0a 64 6f 5f 74 65 73 74  {106496}.do_test
13c0: 20 69 6e 73 74 72 2d 31 2e 35 34 20 7b 0a 20 20   instr-1.54 {.  
13d0: 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20  db eval {SELECT 
13e0: 69 6e 73 74 72 28 78 27 37 38 63 33 61 34 65 32  instr(x'78c3a4e2
13f0: 38 32 61 63 37 39 27 2c 27 78 27 29 3b 7d 0a 7d  82ac79','x');}.}
1400: 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73   {1}.do_test ins
1410: 74 72 2d 31 2e 35 35 20 7b 0a 20 20 64 62 20 65  tr-1.55 {.  db e
1420: 76 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73 74  val {SELECT inst
1430: 72 28 78 27 37 38 63 33 61 34 65 32 38 32 61 63  r(x'78c3a4e282ac
1440: 37 39 27 2c 27 79 27 29 3b 7d 0a 7d 20 7b 34 7d  79','y');}.} {4}
1450: 0a 0a 23 20 45 56 49 44 45 4e 43 45 2d 4f 46 3a  ..# EVIDENCE-OF:
1460: 20 52 2d 34 36 34 32 31 2d 33 32 35 34 31 20 4f   R-46421-32541 O
1470: 72 2c 20 69 66 20 58 20 61 6e 64 20 59 20 61 72  r, if X and Y ar
1480: 65 20 62 6f 74 68 20 42 4c 4f 42 73 2c 20 74 68  e both BLOBs, th
1490: 65 6e 0a 23 20 69 6e 73 74 72 28 58 2c 59 29 20  en.# instr(X,Y) 
14a0: 72 65 74 75 72 6e 73 20 6f 6e 65 20 6d 6f 72 65  returns one more
14b0: 20 74 68 61 6e 20 74 68 65 20 6e 75 6d 62 65 72   than the number
14c0: 20 62 79 74 65 73 20 70 72 69 6f 72 20 74 6f 20   bytes prior to 
14d0: 74 68 65 20 66 69 72 73 74 0a 23 20 6f 63 63 75  the first.# occu
14e0: 72 72 65 6e 63 65 20 6f 66 20 59 2c 20 6f 72 20  rrence of Y, or 
14f0: 30 20 69 66 20 59 20 64 6f 65 73 20 6e 6f 74 20  0 if Y does not 
1500: 6f 63 63 75 72 20 61 6e 79 77 68 65 72 65 20 77  occur anywhere w
1510: 69 74 68 69 6e 20 58 2e 0a 23 0a 64 6f 5f 74 65  ithin X..#.do_te
1520: 73 74 20 69 6e 73 74 72 2d 31 2e 35 36 2e 31 20  st instr-1.56.1 
1530: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c  {.  db eval {SEL
1540: 45 43 54 20 69 6e 73 74 72 28 78 27 37 38 63 33  ECT instr(x'78c3
1550: 61 34 65 32 38 32 61 63 37 39 27 2c 78 27 37 39  a4e282ac79',x'79
1560: 27 29 3b 7d 0a 7d 20 7b 37 7d 0a 64 6f 5f 74 65  ');}.} {7}.do_te
1570: 73 74 20 69 6e 73 74 72 2d 31 2e 35 36 2e 32 20  st instr-1.56.2 
1580: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c  {.  db eval {SEL
1590: 45 43 54 20 69 6e 73 74 72 28 78 27 37 38 63 33  ECT instr(x'78c3
15a0: 61 34 65 32 38 32 61 63 37 39 27 2c 78 27 37 61  a4e282ac79',x'7a
15b0: 27 29 3b 7d 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65  ');}.} {0}.do_te
15c0: 73 74 20 69 6e 73 74 72 2d 31 2e 35 36 2e 33 20  st instr-1.56.3 
15d0: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c  {.  db eval {SEL
15e0: 45 43 54 20 69 6e 73 74 72 28 78 27 37 38 63 33  ECT instr(x'78c3
15f0: 61 34 65 32 38 32 61 63 37 39 27 2c 78 27 37 38  a4e282ac79',x'78
1600: 27 29 3b 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65  ');}.} {1}.do_te
1610: 73 74 20 69 6e 73 74 72 2d 31 2e 35 36 2e 33 20  st instr-1.56.3 
1620: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c  {.  db eval {SEL
1630: 45 43 54 20 69 6e 73 74 72 28 78 27 37 38 63 33  ECT instr(x'78c3
1640: 61 34 65 32 38 32 61 63 37 39 27 2c 78 27 61 34  a4e282ac79',x'a4
1650: 27 29 3b 7d 0a 7d 20 7b 33 7d 0a 0a 23 20 45 56  ');}.} {3}..# EV
1660: 49 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 31 37 33  IDENCE-OF: R-173
1670: 32 39 2d 33 35 36 34 34 20 49 66 20 62 6f 74 68  29-35644 If both
1680: 20 61 72 67 75 6d 65 6e 74 73 20 58 20 61 6e 64   arguments X and
1690: 20 59 20 74 6f 20 69 6e 73 74 72 28 58 2c 59 29   Y to instr(X,Y)
16a0: 20 61 72 65 0a 23 20 6e 6f 6e 2d 4e 55 4c 4c 20   are.# non-NULL 
16b0: 61 6e 64 20 61 72 65 20 6e 6f 74 20 42 4c 4f 42  and are not BLOB
16c0: 73 20 74 68 65 6e 20 62 6f 74 68 20 61 72 65 20  s then both are 
16d0: 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 73  interpreted as s
16e0: 74 72 69 6e 67 73 2e 0a 23 0a 64 6f 5f 74 65 73  trings..#.do_tes
16f0: 74 20 69 6e 73 74 72 2d 31 2e 35 37 2e 31 20 7b  t instr-1.57.1 {
1700: 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c 45  .  db eval {SELE
1710: 43 54 20 69 6e 73 74 72 28 27 78 c3 a4 e2 82 ac  CT instr('x.....
1720: 79 27 2c 78 27 37 39 27 29 3b 7d 0a 7d 20 7b 34  y',x'79');}.} {4
1730: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73 74 72 2d  }.do_test instr-
1740: 31 2e 35 37 2e 32 20 7b 0a 20 20 64 62 20 65 76  1.57.2 {.  db ev
1750: 61 6c 20 7b 53 45 4c 45 43 54 20 69 6e 73 74 72  al {SELECT instr
1760: 28 27 78 c3 a4 e2 82 ac 79 27 2c 78 27 61 34 27  ('x.....y',x'a4'
1770: 29 3b 7d 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73  );}.} {0}.do_tes
1780: 74 20 69 6e 73 74 72 2d 31 2e 35 37 2e 33 20 7b  t instr-1.57.3 {
1790: 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c 45  .  db eval {SELE
17a0: 43 54 20 69 6e 73 74 72 28 78 27 37 38 63 33 61  CT instr(x'78c3a
17b0: 34 65 32 38 32 61 63 37 39 27 2c 27 79 27 29 3b  4e282ac79','y');
17c0: 7d 0a 7d 20 7b 34 7d 0a 0a 23 20 45 56 49 44 45  }.} {4}..# EVIDE
17d0: 4e 43 45 2d 4f 46 3a 20 52 2d 31 34 37 30 38 2d  NCE-OF: R-14708-
17e0: 32 37 34 38 37 20 49 66 20 65 69 74 68 65 72 20  27487 If either 
17f0: 58 20 6f 72 20 59 20 61 72 65 20 4e 55 4c 4c 20  X or Y are NULL 
1800: 69 6e 20 69 6e 73 74 72 28 58 2c 59 29 0a 23 20  in instr(X,Y).# 
1810: 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20  then the result 
1820: 69 73 20 4e 55 4c 4c 2e 0a 23 0a 64 6f 5f 65 78  is NULL..#.do_ex
1830: 65 63 73 71 6c 5f 74 65 73 74 20 69 6e 73 74 72  ecsql_test instr
1840: 2d 31 2e 36 30 20 7b 0a 20 20 53 45 4c 45 43 54  -1.60 {.  SELECT
1850: 20 63 6f 61 6c 65 73 63 65 28 69 6e 73 74 72 28   coalesce(instr(
1860: 4e 55 4c 4c 2c 27 61 62 63 27 29 2c 20 39 39 39  NULL,'abc'), 999
1870: 29 3b 0a 7d 20 7b 39 39 39 7d 0a 64 6f 5f 65 78  );.} {999}.do_ex
1880: 65 63 73 71 6c 5f 74 65 73 74 20 69 6e 73 74 72  ecsql_test instr
1890: 2d 31 2e 36 31 20 7b 0a 20 20 53 45 4c 45 43 54  -1.61 {.  SELECT
18a0: 20 63 6f 61 6c 65 73 63 65 28 69 6e 73 74 72 28   coalesce(instr(
18b0: 27 61 62 63 27 2c 4e 55 4c 4c 29 2c 20 39 39 39  'abc',NULL), 999
18c0: 29 3b 0a 7d 20 7b 39 39 39 7d 0a 64 6f 5f 65 78  );.} {999}.do_ex
18d0: 65 63 73 71 6c 5f 74 65 73 74 20 69 6e 73 74 72  ecsql_test instr
18e0: 2d 31 2e 36 32 20 7b 0a 20 20 53 45 4c 45 43 54  -1.62 {.  SELECT
18f0: 20 63 6f 61 6c 65 73 63 65 28 69 6e 73 74 72 28   coalesce(instr(
1900: 4e 55 4c 4c 2c 4e 55 4c 4c 29 2c 20 39 39 39 29  NULL,NULL), 999)
1910: 3b 0a 7d 20 7b 39 39 39 7d 0a 0a 64 6f 5f 65 78  ;.} {999}..do_ex
1920: 65 63 73 71 6c 5f 74 65 73 74 20 69 6e 73 74 72  ecsql_test instr
1930: 2d 31 2e 36 33 20 7b 0a 20 20 53 45 4c 45 43 54  -1.63 {.  SELECT
1940: 20 69 6e 73 74 72 28 58 27 27 2c 20 27 61 62 63   instr(X'', 'abc
1950: 27 29 0a 7d 20 30 0a 64 6f 5f 65 78 65 63 73 71  ').} 0.do_execsq
1960: 6c 5f 74 65 73 74 20 69 6e 73 74 72 2d 31 2e 36  l_test instr-1.6
1970: 34 20 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42  4 {.  CREATE TAB
1980: 4c 45 20 78 31 28 61 2c 20 62 29 3b 0a 20 20 49  LE x1(a, b);.  I
1990: 4e 53 45 52 54 20 49 4e 54 4f 20 78 31 20 56 41  NSERT INTO x1 VA
19a0: 4c 55 45 53 28 58 27 27 2c 20 27 61 62 63 27 29  LUES(X'', 'abc')
19b0: 3b 0a 20 20 53 45 4c 45 43 54 20 69 6e 73 74 72  ;.  SELECT instr
19c0: 28 61 2c 20 62 29 20 46 52 4f 4d 20 78 31 3b 0a  (a, b) FROM x1;.
19d0: 7d 20 30 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74  } 0..finish_test
19e0: 0a                                               .