Why does Postgresql has to put quotes around the column name when creating gin index?












1














On postgres, I am running



CREATE INDEX gin_index_position_on_players ON public.players USING gin (position gin_trgm_ops);


Then, I am checking the indexdef of this table,



select *
from pg_indexes
where tablename = 'players';


And the result for the previously created index is:



CREATE INDEX gin_index_position_on_players ON public.players USING gin ("position" gin_trgm_ops)


Does someone know why Postgres would have wrapped position ?



Guess I have already investigated:




  1. Reserved keywords: postgres has some "reserved keywords" and protect them by wrapping them -> it does not appear that name is wrapped.


  2. Built-in functions: postgres wraps its built-in functions (like position) -> char_length is not wrapped











share|improve this question
























  • Why do you care? What is the problem with that? But position is a keyword: postgresql.org/docs/current/sql-keywords-appendix.html (although a non-reserved one)
    – a_horse_with_no_name
    Nov 20 at 15:35












  • I care because I am using Rails to build an app and it generates an error when parsing the indexdef due to this edge case.
    – thom_bian
    Nov 21 at 7:45










  • What you dont understand here is that the framework does not support this syntax and I tried to understand why this syntax could occur to provide an interesting feedback to the Rails developer.
    – thom_bian
    Nov 21 at 8:12












  • Then, yes it's a bug in that framework. You probably also want to check the parsing of expression based indexes: e.g. create index on ... (lower(some_column)) would result in (lower((some_column)::text)) or partial indexes: create index on ... () where some_column = 42
    – a_horse_with_no_name
    Nov 21 at 8:26
















1














On postgres, I am running



CREATE INDEX gin_index_position_on_players ON public.players USING gin (position gin_trgm_ops);


Then, I am checking the indexdef of this table,



select *
from pg_indexes
where tablename = 'players';


And the result for the previously created index is:



CREATE INDEX gin_index_position_on_players ON public.players USING gin ("position" gin_trgm_ops)


Does someone know why Postgres would have wrapped position ?



Guess I have already investigated:




  1. Reserved keywords: postgres has some "reserved keywords" and protect them by wrapping them -> it does not appear that name is wrapped.


  2. Built-in functions: postgres wraps its built-in functions (like position) -> char_length is not wrapped











share|improve this question
























  • Why do you care? What is the problem with that? But position is a keyword: postgresql.org/docs/current/sql-keywords-appendix.html (although a non-reserved one)
    – a_horse_with_no_name
    Nov 20 at 15:35












  • I care because I am using Rails to build an app and it generates an error when parsing the indexdef due to this edge case.
    – thom_bian
    Nov 21 at 7:45










  • What you dont understand here is that the framework does not support this syntax and I tried to understand why this syntax could occur to provide an interesting feedback to the Rails developer.
    – thom_bian
    Nov 21 at 8:12












  • Then, yes it's a bug in that framework. You probably also want to check the parsing of expression based indexes: e.g. create index on ... (lower(some_column)) would result in (lower((some_column)::text)) or partial indexes: create index on ... () where some_column = 42
    – a_horse_with_no_name
    Nov 21 at 8:26














1












1








1







On postgres, I am running



CREATE INDEX gin_index_position_on_players ON public.players USING gin (position gin_trgm_ops);


Then, I am checking the indexdef of this table,



select *
from pg_indexes
where tablename = 'players';


And the result for the previously created index is:



CREATE INDEX gin_index_position_on_players ON public.players USING gin ("position" gin_trgm_ops)


Does someone know why Postgres would have wrapped position ?



Guess I have already investigated:




  1. Reserved keywords: postgres has some "reserved keywords" and protect them by wrapping them -> it does not appear that name is wrapped.


  2. Built-in functions: postgres wraps its built-in functions (like position) -> char_length is not wrapped











share|improve this question















On postgres, I am running



CREATE INDEX gin_index_position_on_players ON public.players USING gin (position gin_trgm_ops);


Then, I am checking the indexdef of this table,



select *
from pg_indexes
where tablename = 'players';


And the result for the previously created index is:



CREATE INDEX gin_index_position_on_players ON public.players USING gin ("position" gin_trgm_ops)


Does someone know why Postgres would have wrapped position ?



Guess I have already investigated:




  1. Reserved keywords: postgres has some "reserved keywords" and protect them by wrapping them -> it does not appear that name is wrapped.


  2. Built-in functions: postgres wraps its built-in functions (like position) -> char_length is not wrapped








postgresql indexing






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 20 at 15:30

























asked Nov 20 at 15:07









thom_bian

156




156












  • Why do you care? What is the problem with that? But position is a keyword: postgresql.org/docs/current/sql-keywords-appendix.html (although a non-reserved one)
    – a_horse_with_no_name
    Nov 20 at 15:35












  • I care because I am using Rails to build an app and it generates an error when parsing the indexdef due to this edge case.
    – thom_bian
    Nov 21 at 7:45










  • What you dont understand here is that the framework does not support this syntax and I tried to understand why this syntax could occur to provide an interesting feedback to the Rails developer.
    – thom_bian
    Nov 21 at 8:12












  • Then, yes it's a bug in that framework. You probably also want to check the parsing of expression based indexes: e.g. create index on ... (lower(some_column)) would result in (lower((some_column)::text)) or partial indexes: create index on ... () where some_column = 42
    – a_horse_with_no_name
    Nov 21 at 8:26


















  • Why do you care? What is the problem with that? But position is a keyword: postgresql.org/docs/current/sql-keywords-appendix.html (although a non-reserved one)
    – a_horse_with_no_name
    Nov 20 at 15:35












  • I care because I am using Rails to build an app and it generates an error when parsing the indexdef due to this edge case.
    – thom_bian
    Nov 21 at 7:45










  • What you dont understand here is that the framework does not support this syntax and I tried to understand why this syntax could occur to provide an interesting feedback to the Rails developer.
    – thom_bian
    Nov 21 at 8:12












  • Then, yes it's a bug in that framework. You probably also want to check the parsing of expression based indexes: e.g. create index on ... (lower(some_column)) would result in (lower((some_column)::text)) or partial indexes: create index on ... () where some_column = 42
    – a_horse_with_no_name
    Nov 21 at 8:26
















Why do you care? What is the problem with that? But position is a keyword: postgresql.org/docs/current/sql-keywords-appendix.html (although a non-reserved one)
– a_horse_with_no_name
Nov 20 at 15:35






Why do you care? What is the problem with that? But position is a keyword: postgresql.org/docs/current/sql-keywords-appendix.html (although a non-reserved one)
– a_horse_with_no_name
Nov 20 at 15:35














I care because I am using Rails to build an app and it generates an error when parsing the indexdef due to this edge case.
– thom_bian
Nov 21 at 7:45




I care because I am using Rails to build an app and it generates an error when parsing the indexdef due to this edge case.
– thom_bian
Nov 21 at 7:45












What you dont understand here is that the framework does not support this syntax and I tried to understand why this syntax could occur to provide an interesting feedback to the Rails developer.
– thom_bian
Nov 21 at 8:12






What you dont understand here is that the framework does not support this syntax and I tried to understand why this syntax could occur to provide an interesting feedback to the Rails developer.
– thom_bian
Nov 21 at 8:12














Then, yes it's a bug in that framework. You probably also want to check the parsing of expression based indexes: e.g. create index on ... (lower(some_column)) would result in (lower((some_column)::text)) or partial indexes: create index on ... () where some_column = 42
– a_horse_with_no_name
Nov 21 at 8:26




Then, yes it's a bug in that framework. You probably also want to check the parsing of expression based indexes: e.g. create index on ... (lower(some_column)) would result in (lower((some_column)::text)) or partial indexes: create index on ... () where some_column = 42
– a_horse_with_no_name
Nov 21 at 8:26












1 Answer
1






active

oldest

votes


















1














If in doubt read the frankly exhaustive manuals.



https://www.postgresql.org/docs/current/sql-keywords-appendix.html






share|improve this answer





















  • Thank you for the link. It seems that some of the keywords in that list are generating this syntax.
    – thom_bian
    Nov 21 at 8:14











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53395921%2fwhy-does-postgresql-has-to-put-quotes-around-the-column-name-when-creating-gin-i%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









1














If in doubt read the frankly exhaustive manuals.



https://www.postgresql.org/docs/current/sql-keywords-appendix.html






share|improve this answer





















  • Thank you for the link. It seems that some of the keywords in that list are generating this syntax.
    – thom_bian
    Nov 21 at 8:14
















1














If in doubt read the frankly exhaustive manuals.



https://www.postgresql.org/docs/current/sql-keywords-appendix.html






share|improve this answer





















  • Thank you for the link. It seems that some of the keywords in that list are generating this syntax.
    – thom_bian
    Nov 21 at 8:14














1












1








1






If in doubt read the frankly exhaustive manuals.



https://www.postgresql.org/docs/current/sql-keywords-appendix.html






share|improve this answer












If in doubt read the frankly exhaustive manuals.



https://www.postgresql.org/docs/current/sql-keywords-appendix.html







share|improve this answer












share|improve this answer



share|improve this answer










answered Nov 20 at 15:37









Richard Huxton

15.2k12236




15.2k12236












  • Thank you for the link. It seems that some of the keywords in that list are generating this syntax.
    – thom_bian
    Nov 21 at 8:14


















  • Thank you for the link. It seems that some of the keywords in that list are generating this syntax.
    – thom_bian
    Nov 21 at 8:14
















Thank you for the link. It seems that some of the keywords in that list are generating this syntax.
– thom_bian
Nov 21 at 8:14




Thank you for the link. It seems that some of the keywords in that list are generating this syntax.
– thom_bian
Nov 21 at 8:14


















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53395921%2fwhy-does-postgresql-has-to-put-quotes-around-the-column-name-when-creating-gin-i%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Create new schema in PostgreSQL using DBeaver

Deepest pit of an array with Javascript: test on Codility

Costa Masnaga