Clarity in partial index example.

2019-04-03 Thread PG Doc comments form
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/11/indexes-partial.html
Description:

The example illustrating when a partial index can and cannot be used is a
little misleading. The query which can use the partial index is:
SELECT *
FROM access_log
WHERE url = '/index.html' AND client_ip = inet '212.78.10.32';

and the query which can't use the partial index is:
SELECT *
FROM access_log
WHERE client_ip = inet '192.168.100.23';

Maybe I am misunderstanding the concept here but url = '/index.html' doesn't
have any effect on this? If that's the case I would suggest either removing
it from the first query or adding it to the second query.


Re: Clarity in partial index example.

2019-04-03 Thread Jonathan S. Katz
On 4/3/19 4:20 PM, PG Doc comments form wrote:
> The following documentation comment has been logged on the website:
> 
> Page: https://www.postgresql.org/docs/11/indexes-partial.html
> Description:
> 
> The example illustrating when a partial index can and cannot be used is a
> little misleading. The query which can use the partial index is:
> SELECT *
> FROM access_log
> WHERE url = '/index.html' AND client_ip = inet '212.78.10.32';
> 
> and the query which can't use the partial index is:
> SELECT *
> FROM access_log
> WHERE client_ip = inet '192.168.100.23';
> 
> Maybe I am misunderstanding the concept here but url = '/index.html' doesn't
> have any effect on this? If that's the case I would suggest either removing
> it from the first query or adding it to the second query.

You're correct, the url = '/index.html' does not affect if the partial
index is used in the example.

Based on how the example is set up, I'd propose using the "url"
parameter in both examples. I've attached a patch that does this, with
some additional wording around the examples.

Thanks,

Jonathan
From 97198351a066f43823573f7280111d78ee8895e7 Mon Sep 17 00:00:00 2001
From: "Jonathan S. Katz" 
Date: Wed, 3 Apr 2019 17:58:17 -0400
Subject: [PATCH] Use consistent examples of queries demonstrating when a
 partial index is used.

---
 doc/src/sgml/indices.sgml | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/indices.sgml b/doc/src/sgml/indices.sgml
index 3493f482b8..9a3f6d9b9e 100644
--- a/doc/src/sgml/indices.sgml
+++ b/doc/src/sgml/indices.sgml
@@ -814,11 +814,13 @@ SELECT *
 FROM access_log
 WHERE url = '/index.html' AND client_ip = inet '212.78.10.32';
 
-A query that cannot use this index is:
+as the above IP address falls into the range that is covered by the partial
+index. The following query cannot use the partial as it uses an IP address
+that is outside the range of the partial index:
 
 SELECT *
 FROM access_log
-WHERE client_ip = inet '192.168.100.23';
+WHERE url = '/index.html' AND client_ip = inet '192.168.100.23';
 

 
-- 
2.14.3 (Apple Git-98)



signature.asc
Description: OpenPGP digital signature


Re: Clarity in partial index example.

2019-04-03 Thread Tom Lane
"Jonathan S. Katz"  writes:
> On 4/3/19 4:20 PM, PG Doc comments form wrote:
>> Maybe I am misunderstanding the concept here but url = '/index.html' doesn't
>> have any effect on this? If that's the case I would suggest either removing
>> it from the first query or adding it to the second query.

> You're correct, the url = '/index.html' does not affect if the partial
> index is used in the example.

> Based on how the example is set up, I'd propose using the "url"
> parameter in both examples. I've attached a patch that does this, with
> some additional wording around the examples.

Yeah, this seems unnecessarily confusing.  I tweaked your extra wording
a bit --- I didn't like referring to the index as covering a range,
because it's really excluding a range not including one.

Pushed.

regards, tom lane




Re: Clarity in partial index example.

2019-04-03 Thread Jonathan S. Katz
On 4/3/19 6:30 PM, Tom Lane wrote:
> "Jonathan S. Katz"  writes:
>> On 4/3/19 4:20 PM, PG Doc comments form wrote:
>>> Maybe I am misunderstanding the concept here but url = '/index.html' doesn't
>>> have any effect on this? If that's the case I would suggest either removing
>>> it from the first query or adding it to the second query.
> 
>> You're correct, the url = '/index.html' does not affect if the partial
>> index is used in the example.
> 
>> Based on how the example is set up, I'd propose using the "url"
>> parameter in both examples. I've attached a patch that does this, with
>> some additional wording around the examples.
> 
> Yeah, this seems unnecessarily confusing.  I tweaked your extra wording
> a bit --- I didn't like referring to the index as covering a range,
> because it's really excluding a range not including one.

You're right, that makes sense.

> Pushed.

Thanks!

Jonathan



signature.asc
Description: OpenPGP digital signature