pg.ddx.io pgsql-zh-general@postgresql.org mailing list archive
help / color / mirror / Atom feed From: Quan Zongliang <zongliang.quan@postgresdata.com>
To: Jaimin Pan <jaimin.pan@gmail.com>
Cc: pgsql-zh-general@postgresql.org <pgsql-zh-general@postgresql.org>
Subject: Re: [pgsql-zh-general] 随机字符串函数的C语言实现
Date: Tue, 5 Sep 2017 18:26:42 +0800
Message-ID: <b737e130-2a28-f863-41ff-8ca310b1e9fd@postgresdata.com> (raw )
In-Reply-To: <CABP8UDTSWgKpSSg2bO45t9sQatVzyasPv4Nm6rG0HPx55JKJxQ@mail.gmail.com >
References: <e4b2ab08-6847-e431-9ccb-d42ac805a3d7@postgresdata.com >
<CABP8UDTSWgKpSSg2bO45t9sQatVzyasPv4Nm6rG0HPx55JKJxQ@mail.gmail.com >
List-Unsubscribe: <mailto:majordomo@postgresql.org?body=unsub%20pgsql-zh-general>
这样不能指定长度,返回值本身又不够长,今天测试是在看TOAST的变化。
On 2017/9/5 17:01, Jaimin Pan wrote:
> 试一试
> md5(random()::text);
>
>
> select pg_backend_pid(),s,'string '|| md5(random()::text) from (select
> generate_series(2000,8000,1) s) as g;
> Time: 239.733 ms
>
> 2017-09-05 16:28 GMT+08:00 Quan Zongliang
> <zongliang.quan@postgresdata.com <mailto:zongliang.quan@postgresdata.com >>:
>
> 各位下午好
> 邮件列表沉寂太久,激活一下大家的情绪。
>
> 分享一个C语言实现的随机字符串函数:
> PG_FUNCTION_INFO_V1(random_string);
> Datum
> random_string(PG_FUNCTION_ARGS)
> {
> int32 length = PG_GETARG_INT32(0);
> int32 i;
> const char chars[] =
> "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
> char *result;
>
> if (length < 0)
> PG_RETURN_NULL();
>
> if (length == 0)
> PG_RETURN_TEXT_P(cstring_to_text(""));
>
> result = palloc(length + 1);
> if (result == NULL)
> ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY),
> errmsg("out of memory")));
>
> for (i=0; i<length; i++)
> {
> result[i] = chars[random()%(sizeof(chars)-1)];
> }
> result[i] = '\0';
>
> PG_RETURN_TEXT_P(cstring_to_text(result));
> }
>
> 原文见:
> https://my.oschina.net/quanzl/blog/1529438
> <https://my.oschina.net/quanzl/blog/1529438 ;
>
> 欢迎关注我司公众号:postgresdata-news
>
> --
> 权宗亮
> 神州飞象(北京)数据科技有限公司
> 我们的力量源自最先进的开源数据库PostgreSQL
> zongliang.quan@postgresdata.com <mailto:zongliang.quan@postgresdata.com >
>
>
>
> --
> Sent via pgsql-zh-general mailing list
> (pgsql-zh-general@postgresql.org
> <mailto:pgsql-zh-general@postgresql.org >)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-zh-general
> <http://www.postgresql.org/mailpref/pgsql-zh-general ;
>
>
--
Sent via pgsql-zh-general mailing list (pgsql-zh-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-zh-general
view thread (5+ messages) latest in thread
Message-ID: <b737e130-2a28-f863-41ff-8ca310b1e9fd@postgresdata.com>
Permalink: ../b737e130-2a28-f863-41ff-8ca310b1e9fd@postgresdata.com/
Also on: postgresql.org/message-id/b737e130-2a28-f863-41ff-8ca310b1e9fd@postgresdata.com
copy link · copy postgr.es
reply Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-zh-general@postgresql.org
Cc: zongliang.quan@postgresdata.com, jaimin.pan@gmail.com
Subject: Re: [pgsql-zh-general] 随机字符串函数的C语言实现
In-Reply-To: <b737e130-2a28-f863-41ff-8ca310b1e9fd@postgresdata.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox