Skip to content
This repository has been archived by the owner on Aug 5, 2022. It is now read-only.

test page

Janos Kovacs edited this page May 7, 2012 · 9 revisions

Plugin Developer Guide

Introduction

Murphy in Brief

blah blah bla ....

this is the enumeration test:

  • First level bbbbbb

    • second level
    • another second levelmake cle
  • first level again

  • now we try third level as well

    • second

      • third
      1. jjjjj
    • again second

      • third
  • first

  1. This is for 1
  2. for 2
    1. second level/1
    2. second level/2
      1. third level/1
      2. third level/2
    3. second level/3
  3. and for three
This
will be the first among description thing
here
we have the second
and
the third
MQI_COLUMN_MAX the maximum number columns a table can have
MQI_COND_MAX maximum length of a condition table (i.e. array of mqi_cond_entry_t)
MQI_HANDLE_INVALID mqi_handle_t value for nonexisting handle. Zero is a valid handle thus casting a zero to mqi_handle_t will produce a valid handle (remeber this when using static mqi_handle_t).
MQI_QUERY_RESULT_MAX maximum number of rows a query can produce
MQI_TXDEPTH_MAX maximum depth for nested transactions

Basic Infrastructure

Murphy Database

Overview

db-layers.png

Murphy DB components

Low level API

High Level API

Murphy Query Language

whitespace                 =  1*(SP / HTAB / CRLF)

SHOW                       =  "SHOW"
BEGIN                      =  "BEGIN"
COMMIT                     =  "COMMIT"
ROLLBACK                   =  "ROLLBACK"
TRANSACTION                =  "TRANSACTION"
TRANSACTIONS               =  "TRANSACTIONS"
CREATE                     =  "CREATE"
UPDATE                     =  "UPDATE"
REPLACE                    =  "REPLACE"
DELETE                     =  "DELETE"
DROP                       =  "DROP"
DESCRIBE                   =  "DESCRIBE"
TABLE                      =  "TABLE"
TABLES                     =  "TABLES"
INDEX                      =  "INDEX"
ROWS                       =  "ROWS"
COLUMN                     =  "COLUMN"
TRIGGER                    =  "TRIGGER"
INSERT                     =  "INSERT"
SELECT                     =  "SELECT"
INTO                       =  "INTO"
FROM                       =  "FROM"
WHERE                      =  "WHERE"
VALUES                     =  "VALUES"
SET                        =  "SET"
ON                         =  "ON"
IN                         =  "IN"
OR                         =  "OR"
PERSISTENT                 =  "PERSISTENT"
TEMPORARY                  =  "TEMPORARY"
CALLBACK                   =  "CALLBACK"
VARCHAR                    =  "VARCHAR"
INTEGER                    =  "INTEGER"
UNSIGNED                   =  "UNSIGNED"
REAL                       =  "REAL"
BLOB                       =  "BLOB"

parameter                  =  "%" ("s" / "d" / "u" / "f")

not_squote                 =  ALPHA / DIGIT / %x20-26 / %x28-2f / %x3a /
                              %x3c-40 / %x5b-60 / %x7b-7e

not_dquote                 =  ALPHA / DIGIT / %x20-21 / %x23-2f / %x3a /
                              %x3c-40 / %x5b-60 / %x7b-7e

number                     =  1*DIGIT

floating                   =  DIGIT "." *DIGIT

identifier                 =  ALPHA *(*(ALPHA / DIGIT / "_" / "-") (ALPHA /
                              DIGIT))

quoted_string              =  ("'" *NOT_SQUOTE "'") / (DQUOTE *NOT_DQUOTE
                              DQUOTE)

statement_list             =  statement *(";" statement)

statement                  =  show_statement / create_statement /
                              drop_statement / begin_statement /
                              commit_statement / rollback_statement /
                              describe_statement / insert_statement /
                              update_statement / delete_statement /
                              select_statement / error

show_statement             =  SHOW [PERSISTENT / TEMPORARY] TABLES

create_statement           =  create_table_statement / create_index_statement
                              / create_trigger_statement

create_table_statement     =  CREATE [PERSISTENT / TEMPORARY] TABLE identifier
                              "(" column_defs ")"

create_index_statement     =  CREATE INDEX ON identifier "(" column_list ")"

create_trigger_statement   =  create_transaction_trigger /
                              create_table_trigger / create_row_trigger /
                              create_column_trigger

column_defs                =  column_def *("," column_def)

column_def                 =  identifier column_type

column_type                =  VARCHAR "(" number ")" / INTEGER / UNSIGNED /
                              floating / BLOB "(" number ")"

create_transaction_trigger =  CREATE TRIGGER identifier ON TRANSACTIONS
                              CALLBACK identifier

create_table_trigger       =  CREATE TRIGGER identifier ON TABLES CALLBACK
                              identifier

create_row_trigger         =  CREATE TRIGGER identifier ON ROWS IN identifier
                              CALLBACK identifier SELECT ("*" / column_list)

create_column_trigger      =  CREATE TRIGGER identifier ON COLUMN identifier
                              IN identifier CALLBACK identifier [SELECT ("*" /
                              column_list)]

drop_statement             =  drop_table_statement / drop_index_statement

drop_table_statement       =  DROP TABLE identifier

drop_index_statement       =  DROP INDEX identifier

begin_statement            =  BEGIN [TRANSACTION] identifier

commit_statement           =  COMMIT [TRANSACTION] identifier

rollback_statement         =  ROLLBACK [TRANSACTION] identifier

describe_statement         =  DESCRIBE identifier

insert_statement           =  (INSERT [OR REPLACE] INTO / REPLACE INTO)
                              identifier ["(" column_list ")"] VALUES "("
                              input_value_list ")"

input_value_list           =  input_value *("," input_value)

update_statement           =  UPDATE identifier SET assignment_list [WHERE
                              conditional_expression]

assignment_list            =  assignment *("," assignment)

assignment                 =  identifier "=" input_value

delete_statement           =  DELETE FROM identifier [WHERE
                              conditional_expression]

select_statement           =  SELECT ("*" / column_list) FROM identifier
                              [WHERE conditional_expression]

column_list                =  identifier *("," identifier)

input_value                =  quoted_string / ("+" / "-") number / number /
                              (floating / ("+" / "-") floating) / parameter

conditional_expression     =  relational_expression / relational_expression
                              ("&" / "|") relational_expression

relational_expression      =  value ("<" / "<=" / "=" / ">=" / ">") value

value                      =  identifier / quoted_string / ("+" / "-") number
                              / number / floating_value / parameter / "("
                              conditional_expression ")" / "!" value