just an idea, but i'm not sure about it... - NO SQL indicates that the routine contains no SQL statements. maybe it's something about what function/procedure do (maybe in future with another language/script? python?) a function that don't use SQL, probably will not use sql parser... i'm not sure about this, but it's a point to consider, since if you parse the function/procedure using SQL parser, you will lost time/ram with it, and if function don't have SQL (python?) you shouldn't lost this resources... i'm not sure, but maybe it's something about it reading source code.... i think it's dead code... at least i don't found something interesting using it: in sql_yacc.yy: | NO_SYM SQL_SYM { Lex->sp_chistics.daccess= SP_NO_SQL; } from command line: C:\tmp\mysql-gdb\mariadb-10.0.3\sql>grep "SP_NO_SQL" * grep: CMakeFiles: Invalid request code grep: examples: Invalid request code grep: share: Invalid request code sp.cc: chistics.daccess= SP_NO_SQL; sp.cc: case SP_NO_SQL: sql_lex.h: SP_NO_SQL, sql_yacc.yy: { Lex->sp_chistics.daccess= SP_NO_SQL; } 2013/9/2 Roberto Spadim <roberto@spadim.com.br>
Hi Federico!
Ciao,
I wanted to add some info in the CREATE PROCEDURE page in the KB, but I
2013/9/2 Federico Razzoli <federico_raz@yahoo.it>: 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@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-discuss More help : https://help.launchpad.net/ListHelp
-- Roberto Spadim SPAEmpresarial
-- Roberto Spadim SPAEmpresarial