Commit 3e17ef1c authored by Tom Lane's avatar Tom Lane

Adjust ts_debug's output as per my proposal of yesterday: show the

active dictionary and its output lexemes as separate columns, instead
of smashing them into one text column, and lowercase the column names.
Also, define the output rowtype using OUT parameters instead of a
composite type, to be consistent with the other built-in functions.
parent 7ec280e1
<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.402 2007/10/21 20:04:37 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.403 2007/10/22 20:13:37 tgl Exp $ -->
<chapter id="functions"> <chapter id="functions">
<title>Functions and Operators</title> <title>Functions and Operators</title>
...@@ -7857,11 +7857,11 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple ...@@ -7857,11 +7857,11 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple
</thead> </thead>
<tbody> <tbody>
<row> <row>
<entry><literal><function>ts_debug</function>(<optional> <replaceable class="PARAMETER">config</replaceable> <type>regconfig</>, </optional> <replaceable class="PARAMETER">document</replaceable> <type>text</>)</literal></entry> <entry><literal><function>ts_debug</function>(<optional> <replaceable class="PARAMETER">config</replaceable> <type>regconfig</>, </optional> <replaceable class="PARAMETER">document</replaceable> <type>text</>, OUT <replaceable class="PARAMETER">alias</> <type>text</>, OUT <replaceable class="PARAMETER">description</> <type>text</>, OUT <replaceable class="PARAMETER">token</> <type>text</>, OUT <replaceable class="PARAMETER">dictionaries</> <type>regdictionary[]</>, OUT <replaceable class="PARAMETER">dictionary</> <type>regdictionary</>, OUT <replaceable class="PARAMETER">lexemes</> <type>text[]</>)</literal></entry>
<entry><type>setof ts_debug</type></entry> <entry><type>setof record</type></entry>
<entry>test a configuration</entry> <entry>test a configuration</entry>
<entry><literal>ts_debug('english', 'The Brightest supernovaes')</literal></entry> <entry><literal>ts_debug('english', 'The Brightest supernovaes')</literal></entry>
<entry><literal>(lword,"Latin word",The,{english_stem},"english_stem: {}") ...</literal></entry> <entry><literal>(lword,"Latin word",The,{english_stem},english_stem,{}) ...</literal></entry>
</row> </row>
<row> <row>
<entry><literal><function>ts_lexize</function>(<replaceable class="PARAMETER">dict</replaceable> <type>regdictionary</>, <replaceable class="PARAMETER">token</replaceable> <type>text</>)</literal></entry> <entry><literal><function>ts_lexize</function>(<replaceable class="PARAMETER">dict</replaceable> <type>regdictionary</>, <replaceable class="PARAMETER">token</replaceable> <type>text</>)</literal></entry>
......
This diff is collapsed.
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright (c) 1996-2007, PostgreSQL Global Development Group * Copyright (c) 1996-2007, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/backend/catalog/system_views.sql,v 1.46 2007/09/25 20:03:37 tgl Exp $ * $PostgreSQL: pgsql/src/backend/catalog/system_views.sql,v 1.47 2007/10/22 20:13:37 tgl Exp $
*/ */
CREATE VIEW pg_roles AS CREATE VIEW pg_roles AS
...@@ -386,41 +386,39 @@ CREATE VIEW pg_stat_bgwriter AS ...@@ -386,41 +386,39 @@ CREATE VIEW pg_stat_bgwriter AS
pg_stat_get_buf_written_backend() AS buffers_backend, pg_stat_get_buf_written_backend() AS buffers_backend,
pg_stat_get_buf_alloc() AS buffers_alloc; pg_stat_get_buf_alloc() AS buffers_alloc;
-- Tsearch debug function. Defined here because it'd be pretty unwieldy -- Tsearch debug function. Defined here because it'd be pretty unwieldy
-- to put it into pg_proc.h -- to put it into pg_proc.h
CREATE TYPE ts_debug AS ( CREATE FUNCTION ts_debug(IN config regconfig, IN document text,
"Alias" text, OUT alias text,
"Description" text, OUT description text,
"Token" text, OUT token text,
"Dictionaries" regdictionary[], OUT dictionaries regdictionary[],
"Lexized token" text OUT dictionary regdictionary,
); OUT lexemes text[])
RETURNS SETOF record AS
COMMENT ON TYPE ts_debug IS 'type returned from ts_debug() function';
CREATE FUNCTION ts_debug(regconfig, text)
RETURNS SETOF ts_debug AS
$$ $$
SELECT SELECT
tt.alias AS "Alias", tt.alias AS alias,
tt.description AS "Description", tt.description AS description,
parse.token AS "Token", parse.token AS token,
ARRAY ( SELECT m.mapdict::pg_catalog.regdictionary ARRAY ( SELECT m.mapdict::pg_catalog.regdictionary
FROM pg_catalog.pg_ts_config_map AS m FROM pg_catalog.pg_ts_config_map AS m
WHERE m.mapcfg = $1 AND m.maptokentype = parse.tokid WHERE m.mapcfg = $1 AND m.maptokentype = parse.tokid
ORDER BY m.mapseqno ) ORDER BY m.mapseqno )
AS "Dictionaries", AS dictionaries,
( ( SELECT mapdict::pg_catalog.regdictionary
SELECT FROM pg_catalog.pg_ts_config_map AS m
dl.mapdict::pg_catalog.regdictionary || ': ' || dl.lex::pg_catalog.text WHERE m.mapcfg = $1 AND m.maptokentype = parse.tokid
FROM ORDER BY pg_catalog.ts_lexize(mapdict, parse.token) IS NULL, m.mapseqno
( SELECT mapdict, pg_catalog.ts_lexize(mapdict, parse.token) AS lex LIMIT 1
FROM pg_catalog.pg_ts_config_map AS m ) AS dictionary,
WHERE m.mapcfg = $1 AND m.maptokentype = parse.tokid ( SELECT pg_catalog.ts_lexize(mapdict, parse.token)
ORDER BY pg_catalog.ts_lexize(mapdict, parse.token) IS NULL, m.mapseqno ) dl FROM pg_catalog.pg_ts_config_map AS m
LIMIT 1 WHERE m.mapcfg = $1 AND m.maptokentype = parse.tokid
) AS "Lexized token" ORDER BY pg_catalog.ts_lexize(mapdict, parse.token) IS NULL, m.mapseqno
LIMIT 1
) AS lexemes
FROM pg_catalog.ts_parse( FROM pg_catalog.ts_parse(
(SELECT cfgparser FROM pg_catalog.pg_ts_config WHERE oid = $1 ), $2 (SELECT cfgparser FROM pg_catalog.pg_ts_config WHERE oid = $1 ), $2
) AS parse, ) AS parse,
...@@ -434,8 +432,14 @@ LANGUAGE SQL STRICT STABLE; ...@@ -434,8 +432,14 @@ LANGUAGE SQL STRICT STABLE;
COMMENT ON FUNCTION ts_debug(regconfig,text) IS COMMENT ON FUNCTION ts_debug(regconfig,text) IS
'debug function for text search configuration'; 'debug function for text search configuration';
CREATE FUNCTION ts_debug(text) CREATE FUNCTION ts_debug(IN document text,
RETURNS SETOF ts_debug AS OUT alias text,
OUT description text,
OUT token text,
OUT dictionaries regdictionary[],
OUT dictionary regdictionary,
OUT lexemes text[])
RETURNS SETOF record AS
$$ $$
SELECT * FROM pg_catalog.ts_debug( pg_catalog.get_current_ts_config(), $1); SELECT * FROM pg_catalog.ts_debug( pg_catalog.get_current_ts_config(), $1);
$$ $$
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.434 2007/10/19 22:01:45 tgl Exp $ * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.435 2007/10/22 20:13:37 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -53,6 +53,6 @@ ...@@ -53,6 +53,6 @@
*/ */
/* yyyymmddN */ /* yyyymmddN */
#define CATALOG_VERSION_NO 200710192 #define CATALOG_VERSION_NO 200710221
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment