/ Hex Artifact Content
Login

Artifact 22065d601a18878e5542191001f0eaa5d77c0ed8:


0000: 2f 2a 0a 2a 2a 20 32 30 30 36 20 4a 75 6e 65 20  /*.** 2006 June 
0010: 31 34 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74  14.**.** The aut
0020: 68 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f  hor disclaims co
0030: 70 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20  pyright to this 
0040: 73 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e  source code.  In
0050: 20 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c   place of.** a l
0060: 65 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72  egal notice, her
0070: 65 20 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a  e is a blessing:
0080: 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f  .**.**    May yo
0090: 75 20 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f  u do good and no
00a0: 74 20 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61  t evil..**    Ma
00b0: 79 20 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69  y you find forgi
00c0: 76 65 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73  veness for yours
00d0: 65 6c 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20  elf and forgive 
00e0: 6f 74 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61  others..**    Ma
00f0: 79 20 79 6f 75 20 73 68 61 72 65 20 66 72 65 65  y you share free
0100: 6c 79 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67  ly, never taking
0110: 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67   more than you g
0120: 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a  ive..**.********
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 0a 2a 2a 20 54 65 73 74 20 65 78 74 65 6e 73  *.** Test extens
0180: 69 6f 6e 20 66 6f 72 20 74 65 73 74 69 6e 67 20  ion for testing 
0190: 74 68 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64  the sqlite3_load
01a0: 5f 65 78 74 65 6e 73 69 6f 6e 28 29 20 66 75 6e  _extension() fun
01b0: 63 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 24 49 64  ction..**.** $Id
01c0: 3a 20 74 65 73 74 5f 6c 6f 61 64 65 78 74 2e 63  : test_loadext.c
01d0: 2c 76 20 31 2e 31 20 32 30 30 36 2f 30 36 2f 31  ,v 1.1 2006/06/1
01e0: 34 20 31 30 3a 33 38 3a 30 33 20 64 61 6e 69 65  4 10:38:03 danie
01f0: 6c 6b 31 39 37 37 20 45 78 70 20 24 0a 2a 2f 0a  lk1977 Exp $.*/.
0200: 0a 23 69 6e 63 6c 75 64 65 20 22 73 71 6c 69 74  .#include "sqlit
0210: 65 33 65 78 74 2e 68 22 0a 53 51 4c 49 54 45 5f  e3ext.h".SQLITE_
0220: 45 58 54 45 4e 53 49 4f 4e 5f 49 4e 49 54 31 0a  EXTENSION_INIT1.
0230: 0a 2f 2a 0a 2a 2a 20 54 68 65 20 68 61 6c 66 28  ./*.** The half(
0240: 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 72  ) SQL function r
0250: 65 74 75 72 6e 73 20 68 61 6c 66 20 6f 66 20 69  eturns half of i
0260: 74 73 20 69 6e 70 75 74 20 76 61 6c 75 65 2e 0a  ts input value..
0270: 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64 20 68  */.static void h
0280: 61 6c 66 46 75 6e 63 28 0a 20 20 73 71 6c 69 74  alfFunc(.  sqlit
0290: 65 33 5f 63 6f 6e 74 65 78 74 20 2a 63 6f 6e 74  e3_context *cont
02a0: 65 78 74 2c 0a 20 20 69 6e 74 20 61 72 67 63 2c  ext,.  int argc,
02b0: 0a 20 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  .  sqlite3_value
02c0: 20 2a 2a 61 72 67 76 0a 29 7b 0a 20 20 73 71 6c   **argv.){.  sql
02d0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
02e0: 6c 65 28 63 6f 6e 74 65 78 74 2c 20 30 2e 35 2a  le(context, 0.5*
02f0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
0300: 75 62 6c 65 28 61 72 67 76 5b 30 5d 29 29 3b 0a  uble(argv[0]));.
0310: 7d 0a 0a 2f 2a 0a 2a 2a 20 45 78 74 65 6e 73 69  }../*.** Extensi
0320: 6f 6e 20 6c 6f 61 64 20 66 75 6e 63 74 69 6f 6e  on load function
0330: 2e 0a 2a 2f 0a 69 6e 74 20 74 65 73 74 6c 6f 61  ..*/.int testloa
0340: 64 65 78 74 5f 69 6e 69 74 28 0a 20 20 73 71 6c  dext_init(.  sql
0350: 69 74 65 33 20 2a 64 62 2c 20 0a 20 20 63 68 61  ite3 *db, .  cha
0360: 72 20 2a 2a 70 7a 45 72 72 4d 73 67 2c 20 0a 20  r **pzErrMsg, . 
0370: 20 63 6f 6e 73 74 20 73 71 6c 69 74 65 33 5f 61   const sqlite3_a
0380: 70 69 5f 72 6f 75 74 69 6e 65 73 20 2a 70 41 70  pi_routines *pAp
0390: 69 0a 29 7b 0a 20 20 53 51 4c 49 54 45 5f 45 58  i.){.  SQLITE_EX
03a0: 54 45 4e 53 49 4f 4e 5f 49 4e 49 54 32 28 70 41  TENSION_INIT2(pA
03b0: 70 69 29 3b 0a 20 20 73 71 6c 69 74 65 33 5f 63  pi);.  sqlite3_c
03c0: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 64  reate_function(d
03d0: 62 2c 20 22 68 61 6c 66 22 2c 20 31 2c 20 53 51  b, "half", 1, SQ
03e0: 4c 49 54 45 5f 41 4e 59 2c 20 30 2c 20 68 61 6c  LITE_ANY, 0, hal
03f0: 66 46 75 6e 63 2c 20 30 2c 20 30 29 3b 0a 20 20  fFunc, 0, 0);.  
0400: 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 2f 2a 0a  return 0;.}../*.
0410: 2a 2a 20 41 6e 6f 74 68 65 72 20 65 78 74 65 6e  ** Another exten
0420: 73 69 6f 6e 20 65 6e 74 72 79 20 70 6f 69 6e 74  sion entry point
0430: 2e 20 54 68 69 73 20 6f 6e 65 20 61 6c 77 61 79  . This one alway
0440: 73 20 66 61 69 6c 73 2e 0a 2a 2f 0a 69 6e 74 20  s fails..*/.int 
0450: 74 65 73 74 62 72 6f 6b 65 6e 65 78 74 5f 69 6e  testbrokenext_in
0460: 69 74 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64  it(.  sqlite3 *d
0470: 62 2c 20 0a 20 20 63 68 61 72 20 2a 2a 70 7a 45  b, .  char **pzE
0480: 72 72 4d 73 67 2c 20 0a 20 20 63 6f 6e 73 74 20  rrMsg, .  const 
0490: 73 71 6c 69 74 65 33 5f 61 70 69 5f 72 6f 75 74  sqlite3_api_rout
04a0: 69 6e 65 73 20 2a 70 41 70 69 0a 29 7b 0a 20 20  ines *pApi.){.  
04b0: 63 68 61 72 20 2a 7a 45 72 72 3b 0a 20 20 53 51  char *zErr;.  SQ
04c0: 4c 49 54 45 5f 45 58 54 45 4e 53 49 4f 4e 5f 49  LITE_EXTENSION_I
04d0: 4e 49 54 32 28 70 41 70 69 29 3b 0a 20 20 7a 45  NIT2(pApi);.  zE
04e0: 72 72 20 3d 20 73 71 6c 69 74 65 33 5f 6d 70 72  rr = sqlite3_mpr
04f0: 69 6e 74 66 28 22 62 72 6f 6b 65 6e 21 22 29 3b  intf("broken!");
0500: 0a 20 20 2a 70 7a 45 72 72 4d 73 67 20 3d 20 7a  .  *pzErrMsg = z
0510: 45 72 72 3b 0a 20 20 72 65 74 75 72 6e 20 31 3b  Err;.  return 1;
0520: 0a 7d 0a                                         .}.