~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to docs/dynamic.rst

[patch 125/129] Merge patch for revision 1943 from InnoDB SVN:
revno: 1943
revision-id: svn-v4:16c675df-0fcb-4bc9-8058-dcc011a37293:branches/zip:6207
parent: svn-v4:16c675df-0fcb-4bc9-8058-dcc011a37293:branches/zip:6202
committer: vasil
timestamp: Fri 2009-11-20 08:19:14 +0000
message:
  branches/zip: Merge r6198:6206 from branches/5.1:
  
  (r6203 was skipped as it is already in branches/zip)
  
    ------------------------------------------------------------------------
    r6200 | vasil | 2009-11-19 12:14:23 +0200 (Thu, 19 Nov 2009) | 4 lines
    Changed paths:
       M /branches/5.1/btr/btr0btr.c
    
    branches/5.1:
    
    White space fixup - indent under the opening (
    
    ------------------------------------------------------------------------
    r6203 | jyang | 2009-11-19 15:12:22 +0200 (Thu, 19 Nov 2009) | 8 lines
    Changed paths:
       M /branches/5.1/btr/btr0btr.c
    
    branches/5.1: Use btr_free_root() instead of fseg_free() for
    the fix of bug #48469, because fseg_free() is not defined
    in the zip branch. And we could save one mini-trasaction started
    by fseg_free().
    
    Approved by Marko.
    
    
    ------------------------------------------------------------------------
    r6205 | jyang | 2009-11-20 07:55:48 +0200 (Fri, 20 Nov 2009) | 11 lines
    Changed paths:
       M /branches/5.1/handler/ha_innodb.cc
    
    branches/5.1: Add a special case to handle the Duplicated Key error
    and return DB_ERROR instead. This is to avoid a possible SIGSEGV
    by mysql error handling re-entering the storage layer for dup key
    info without proper table handle.
    This is to prevent a server crash when error situation in bug
    #45961 "DDL on partitioned innodb tables leaves data dictionary
    in an inconsistent state" happens.
    
    rb://157 approved by Sunny Bains.
    
    
    ------------------------------------------------------------------------
    r6206 | jyang | 2009-11-20 09:38:43 +0200 (Fri, 20 Nov 2009) | 5 lines
    Changed paths:
       M /branches/5.1/handler/ha_innodb.cc
    
    branches/5.1: Fix a minor code formating issue for 
    the parenthesis iplacement of the if condition in
    rename_table().
    
    
    ------------------------------------------------------------------------
modified:
  handler/ha_innodb.cc           2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fhandler%2Fha_innodb.cc
diff:
=== modified file 'handler/ha_innodb.cc'

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
Dynamic SQL
2
 
===========
3
 
 
4
 
Dynamic SQL enables you to build SQL statements dynamically at runtime. It can be generated within an application or from the system tables and then executed against the database to manipulate the data. You can create more general purpose, flexible applications by using dynamic SQL since the full text of a SQL statement may be unknown at the time of compilation.
5
 
 
6
 
Dynamic SQL allows you to execute DDL statements (and other SQL statements) that are not supported in purely static SQL programs.
7
 
 
8
 
In Drizzle you can use the EXECUTE command along with :doc:'user defined variables <variables>'
9
 
to create SQL in a dynamic manner on the server. An exmaple of this is:
10
 
 
11
 
.. code-block:: mysql
12
 
 
13
 
        SET @var= "SELECT 1";
14
 
        EXECUTE @var;
15
 
 
16
 
You can also omit the variable and just insert the SQL directly:
17
 
 
18
 
.. code-block:: mysql
19
 
 
20
 
        EXECUTE "SELECT 1";
21
 
 
22
 
By adding WITH NO RETURN you can have EXECUTE and no errors will be
23
 
generated and no data will be returned by the execution of the statement.
24
 
 
25
 
If you want to launch the query in a separate session, you can do that with
26
 
the following:
27
 
 
28
 
.. code-block:: mysql
29
 
 
30
 
        EXECUTE "SELECT 1" CONCURRENT;
31
 
 
32
 
The query will run in a new session and will execute as the user that
33
 
launched it. It can be killed via KILL and the system limit on total number
34
 
of sessions will be enforced.
35
 
 
36
 
.. todo::
37
 
 
38
 
   EXECUTE executes the statements inside an explicit transaction.