maria-discuss team mailing list archive
-
maria-discuss team
-
Mailing list archive
-
Message #00996
Re: CREATE PROCEDURE clauses
Hi Roberto
I'll try to be more clear, please read carefully before answering
I know what a deterministic expression is - but what kinds of output must be deterministic for a procedure to be defined as DETERMINISTIC?
There are many types of output for a proc:
* OUT params
* SELECTs
* writes on tables
* SET @var
For a deterministic proc, do all of these need to be deterministic?
I guess the answer isn't easy.
--
For "NO SQL" a complete list of SQL statements would be needed. If we use this as a reference:
http://dev.mysql.com/doc/refman/5.6/en/sql-syntax.html
, even RETURN seems to be a SQL statement, but of course it can't be true, because it's impossible to write a func without RETURN.
Greetings
Federico
--------------------------------------------
Lun 2/9/13, Roberto Spadim <roberto@xxxxxxxxxxxxx> ha scritto:
Oggetto: Re: [Maria-discuss] CREATE PROCEDURE clauses
A: "Federico Razzoli" <federico_raz@xxxxxxxx>
Cc: "Mailing-List mariadb" <maria-discuss@xxxxxxxxxxxxxxxxxxx>
Data: Lunedì 2 settembre 2013, 15:23
Hi Federico!
2013/9/2 Federico Razzoli <federico_raz@xxxxxxxx>:
> Ciao,
>
> I wanted to add some info in the CREATE PROCEDURE page
in the KB, but I think that some info about CREATE PROCEDURE
clauses miss both in the kb and in the MySQL manual.
>
> * [NOT] DETERMINISTIC. From MySQL docs:
> "A routine is considered “deterministic” if it
always produces the same result for the same input
parameters, and “not deterministic” otherwise."
> What does this exactly mean for procedures? OUT and
INOUT parameters? Resultsets returned by the procedure?
Both?
i think it's something like: RANDON() = not deterministic,
ROUND(1.5)
= deterministic
maybe it's important for replication (must be done via
binary, instead
SQL), and it's important for query cache (not deterministic
can't be
cached)
> * NO SQL: As far as I understand, even SET is a SQL
statement. I guess that a "no sql" function is something
like
> CREATE FUNCTION x(n INT) RETURNS INT
> BEGIN
> RETURN n*2;
> END;
>
> But what is a "no sql" procedure (if such a procedure
even exists)?
i don't know, but reading mysql protocol, there's some
functions for
show fields, process info, process kill,
http://dev.mysql.com/doc/internals/en/text-protocol.html
> I'm sorry if this info is already written somewhere,
but I really wasn't able to find it - and I feel that the KB
should specify things like these.
>
> Greetings
> Federico
>
> _______________________________________________
> Mailing list: https://launchpad.net/~maria-discuss
> Post to : maria-discuss@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~maria-discuss
> More help : https://help.launchpad.net/ListHelp
--
Roberto Spadim
SPAEmpresarial
References