Re: rw_redis_fdw: SQL Errors when statement is within a function - Mailing list pgsql-general

From Adrian Klaver
Subject Re: rw_redis_fdw: SQL Errors when statement is within a function
Date
Msg-id 20dd03bc-228e-1584-67e1-6bf45c238675@aklaver.com
Whole thread Raw
In response to Re: rw_redis_fdw: SQL Errors when statement is within a function  (GPT <gptmailinglists@gmail.com>)
Responses Re: rw_redis_fdw: SQL Errors when statement is within a function  (GPT <gptmailinglists@gmail.com>)
List pgsql-general
On 10/30/18 3:19 AM, GPT wrote:
> Very good morning!
> 
> If, in 2018 when the human structures are very close to reach the edge
> of our universe, here on earth you are asking me (a simple end-user),
> in order to run the following "complicated" and "sophisticated" SQL
> statements:
> 
> INSERT INTO my_table(key, value, expiry) VALUES ('my_key', 'my_value', 10);
> SELECT value FROM my_table where key = LOWER('my_key');
> 
> ten (10) times in total, to activate the debugger and check the log
> files because the errors given to me were **totally wrong** ("KEY is
> NULL" was not NULL) and **misleading**, then one more time: It´s
> TRAGIC!
> 
> I, of course, recognise that I have made plenty mistakes! But, I could
> never imagine that the most advanced open source database in the world
> would behave in such a "poor" way!

Postgres did not behave in a 'poor' way, the extension just did not 
interpret the results correctly. This gets to the crux of the problem, 
third party code using Postgres. Postgres has no way of knowing what 
happens after its data is passed on. You are looking for Postgres to 
follow its responses all the way through the software stack and tell you 
if the response is being misused. That is not going to happen. You did 
the correct thing, report the issue to the extension author and post to 
this list for further advice. As a result the issue was corrected. I am 
not seeing what the problem in the process is?

> 
> @Christoph
> 
> As regards "rw_redis_fdw" I have to admit the following:
> - it is honest. It informs the user from the very beginning that "This
> project is currently work in progress and may have experience
> significant changes until it becomes stable. Use it with caution and
> at your own risk!"; although it is so far stable enough!!!
> - it worked in pg9.x without problem!
> - the developer did his best when I reported the problem; for my bad
> luck he did not expirienced the same problem in PG10.x so as he starts
> searching/debugging from the very first moment.
> - after **including and NOT fixing** (because there was not any bug)
> the FuncExpr subquery support, the module has been working fine and it
> is stable! (until of course the next plan change that PG will induce
> under the hood and brakes the interface; that´s a joke!) although the

It is not a joke it is a fact of life and the reason for major version 
changes. They are allowed to make breaking changes in the code. It is 
how software progresses. It is also why there is a long testing period, 
alpha-->beta-->rc, to give users and third party developers plenty of 
opportunity to try their code against the changes.

> developer uses (successfully - I add) very low level, internal
> interfaces to PostgreSQL as you have already written.
> 
> And the most important:
> 
> <h1>The module **DOES** whatever claims to do without a problem, in a
> very humble way!<h1>

Except the problem you ran into:)

> 
> As regards the risk of the project, I am aware of it. That´s why I am
> trying to choose **reliable**, **responsible** and **trustworthy**
> projects, even if they are not famous! From a very famous project, I
> just recently got a burn! Do only **ONE** thing but do it
> **"CORRECTLY"**! I always try to avoid rich-featured projects which,
> by rule, most of the features are mis-implemented, or quality is poor!
> 
> As regards database choice, I do not have many options, PG or MariaDB
> or SQLite. But, when the application is finished, it will be very easy

There is also:

http://www.firebirdsql.org/
https://www.mysql.com/

> to maintain the application-DB interface and use any other DB. It is a
> matter of translation. DB is just a tool like any other one, and not a

Which is exactly where you ran into a problem, so I question the easy 
part. Still, go for it.

> religous matter.
> 
> In the case of redis fdw I do not have many options. There are
> two-three of them. Redis is the only db which offers TTL with very
> high resolution (1 sec), and rw_redis_fdw implements TTL.
> 
> In addition, at first opportunity, I always contact the developer or
> the community to get an idea of his/its mentality and the way they
> work or react or keep their nose up.

Pretty quickly from what I saw of their responses to your issues.

> 
> Have all a nice day!
> 
> Tia
> 

-- 
Adrian Klaver
adrian.klaver@aklaver.com


pgsql-general by date:

Previous
From:
Date:
Subject: R: Problem with stored procedure and nested transactions
Next
From: Scot Kreienkamp
Date:
Subject: RE: How to change standby node to sync from the new master withoutrebooting the PostgreSQL service?