Thread: access method xxx does not exist

access method xxx does not exist

From
"jacktby@gmail.com"
Date:

I'm trying to add a new index, but when I finish it, I use “ create index xxx_index on t1 using xxx(a); ”,it gives me access method "my_index" does not exist
And I don't know where this message is from, can you grve me its position? I do like this. I add oid in pg_am.dat and pg_proc.dat for my index. And I add codes in contrib and backend/access/myindex_name, is there any other places I need to add some infos? Who can help me?

jacktby@gmail.com

回复: access method xxx does not exist

From
"jacktby@gmail.com"
Date:
I debug and when it comes to "tuple = SearchSysCache1(AMNAME, PointerGetDatum(accessMethodName));", the tuple is NULL.so it gives me access method doesn't exist
 

jacktby@gmail.com
 
发件人: jacktby@gmail.com
发送时间: 2022-10-29 19:19
收件人: pgsql-general
主题: access method xxx does not exist
div.FoxDIV_20221029192054003 { font-size: 10.5pt } div.FoxDIV_20221029192054003 { line-height: 1.5; } div.FoxDIV_20221029192054003 { font-size: 14px; font-family: "Microsoft YaHei UI"; color: rgb(0, 0, 0); line-height: 1.5; }

I'm trying to add a new index, but when I finish it, I use “ create index xxx_index on t1 using xxx(a); ”,it gives me access method "my_index" does not exist
And I don't know where this message is from, can you grve me its position? I do like this. I add oid in pg_am.dat and pg_proc.dat for my index. And I add codes in contrib and backend/access/myindex_name, is there any other places I need to add some infos? Who can help me?

jacktby@gmail.com

Re: access method xxx does not exist

From
"Peter J. Holzer"
Date:
On 2022-10-29 19:19:28 +0800, jacktby@gmail.com wrote:
> I'm trying to add a new index, but when I finish it, I use “ create index
> xxx_index on t1 using xxx(a); ”,it gives me access method "my_index" does not
> exist
> And I don't know where this message is from, can you grve me its position?

See https://www.postgresql.org/docs/current/sql-createindex.html

The syntax for CREATE INDEX is

CREATE INDEX ON table_name [ USING method ] ( column_name ... )

You use USING to specify the method (e.g. btree or gin), not the table
and/or columns. The columns (or expressions come in parentheses after
that.

So if you wanted an index on column a of table t1 you would simply
write:

CREATE INDEX ON t1 (a);

Or if you have a function xxx and you want a function based index on
xxx(a) of that table:

CREATE INDEX ON t1 (xxx(a));

(You can specify the name of the index, but why would you?)

> I do like this. I add oid in pg_am.dat and pg_proc.dat for my index.
> And I add codes in contrib and backend/access/myindex_name, is there
> any other places I need to add some infos?

What? Why are you doing these things?

        hp

--
   _  | Peter J. Holzer    | Story must make more sense than reality.
|_|_) |                    |
| |   | hjp@hjp.at         |    -- Charles Stross, "Creative writing
__/   | http://www.hjp.at/ |       challenge!"

Attachment

Re: Re: access method xxx does not exist

From
"jacktby@gmail.com"
Date:
No , that's not what I want, I'm not try to use an exsited index in pg15, I'm tring to build a new index by myself. Can you give me metrials to study it?
 

jacktby@gmail.com
 
Date: 2022-10-29 20:00
Subject: Re: access method xxx does not exist
div.FoxDIV_20221029200259122 { font-size: 10.5pt }
On 2022-10-29 19:19:28 +0800, jacktby@gmail.com wrote:
> I'm trying to add a new index, but when I finish it, I use “ create index
> xxx_index on t1 using xxx(a); ”,it gives me access method "my_index" does not
> exist
> And I don't know where this message is from, can you grve me its position?


The syntax for CREATE INDEX is

CREATE INDEX ON table_name [ USING method ] ( column_name ... )

You use USING to specify the method (e.g. btree or gin), not the table
and/or columns. The columns (or expressions come in parentheses after
that.

So if you wanted an index on column a of table t1 you would simply
write:

CREATE INDEX ON t1 (a);

Or if you have a function xxx and you want a function based index on
xxx(a) of that table:

CREATE INDEX ON t1 (xxx(a));

(You can specify the name of the index, but why would you?)

> I do like this. I add oid in pg_am.dat and pg_proc.dat for my index.
> And I add codes in contrib and backend/access/myindex_name, is there
> any other places I need to add some infos?

What? Why are you doing these things?

        hp

--
   _  | Peter J. Holzer    | Story must make more sense than reality.
|_|_) |                    |
| |   | hjp@hjp.at         |    -- Charles Stross, "Creative writing
__/ | http://www.hjp.at/ | challenge!"

Re: access method xxx does not exist

From
Julien Rouhaud
Date:
Hi,

On Sat, Oct 29, 2022 at 08:15:54PM +0800, jacktby@gmail.com wrote:
> On 2022-10-29 19:19:28 +0800, jacktby@gmail.com wrote:
> > I'm trying to add a new index, but when I finish it, I use “ create index
> > xxx_index on t1 using xxx(a); ”,it gives me access method "my_index" does not
> > exist

You should look at the bloom contrib in postgres source tree for an example of
how to write a custom index AM.



Re: Re: access method xxx does not exist

From
"jacktby@gmail.com"
Date:
Yes,I just want to know if I add am in pg_am.dat, after I make install, it means the new access method is built? right?
 

jacktby@gmail.com
 
Date: 2022-10-29 21:27
Subject: Re: access method xxx does not exist
div.FoxDIV_20221029212802774 { font-size: 10.5pt }
Hi,

On Sat, Oct 29, 2022 at 08:15:54PM +0800, jacktby@gmail.com wrote:
> On 2022-10-29 19:19:28 +0800, jacktby@gmail.com wrote:
> > I'm trying to add a new index, but when I finish it, I use “ create index
> > xxx_index on t1 using xxx(a); ”,it gives me access method "my_index" does not
> > exist

You should look at the bloom contrib in postgres source tree for an example of
how to write a custom index AM.

Re: access method xxx does not exist

From
Julien Rouhaud
Date:
Hi,

On Sat, Oct 29, 2022 at 09:43:51PM +0800, jacktby@gmail.com wrote:
> ------=_001_NextPart037628267087_=----
> Content-Type: text/html; charset="utf-8"
> Content-Transfer-Encoding: quoted-printable
> 
> <html><head></head><body><div class=3D"">Yes,I just want to know if I add a=
> m in pg_am.dat, after I make install, it means the new access method is bui=
> lt? right?</div><div> </div><hr style=3D"WIDTH: 210px; HEIGHT: 1px" co=
> lor=3D"#b5c4df" size=3D"1" align=3D"left"><div><span><div style=3D"MARGIN: =
> 10px; FONT-FAMILY: verdana; FONT-SIZE: 10pt"><div>jacktby@gmail.com</div></=
> div></span></div><blockquote style=3D"margin-Top: 0px; margin-Bottom: 0px; =
> margin-Left: 0.5em; margin-Right: inherit"><div> </div><div style=3D"b=
> order:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm"><div s=
> tyle=3D"PADDING-RIGHT: 8px; PADDING-LEFT: 8px; FONT-SIZE: 12px;FONT-FAMILY:=
> tahoma;COLOR:#000000; BACKGROUND: #efefef; PADDING-BOTTOM: 8px; PADDING-TOP=
> : 8px"><div><b>From:</b> <a href=3D"mailto:rjuju123@gmail.com">Julien =
> Rouhaud</a></div><div><b>Date:</b> 2022-10-29 21:27</div><div><b>=
> To:</b> <a href=3D"mailto:jacktby@gmail.com">jacktby@gmail.com</a></di=
> v><div><b>CC:</b> <a href=3D"mailto:hjp-pgsql@hjp.at">Peter J. Holzer<=
> /a>; <a href=3D"mailto:pgsql-general@lists.postgresql.org">pgsql-general</a=
> ></div><div><b>Subject:</b> Re: access method xxx does not exist</div>=
> </div></div><div><div class=3D""><style>div.FoxDIV_20221029212802774 { font=
> -size: 10.5pt }
> </style><div style=3D"heigh

First, please don't top post here and configure your MUA to stop sending
html-only weirdly formatted emails
(https://wiki.postgresql.org/wiki/Mailing_Lists#Email_etiquette_mechanics),
many people (and the archives) can't work with it.

Then, yes it should but it's impossible to know what you did wrong without more
details.  And in any case, if you want to add a new index AM, you should
probably create it as an extension, like bloom, rather than putting in postgres
source code.