You are here

constant DatabaseConnection_sqlsrv::RESERVED_REGEXP in Drupal driver for SQL Server and SQL Azure 7

Same name and namespace in other branches
  1. 7.3 sqlsrv/database.inc \DatabaseConnection_sqlsrv::RESERVED_REGEXP
  2. 7.2 sqlsrv/database.inc \DatabaseConnection_sqlsrv::RESERVED_REGEXP

This is the original replacement regexp from Microsoft.

We could probably simplify it a lot because queries only contain placeholders when we modify them.

NOTE: removed 'escape' from the list, because it explodes with LIKE xxx ESCAPE yyy syntax.

File

sqlsrv/database.inc, line 154
Database interface code for Microsoft SQL Server.

Class

DatabaseConnection_sqlsrv

Code

const RESERVED_REGEXP = '/\\G
    # Everything that follows a boundary that is not : or _.
    \\b(?<![:\\[_])(?:
      # Any reserved words, followed by a boundary that is not an opening parenthesis.
      (action|admin|alias|any|are|array|at|begin|boolean|class|commit|contains|current|data|date|day|depth|domain|external|file|full|function|get|go|host|input|language|last|less|local|map|min|module|new|no|object|old|open|operation|parameter|parameters|path|plan|prefix|proc|public|ref|result|returns|role|row|rows|rule|save|search|second|section|session|size|state|statistics|temporary|than|time|timestamp|tran|translate|translation|trim|user|value|variable|view|without)
      (?!\\()
      |
      # Or a normal word.
      ([a-z]+)
    )\\b
    |
    \\b(
      [^a-z\'"\\\\]+
    )\\b
    |
    (?=[\'"])
    (
      "  [^\\\\"] * (?: \\\\. [^\\\\"] *) * "
      |
      \' [^\\\\\']* (?: \\\\. [^\\\\\']*) * \'
    )
  /Six';