/ Hex Artifact Content
Login

Artifact 30e7bd98ab6d70a62bb9ba572e4c7df347fe645e:


0000: 2f 2a 0a 2a 2a 20 32 30 30 36 20 41 75 67 75 73  /*.** 2006 Augus
0010: 74 20 32 33 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61  t 23.**.** The a
0020: 75 74 68 6f 72 20 64 69 73 63 6c 61 69 6d 73 20  uthor disclaims 
0030: 63 6f 70 79 72 69 67 68 74 20 74 6f 20 74 68 69  copyright to thi
0040: 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e 20 20  s source code.  
0050: 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 61  In place of.** a
0060: 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68   legal notice, h
0070: 65 72 65 20 69 73 20 61 20 62 6c 65 73 73 69 6e  ere is a blessin
0080: 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79 20  g:.**.**    May 
0090: 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61 6e 64 20  you do good and 
00a0: 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20 20 20 20  not evil..**    
00b0: 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66 6f 72  May you find for
00c0: 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79 6f 75  giveness for you
00d0: 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67 69 76  rself and forgiv
00e0: 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20 20 20 20  e others..**    
00f0: 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20 66 72  May you share fr
0100: 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61 6b 69  eely, never taki
0110: 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75  ng more than you
0120: 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a   give..**.******
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 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0170: 2a 2a 2a 0a 2a 2a 20 54 65 73 74 20 65 78 74 65  ***.** Test exte
0180: 6e 73 69 6f 6e 20 66 6f 72 20 74 65 73 74 69 6e  nsion for testin
0190: 67 20 74 68 65 20 73 71 6c 69 74 65 33 5f 61 75  g the sqlite3_au
01a0: 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 28 29 20 66  to_extension() f
01b0: 75 6e 63 74 69 6f 6e 2e 0a 2a 2f 0a 23 69 6e 63  unction..*/.#inc
01c0: 6c 75 64 65 20 22 74 63 6c 2e 68 22 0a 23 69 6e  lude "tcl.h".#in
01d0: 63 6c 75 64 65 20 22 73 71 6c 69 74 65 33 65 78  clude "sqlite3ex
01e0: 74 2e 68 22 0a 0a 23 69 66 6e 64 65 66 20 53 51  t.h"..#ifndef SQ
01f0: 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45  LITE_OMIT_LOAD_E
0200: 58 54 45 4e 53 49 4f 4e 0a 73 74 61 74 69 63 20  XTENSION.static 
0210: 53 51 4c 49 54 45 5f 45 58 54 45 4e 53 49 4f 4e  SQLITE_EXTENSION
0220: 5f 49 4e 49 54 31 0a 0a 2f 2a 0a 2a 2a 20 54 68  _INIT1../*.** Th
0230: 65 20 73 71 72 28 29 20 53 51 4c 20 66 75 6e 63  e sqr() SQL func
0240: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
0250: 20 73 71 75 61 72 65 20 6f 66 20 69 74 73 20 69   square of its i
0260: 6e 70 75 74 20 76 61 6c 75 65 2e 0a 2a 2f 0a 73  nput value..*/.s
0270: 74 61 74 69 63 20 76 6f 69 64 20 73 71 72 46 75  tatic void sqrFu
0280: 6e 63 28 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f  nc(.  sqlite3_co
0290: 6e 74 65 78 74 20 2a 63 6f 6e 74 65 78 74 2c 0a  ntext *context,.
02a0: 20 20 69 6e 74 20 61 72 67 63 2c 0a 20 20 73 71    int argc,.  sq
02b0: 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a 2a 61 72  lite3_value **ar
02c0: 67 76 0a 29 7b 0a 20 20 64 6f 75 62 6c 65 20 72  gv.){.  double r
02d0: 20 3d 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65   = sqlite3_value
02e0: 5f 64 6f 75 62 6c 65 28 61 72 67 76 5b 30 5d 29  _double(argv[0])
02f0: 3b 0a 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75  ;.  sqlite3_resu
0300: 6c 74 5f 64 6f 75 62 6c 65 28 63 6f 6e 74 65 78  lt_double(contex
0310: 74 2c 20 72 2a 72 29 3b 0a 7d 0a 0a 2f 2a 0a 2a  t, r*r);.}../*.*
0320: 2a 20 54 68 69 73 20 69 73 20 74 68 65 20 65 6e  * This is the en
0330: 74 72 79 20 70 6f 69 6e 74 20 74 6f 20 72 65 67  try point to reg
0340: 69 73 74 65 72 20 74 68 65 20 65 78 74 65 6e 73  ister the extens
0350: 69 6f 6e 20 66 6f 72 20 74 68 65 20 73 71 72 28  ion for the sqr(
0360: 29 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2f 0a 73  ) function..*/.s
0370: 74 61 74 69 63 20 69 6e 74 20 73 71 72 5f 69 6e  tatic int sqr_in
0380: 69 74 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64  it(.  sqlite3 *d
0390: 62 2c 20 0a 20 20 63 68 61 72 20 2a 2a 70 7a 45  b, .  char **pzE
03a0: 72 72 4d 73 67 2c 20 0a 20 20 63 6f 6e 73 74 20  rrMsg, .  const 
03b0: 73 71 6c 69 74 65 33 5f 61 70 69 5f 72 6f 75 74  sqlite3_api_rout
03c0: 69 6e 65 73 20 2a 70 41 70 69 0a 29 7b 0a 20 20  ines *pApi.){.  
03d0: 53 51 4c 49 54 45 5f 45 58 54 45 4e 53 49 4f 4e  SQLITE_EXTENSION
03e0: 5f 49 4e 49 54 32 28 70 41 70 69 29 3b 0a 20 20  _INIT2(pApi);.  
03f0: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
0400: 75 6e 63 74 69 6f 6e 28 64 62 2c 20 22 73 71 72  unction(db, "sqr
0410: 22 2c 20 31 2c 20 53 51 4c 49 54 45 5f 41 4e 59  ", 1, SQLITE_ANY
0420: 2c 20 30 2c 20 73 71 72 46 75 6e 63 2c 20 30 2c  , 0, sqrFunc, 0,
0430: 20 30 29 3b 0a 20 20 72 65 74 75 72 6e 20 30 3b   0);.  return 0;
0440: 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 63 75  .}../*.** The cu
0450: 62 65 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  be() SQL functio
0460: 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 63 75  n returns the cu
0470: 62 65 20 6f 66 20 69 74 73 20 69 6e 70 75 74 20  be of its input 
0480: 76 61 6c 75 65 2e 0a 2a 2f 0a 73 74 61 74 69 63  value..*/.static
0490: 20 76 6f 69 64 20 63 75 62 65 46 75 6e 63 28 0a   void cubeFunc(.
04a0: 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78    sqlite3_contex
04b0: 74 20 2a 63 6f 6e 74 65 78 74 2c 0a 20 20 69 6e  t *context,.  in
04c0: 74 20 61 72 67 63 2c 0a 20 20 73 71 6c 69 74 65  t argc,.  sqlite
04d0: 33 5f 76 61 6c 75 65 20 2a 2a 61 72 67 76 0a 29  3_value **argv.)
04e0: 7b 0a 20 20 64 6f 75 62 6c 65 20 72 20 3d 20 73  {.  double r = s
04f0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75  qlite3_value_dou
0500: 62 6c 65 28 61 72 67 76 5b 30 5d 29 3b 0a 20 20  ble(argv[0]);.  
0510: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64  sqlite3_result_d
0520: 6f 75 62 6c 65 28 63 6f 6e 74 65 78 74 2c 20 72  ouble(context, r
0530: 2a 72 2a 72 29 3b 0a 7d 0a 0a 2f 2a 0a 2a 2a 20  *r*r);.}../*.** 
0540: 54 68 69 73 20 69 73 20 74 68 65 20 65 6e 74 72  This is the entr
0550: 79 20 70 6f 69 6e 74 20 74 6f 20 72 65 67 69 73  y point to regis
0560: 74 65 72 20 74 68 65 20 65 78 74 65 6e 73 69 6f  ter the extensio
0570: 6e 20 66 6f 72 20 74 68 65 20 63 75 62 65 28 29  n for the cube()
0580: 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2f 0a 73 74   function..*/.st
0590: 61 74 69 63 20 69 6e 74 20 63 75 62 65 5f 69 6e  atic int cube_in
05a0: 69 74 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64  it(.  sqlite3 *d
05b0: 62 2c 20 0a 20 20 63 68 61 72 20 2a 2a 70 7a 45  b, .  char **pzE
05c0: 72 72 4d 73 67 2c 20 0a 20 20 63 6f 6e 73 74 20  rrMsg, .  const 
05d0: 73 71 6c 69 74 65 33 5f 61 70 69 5f 72 6f 75 74  sqlite3_api_rout
05e0: 69 6e 65 73 20 2a 70 41 70 69 0a 29 7b 0a 20 20  ines *pApi.){.  
05f0: 53 51 4c 49 54 45 5f 45 58 54 45 4e 53 49 4f 4e  SQLITE_EXTENSION
0600: 5f 49 4e 49 54 32 28 70 41 70 69 29 3b 0a 20 20  _INIT2(pApi);.  
0610: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
0620: 75 6e 63 74 69 6f 6e 28 64 62 2c 20 22 63 75 62  unction(db, "cub
0630: 65 22 2c 20 31 2c 20 53 51 4c 49 54 45 5f 41 4e  e", 1, SQLITE_AN
0640: 59 2c 20 30 2c 20 63 75 62 65 46 75 6e 63 2c 20  Y, 0, cubeFunc, 
0650: 30 2c 20 30 29 3b 0a 20 20 72 65 74 75 72 6e 20  0, 0);.  return 
0660: 30 3b 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73  0;.}../*.** This
0670: 20 69 73 20 61 20 62 72 6f 6b 65 6e 20 65 78 74   is a broken ext
0680: 65 6e 73 69 6f 6e 20 65 6e 74 72 79 20 70 6f 69  ension entry poi
0690: 6e 74 0a 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74  nt.*/.static int
06a0: 20 62 72 6f 6b 65 6e 5f 69 6e 69 74 28 0a 20 20   broken_init(.  
06b0: 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 0a 20 20  sqlite3 *db, .  
06c0: 63 68 61 72 20 2a 2a 70 7a 45 72 72 4d 73 67 2c  char **pzErrMsg,
06d0: 20 0a 20 20 63 6f 6e 73 74 20 73 71 6c 69 74 65   .  const sqlite
06e0: 33 5f 61 70 69 5f 72 6f 75 74 69 6e 65 73 20 2a  3_api_routines *
06f0: 70 41 70 69 0a 29 7b 0a 20 20 63 68 61 72 20 2a  pApi.){.  char *
0700: 7a 45 72 72 3b 0a 20 20 53 51 4c 49 54 45 5f 45  zErr;.  SQLITE_E
0710: 58 54 45 4e 53 49 4f 4e 5f 49 4e 49 54 32 28 70  XTENSION_INIT2(p
0720: 41 70 69 29 3b 0a 20 20 7a 45 72 72 20 3d 20 73  Api);.  zErr = s
0730: 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 22  qlite3_mprintf("
0740: 62 72 6f 6b 65 6e 20 61 75 74 6f 65 78 74 21 22  broken autoext!"
0750: 29 3b 0a 20 20 2a 70 7a 45 72 72 4d 73 67 20 3d  );.  *pzErrMsg =
0760: 20 7a 45 72 72 3b 0a 20 20 72 65 74 75 72 6e 20   zErr;.  return 
0770: 31 3b 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 74 63 6c 63  1;.}../*.** tclc
0780: 6d 64 3a 20 20 20 73 71 6c 69 74 65 33 5f 61 75  md:   sqlite3_au
0790: 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 5f 73 71 72  to_extension_sqr
07a0: 0a 2a 2a 0a 2a 2a 20 52 65 67 69 73 74 65 72 20  .**.** Register 
07b0: 74 68 65 20 22 73 71 72 22 20 65 78 74 65 6e 73  the "sqr" extens
07c0: 69 6f 6e 20 74 6f 20 62 65 20 6c 6f 61 64 65 64  ion to be loaded
07d0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a   automatically..
07e0: 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 20 61 75  */.static int au
07f0: 74 6f 45 78 74 53 71 72 4f 62 6a 43 6d 64 28 0a  toExtSqrObjCmd(.
0800: 20 20 76 6f 69 64 20 2a 20 63 6c 69 65 6e 74 44    void * clientD
0810: 61 74 61 2c 0a 20 20 54 63 6c 5f 49 6e 74 65 72  ata,.  Tcl_Inter
0820: 70 20 2a 69 6e 74 65 72 70 2c 0a 20 20 69 6e 74  p *interp,.  int
0830: 20 6f 62 6a 63 2c 0a 20 20 54 63 6c 5f 4f 62 6a   objc,.  Tcl_Obj
0840: 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 0a 29   *CONST objv[].)
0850: 7b 0a 20 20 69 6e 74 20 72 63 20 3d 20 73 71 6c  {.  int rc = sql
0860: 69 74 65 33 5f 61 75 74 6f 5f 65 78 74 65 6e 73  ite3_auto_extens
0870: 69 6f 6e 28 28 76 6f 69 64 2a 29 73 71 72 5f 69  ion((void*)sqr_i
0880: 6e 69 74 29 3b 0a 20 20 54 63 6c 5f 53 65 74 4f  nit);.  Tcl_SetO
0890: 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c  bjResult(interp,
08a0: 20 54 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a 28 72   Tcl_NewIntObj(r
08b0: 63 29 29 3b 0a 20 20 72 65 74 75 72 6e 20 53 51  c));.  return SQ
08c0: 4c 49 54 45 5f 4f 4b 3b 0a 7d 0a 0a 2f 2a 0a 2a  LITE_OK;.}../*.*
08d0: 2a 20 74 63 6c 63 6d 64 3a 20 20 20 73 71 6c 69  * tclcmd:   sqli
08e0: 74 65 33 5f 61 75 74 6f 5f 65 78 74 65 6e 73 69  te3_auto_extensi
08f0: 6f 6e 5f 63 75 62 65 0a 2a 2a 0a 2a 2a 20 52 65  on_cube.**.** Re
0900: 67 69 73 74 65 72 20 74 68 65 20 22 63 75 62 65  gister the "cube
0910: 22 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20 62  " extension to b
0920: 65 20 6c 6f 61 64 65 64 20 61 75 74 6f 6d 61 74  e loaded automat
0930: 69 63 61 6c 6c 79 2e 0a 2a 2f 0a 73 74 61 74 69  ically..*/.stati
0940: 63 20 69 6e 74 20 61 75 74 6f 45 78 74 43 75 62  c int autoExtCub
0950: 65 4f 62 6a 43 6d 64 28 0a 20 20 76 6f 69 64 20  eObjCmd(.  void 
0960: 2a 20 63 6c 69 65 6e 74 44 61 74 61 2c 0a 20 20  * clientData,.  
0970: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65  Tcl_Interp *inte
0980: 72 70 2c 0a 20 20 69 6e 74 20 6f 62 6a 63 2c 0a  rp,.  int objc,.
0990: 20 20 54 63 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54    Tcl_Obj *CONST
09a0: 20 6f 62 6a 76 5b 5d 0a 29 7b 0a 20 20 69 6e 74   objv[].){.  int
09b0: 20 72 63 20 3d 20 73 71 6c 69 74 65 33 5f 61 75   rc = sqlite3_au
09c0: 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 28 28 76 6f  to_extension((vo
09d0: 69 64 2a 29 63 75 62 65 5f 69 6e 69 74 29 3b 0a  id*)cube_init);.
09e0: 20 20 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75    Tcl_SetObjResu
09f0: 6c 74 28 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4e  lt(interp, Tcl_N
0a00: 65 77 49 6e 74 4f 62 6a 28 72 63 29 29 3b 0a 20  ewIntObj(rc));. 
0a10: 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f   return SQLITE_O
0a20: 4b 3b 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 74 63 6c 63  K;.}../*.** tclc
0a30: 6d 64 3a 20 20 20 73 71 6c 69 74 65 33 5f 61 75  md:   sqlite3_au
0a40: 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 5f 62 72 6f  to_extension_bro
0a50: 6b 65 6e 0a 2a 2a 0a 2a 2a 20 52 65 67 69 73 74  ken.**.** Regist
0a60: 65 72 20 74 68 65 20 62 72 6f 6b 65 6e 20 65 78  er the broken ex
0a70: 74 65 6e 73 69 6f 6e 20 74 6f 20 62 65 20 6c 6f  tension to be lo
0a80: 61 64 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c  aded automatical
0a90: 6c 79 2e 0a 2a 2f 0a 73 74 61 74 69 63 20 69 6e  ly..*/.static in
0aa0: 74 20 61 75 74 6f 45 78 74 42 72 6f 6b 65 6e 4f  t autoExtBrokenO
0ab0: 62 6a 43 6d 64 28 0a 20 20 76 6f 69 64 20 2a 20  bjCmd(.  void * 
0ac0: 63 6c 69 65 6e 74 44 61 74 61 2c 0a 20 20 54 63  clientData,.  Tc
0ad0: 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70  l_Interp *interp
0ae0: 2c 0a 20 20 69 6e 74 20 6f 62 6a 63 2c 0a 20 20  ,.  int objc,.  
0af0: 54 63 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f  Tcl_Obj *CONST o
0b00: 62 6a 76 5b 5d 0a 29 7b 0a 20 20 69 6e 74 20 72  bjv[].){.  int r
0b10: 63 20 3d 20 73 71 6c 69 74 65 33 5f 61 75 74 6f  c = sqlite3_auto
0b20: 5f 65 78 74 65 6e 73 69 6f 6e 28 28 76 6f 69 64  _extension((void
0b30: 2a 29 62 72 6f 6b 65 6e 5f 69 6e 69 74 29 3b 0a  *)broken_init);.
0b40: 20 20 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75    Tcl_SetObjResu
0b50: 6c 74 28 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4e  lt(interp, Tcl_N
0b60: 65 77 49 6e 74 4f 62 6a 28 72 63 29 29 3b 0a 20  ewIntObj(rc));. 
0b70: 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f   return SQLITE_O
0b80: 4b 3b 0a 7d 0a 0a 23 65 6e 64 69 66 20 2f 2a 20  K;.}..#endif /* 
0b90: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44  SQLITE_OMIT_LOAD
0ba0: 5f 45 58 54 45 4e 53 49 4f 4e 20 2a 2f 0a 0a 0a  _EXTENSION */...
0bb0: 2f 2a 0a 2a 2a 20 74 63 6c 63 6d 64 3a 20 20 20  /*.** tclcmd:   
0bc0: 73 71 6c 69 74 65 33 5f 72 65 73 65 74 5f 61 75  sqlite3_reset_au
0bd0: 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 0a 2a 2a 0a  to_extension.**.
0be0: 2a 2a 20 52 65 73 65 74 20 61 6c 6c 20 61 75 74  ** Reset all aut
0bf0: 6f 2d 65 78 74 65 6e 73 69 6f 6e 73 0a 2a 2f 0a  o-extensions.*/.
0c00: 73 74 61 74 69 63 20 69 6e 74 20 72 65 73 65 74  static int reset
0c10: 41 75 74 6f 45 78 74 4f 62 6a 43 6d 64 28 0a 20  AutoExtObjCmd(. 
0c20: 20 76 6f 69 64 20 2a 20 63 6c 69 65 6e 74 44 61   void * clientDa
0c30: 74 61 2c 0a 20 20 54 63 6c 5f 49 6e 74 65 72 70  ta,.  Tcl_Interp
0c40: 20 2a 69 6e 74 65 72 70 2c 0a 20 20 69 6e 74 20   *interp,.  int 
0c50: 6f 62 6a 63 2c 0a 20 20 54 63 6c 5f 4f 62 6a 20  objc,.  Tcl_Obj 
0c60: 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 0a 29 7b  *CONST objv[].){
0c70: 0a 20 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74  .  sqlite3_reset
0c80: 5f 61 75 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 28  _auto_extension(
0c90: 29 3b 0a 20 20 72 65 74 75 72 6e 20 53 51 4c 49  );.  return SQLI
0ca0: 54 45 5f 4f 4b 3b 0a 7d 0a 0a 0a 2f 2a 0a 2a 2a  TE_OK;.}.../*.**
0cb0: 20 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 20   This procedure 
0cc0: 72 65 67 69 73 74 65 72 73 20 74 68 65 20 54 43  registers the TC
0cd0: 4c 20 70 72 6f 63 73 20 64 65 66 69 6e 65 64 20  L procs defined 
0ce0: 69 6e 20 74 68 69 73 20 66 69 6c 65 2e 0a 2a 2f  in this file..*/
0cf0: 0a 69 6e 74 20 53 71 6c 69 74 65 74 65 73 74 5f  .int Sqlitetest_
0d00: 61 75 74 6f 65 78 74 5f 49 6e 69 74 28 54 63 6c  autoext_Init(Tcl
0d10: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 29  _Interp *interp)
0d20: 7b 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45  {.#ifndef SQLITE
0d30: 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e  _OMIT_LOAD_EXTEN
0d40: 53 49 4f 4e 0a 20 20 54 63 6c 5f 43 72 65 61 74  SION.  Tcl_Creat
0d50: 65 4f 62 6a 43 6f 6d 6d 61 6e 64 28 69 6e 74 65  eObjCommand(inte
0d60: 72 70 2c 20 22 73 71 6c 69 74 65 33 5f 61 75 74  rp, "sqlite3_aut
0d70: 6f 5f 65 78 74 65 6e 73 69 6f 6e 5f 73 71 72 22  o_extension_sqr"
0d80: 2c 0a 20 20 20 20 20 20 20 20 20 20 61 75 74 6f  ,.          auto
0d90: 45 78 74 53 71 72 4f 62 6a 43 6d 64 2c 20 30 2c  ExtSqrObjCmd, 0,
0da0: 20 30 29 3b 0a 20 20 54 63 6c 5f 43 72 65 61 74   0);.  Tcl_Creat
0db0: 65 4f 62 6a 43 6f 6d 6d 61 6e 64 28 69 6e 74 65  eObjCommand(inte
0dc0: 72 70 2c 20 22 73 71 6c 69 74 65 33 5f 61 75 74  rp, "sqlite3_aut
0dd0: 6f 5f 65 78 74 65 6e 73 69 6f 6e 5f 63 75 62 65  o_extension_cube
0de0: 22 2c 0a 20 20 20 20 20 20 20 20 20 20 61 75 74  ",.          aut
0df0: 6f 45 78 74 43 75 62 65 4f 62 6a 43 6d 64 2c 20  oExtCubeObjCmd, 
0e00: 30 2c 20 30 29 3b 0a 20 20 54 63 6c 5f 43 72 65  0, 0);.  Tcl_Cre
0e10: 61 74 65 4f 62 6a 43 6f 6d 6d 61 6e 64 28 69 6e  ateObjCommand(in
0e20: 74 65 72 70 2c 20 22 73 71 6c 69 74 65 33 5f 61  terp, "sqlite3_a
0e30: 75 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 5f 62 72  uto_extension_br
0e40: 6f 6b 65 6e 22 2c 0a 20 20 20 20 20 20 20 20 20  oken",.         
0e50: 20 61 75 74 6f 45 78 74 42 72 6f 6b 65 6e 4f 62   autoExtBrokenOb
0e60: 6a 43 6d 64 2c 20 30 2c 20 30 29 3b 0a 23 65 6e  jCmd, 0, 0);.#en
0e70: 64 69 66 0a 20 20 54 63 6c 5f 43 72 65 61 74 65  dif.  Tcl_Create
0e80: 4f 62 6a 43 6f 6d 6d 61 6e 64 28 69 6e 74 65 72  ObjCommand(inter
0e90: 70 2c 20 22 73 71 6c 69 74 65 33 5f 72 65 73 65  p, "sqlite3_rese
0ea0: 74 5f 61 75 74 6f 5f 65 78 74 65 6e 73 69 6f 6e  t_auto_extension
0eb0: 22 2c 0a 20 20 20 20 20 20 20 20 20 20 72 65 73  ",.          res
0ec0: 65 74 41 75 74 6f 45 78 74 4f 62 6a 43 6d 64 2c  etAutoExtObjCmd,
0ed0: 20 30 2c 20 30 29 3b 0a 20 20 72 65 74 75 72 6e   0, 0);.  return
0ee0: 20 54 43 4c 5f 4f 4b 3b 0a 7d 0a                  TCL_OK;.}.