misc.c
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * misc.c
  4.  *
  5.  *
  6.  * Copyright (c) 1994, Regents of the University of California
  7.  *
  8.  *
  9.  * IDENTIFICATION
  10.  *   $Header: /usr/local/cvsroot/pgsql/src/backend/utils/adt/misc.c,v 1.16.2.1 1999/08/02 05:24:54 scrappy Exp $
  11.  *
  12.  *-------------------------------------------------------------------------
  13.  */
  14. #include <sys/types.h>
  15. #include <sys/file.h>
  16. #include <time.h>
  17. #include "postgres.h"
  18. #include "utils/builtins.h"
  19. /*-------------------------------------------------------------------------
  20.  * Check if data is Null
  21.  */
  22. bool
  23. nullvalue(Datum value, bool *isNull)
  24. {
  25. if (*isNull)
  26. {
  27. *isNull = false;
  28. return true;
  29. }
  30. return false;
  31. }
  32. /*----------------------------------------------------------------------*
  33.  *    check if data is not Null *
  34.  *--------------------------------------------------------------------- */
  35. bool
  36. nonnullvalue(Datum value, bool *isNull)
  37. {
  38. if (*isNull)
  39. {
  40. *isNull = false;
  41. return false;
  42. }
  43. return true;
  44. }
  45. /*
  46.  * oidrand (oid o, int4 X)-
  47.  *   takes in an oid and a int4 X, and will return 'true'
  48.  * about 1/X of the time.
  49.  *   Useful for doing random sampling or subsetting.
  50.  * if X == 0, this will always return true;
  51.  *
  52.  * Example use:
  53.  *    select * from TEMP where oidrand(TEMP.oid, 10)
  54.  * will return about 1/10 of the tuples in TEMP
  55.  *
  56.  */
  57. static bool random_initialized = false;
  58. bool
  59. oidrand(Oid o, int32 X)
  60. {
  61. bool result;
  62. if (X == 0)
  63. return true;
  64. /*
  65.  * We do this because the cancel key is actually a random, so we don't
  66.  * want them to be able to request random numbers using our postmaster
  67.  * seeded value.
  68.  */
  69. if (!random_initialized)
  70. {
  71. srandom((unsigned int) time(NULL));
  72. random_initialized = true;
  73. }
  74. result = (random() % X == 0);
  75. return result;
  76. }
  77. /*
  78.    oidsrand(int32 X) -
  79.   seeds the random number generator
  80.   always return true
  81. */
  82. bool
  83. oidsrand(int32 X)
  84. {
  85. srand(X);
  86. random_initialized = true;
  87. return true;
  88. }
  89. int32
  90. userfntest(int i)
  91. {
  92. return i;
  93. }