PostgreSQL pgbench : 冒号处理

来源:互联网 发布:淘宝网尿道炎药品注射 编辑:程序博客网 时间:2024/06/05 14:45

标签

PostgreSQL , pgbench , 变量 , 常量带冒号

--

背景

pgbench 的自定义测试脚本中,冒号有特殊的含义,可以用于变量名的前面,表示这个位置使用变?刻婊弧?

        /*----------           * Join arguments with whitespace separators. Arguments starting with           * exactly one colon are treated as variables:           *      name - append a string "name"           *      :var - append a variable named 'var'           *      ::name - append a string ":name"           *----------           */          for (i = 0; i < argc; i++)          {                  char       *arg;                  int                     arglen;                    if (argv[i][0] != ':')                  {                          arg = argv[i];          /* a string literal */                  }                  else if (argv[i][1] == ':')                  {                          arg = argv[i] + 1;      /* a string literal starting with colons */                  }                  else if ((arg = getVariable(st, argv[i] + 1)) == NULL)                  {                          fprintf(stderr, "%s: undefined variable \"%s\"\n",                                          argv[0], argv[i]);                          return false;                  }                    arglen = strlen(arg);                  if (len + arglen + (i > 0 ? 1 : 0) >= SHELL_COMMAND_SIZE - 1)                  {                          fprintf(stderr, "%s: shell command is too long\n", argv[0]);                          return false;                  }                    if (i > 0)                          command[len++] = ' ';                  memcpy(command + len, arg, arglen);                  len += arglen;          }  

例如,

我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。

1、以下ab为变量名,:ab表示这个地方用变量替换。

vi test.sql    \set ab random(1,100000)  select * from tbl where id=:ab;  

2、如果要输入一个冒号开头的常量,可以输入两个冒号。

::name表示:name常量。  

3、如果在字符中间输入,两个冒号,直接输入两个冒号即可。

4、

如果要在字符串中间使用冒号,怎么写呢?

vi test.sql    select * from tbl where ts > '2017-01-01 10:10:10';  

这样不行,会将:10和:10都翻译成变量10的值。

这样也不行,字符串中两个冒号就是两个冒号,不会变成一个。

vi test.sql    select * from tbl where ts > '2017-01-01 10::10::10';  
原文链接
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 朵唯t35怎么样 朵唯t21手机壳 朵唯手机输入法 朵唯手机屏碎了怎么办 朵唯s3换屏多少钱 朵唯d300多少钱 朵唯t35刷机包 朵唯要多少钱 朵唯手机论坛 电信老年机 电信买手机送宽带 海信m20-t 富士康手机 海信m20t 电信老人机哪个牌子好 锋达通 情侣手机卡 荣耀3 防水防摔手机 全球通手机卡 荣耀7报价 歌奈 儿童手机大全 荣耀7参数 电信手机号套餐 粉色手机 荣耀畅玩4 电信双卡双待手机 电信商城 海尔手机 防爆膜价格 现在国产手机哪个好 飞鸿移动 法拉利手机 电信积分商城 国产手机在线 电信网上选号 国产什么牌子手机好 doov a6 国产手机销量排行榜 儿童手机