On Sep 25, 2008, at 1:14 PM, David Fetter wrote:
On Thu, Sep 25, 2008 at 01:05:26PM -0700, Casey Allen Shobe wrote:
On Sep 15, 2008, at 7:19 PM, Tom Lane wrote:
The problem is that the people who ask for this type of feature are
usually imagining that they can put their code on
customer-controlled machines and it will be safe from the
customer's eyes.

That's a broken expectation.  All that can realistically be expected
is database/catalog-level constraints.

It's far from clear that those offer protection of any reasonable kind.

Define "protection". If there is no effective way to query the catalog and see function code at the SQL level, this is a complete and effective form of protection - it's just not protection from somebody with server-level access.

You've got the burden of proof exactly backwards there.  It's on you
or anyone who cares to to explain why it might be a good idea to add
this "feature," understanding that every feature has a maintenance
cost and is a potential source of bugs.

I don't personally want this feature. But I can see where it's valuable in some contexts, and if the understanding is correct, it can be used responsibly. People misuse basic SQL all the time, but that doesn't mean the basic SQL should be nonexistent or stupider.

You do have a very valid point in indicating the added maintenance cost of any new feature, but protecting stuff at the SQL level is not a complicated thing to do, and well, people concerned with this feature can be the ones maintaining it - there seems to be a good many already and existence of the feature would attract more. Could this be implemented via a contrib/ module?

As for the expectation above - could pl/pgsql be made compilable?
It  would seem easy to translate pl/pgsql code into C and compile a
C  function.  That *could* go onto customer-controlled machines and
be safe from the customer's eyes.

No, it would not.  As many others have mentioned, "strings" does a
pretty good job on such stuff, let alone the impossibility even in
theory of hiding what a program does from someone with access to run
it using arbitrary inputs, even when they have no binary to examine.

I am not saying that C is an encryption technique. It does however protect code from customer eyes. People are often not trying to truly encrypt a protected algorithm, but removing maintainability, adding cost to theft, and hiding code that's badly done.

FWIW, I think most people who want to hide code aren't concerned about
IP, they're concerned about clients seeing embarrassingly bad/sloppy
code.  But there *are* some very real and legitimate needs for this,
though it's a small minority of those who think they do.

Please elucidate those needs in detail, then explain why it might be
PostgreSQL's job to meet them.

See my other posts talking about chipmakers. We should NOT add this feature /for/ idiots, but the fact that idiots will inevitably end up misusing any feature should not be a justification for not implementing it.

Cheers,
--
Casey Allen Shobe
Database Architect, The Berkeley Electronic Press
[EMAIL PROTECTED] (email/jabber/aim/msn)
http://www.bepress.com | +1 (510) 665-1200 x163


--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to