name: MySqlGrammar
class_comment: null
dependencies:
- name: Connection
  type: class
  source: Illuminate\Database\Connection
- name: Expression
  type: class
  source: Illuminate\Database\Query\Expression
- name: Blueprint
  type: class
  source: Illuminate\Database\Schema\Blueprint
- name: ColumnDefinition
  type: class
  source: Illuminate\Database\Schema\ColumnDefinition
- name: Fluent
  type: class
  source: Illuminate\Support\Fluent
- name: RuntimeException
  type: class
  source: RuntimeException
properties:
- name: modifiers
  visibility: protected
  comment: '# * The possible column modifiers.

    # *

    # * @var string[]'
- name: serials
  visibility: protected
  comment: '# * The possible column serials.

    # *

    # * @var string[]'
- name: fluentCommands
  visibility: protected
  comment: '# * The commands to be executed outside of create or alter command.

    # *

    # * @var string[]'
methods:
- name: compileCreateDatabase
  visibility: public
  parameters:
  - name: name
  - name: connection
  comment: "# * The possible column modifiers.\n# *\n# * @var string[]\n# */\n# protected\
    \ $modifiers = [\n# 'Unsigned', 'Charset', 'Collate', 'VirtualAs', 'StoredAs',\
    \ 'Nullable',\n# 'Default', 'OnUpdate', 'Invisible', 'Increment', 'Comment', 'After',\
    \ 'First',\n# ];\n# \n# /**\n# * The possible column serials.\n# *\n# * @var string[]\n\
    # */\n# protected $serials = ['bigInteger', 'integer', 'mediumInteger', 'smallInteger',\
    \ 'tinyInteger'];\n# \n# /**\n# * The commands to be executed outside of create\
    \ or alter command.\n# *\n# * @var string[]\n# */\n# protected $fluentCommands\
    \ = ['AutoIncrementStartingValues'];\n# \n# /**\n# * Compile a create database\
    \ command.\n# *\n# * @param  string  $name\n# * @param  \\Illuminate\\Database\\\
    Connection  $connection\n# * @return string"
- name: compileDropDatabaseIfExists
  visibility: public
  parameters:
  - name: name
  comment: '# * Compile a drop database if exists command.

    # *

    # * @param  string  $name

    # * @return string'
- name: compileTables
  visibility: public
  parameters:
  - name: database
  comment: '# * Compile the query to determine the tables.

    # *

    # * @param  string  $database

    # * @return string'
- name: compileViews
  visibility: public
  parameters:
  - name: database
  comment: '# * Compile the query to determine the views.

    # *

    # * @param  string  $database

    # * @return string'
- name: compileColumns
  visibility: public
  parameters:
  - name: database
  - name: table
  comment: '# * Compile the query to determine the columns.

    # *

    # * @param  string  $database

    # * @param  string  $table

    # * @return string'
- name: compileIndexes
  visibility: public
  parameters:
  - name: database
  - name: table
  comment: '# * Compile the query to determine the indexes.

    # *

    # * @param  string  $database

    # * @param  string  $table

    # * @return string'
- name: compileForeignKeys
  visibility: public
  parameters:
  - name: database
  - name: table
  comment: '# * Compile the query to determine the foreign keys.

    # *

    # * @param  string  $database

    # * @param  string  $table

    # * @return string'
- name: compileCreate
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  - name: connection
  comment: '# * Compile a create table command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @param  \Illuminate\Database\Connection  $connection

    # * @return string'
- name: compileCreateTable
  visibility: protected
  parameters:
  - name: blueprint
  - name: command
  - name: connection
  comment: '# * Create the main create table clause.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @param  \Illuminate\Database\Connection  $connection

    # * @return string'
- name: compileCreateEncoding
  visibility: protected
  parameters:
  - name: sql
  - name: connection
  - name: blueprint
  comment: '# * Append the character set specifications to a command.

    # *

    # * @param  string  $sql

    # * @param  \Illuminate\Database\Connection  $connection

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @return string'
- name: compileCreateEngine
  visibility: protected
  parameters:
  - name: sql
  - name: connection
  - name: blueprint
  comment: '# * Append the engine specifications to a command.

    # *

    # * @param  string  $sql

    # * @param  \Illuminate\Database\Connection  $connection

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @return string'
- name: compileAdd
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile an add column command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileAutoIncrementStartingValues
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile the auto-incrementing column starting values.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileRenameColumn
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  - name: connection
  comment: '# * Compile a rename column command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @param  \Illuminate\Database\Connection  $connection

    # * @return array|string'
- name: compileLegacyRenameColumn
  visibility: protected
  parameters:
  - name: blueprint
  - name: command
  - name: connection
  comment: '# * Compile a rename column command for legacy versions of MySQL.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @param  \Illuminate\Database\Connection  $connection

    # * @return string'
- name: compileChange
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  - name: connection
  comment: '# * Compile a change column command into a series of SQL statements.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @param  \Illuminate\Database\Connection  $connection

    # * @return array|string

    # *

    # * @throws \RuntimeException'
- name: compilePrimary
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a primary key command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileUnique
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a unique key command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileIndex
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a plain index key command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileFullText
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a fulltext index key command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileSpatialIndex
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a spatial index key command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileKey
  visibility: protected
  parameters:
  - name: blueprint
  - name: command
  - name: type
  comment: '# * Compile an index creation command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @param  string  $type

    # * @return string'
- name: compileDrop
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a drop table command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileDropIfExists
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a drop table (if exists) command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileDropColumn
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a drop column command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileDropPrimary
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a drop primary key command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileDropUnique
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a drop unique key command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileDropIndex
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a drop index command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileDropFullText
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a drop fulltext index command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileDropSpatialIndex
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a drop spatial index command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileDropForeign
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a drop foreign key command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileRename
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a rename table command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileRenameIndex
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a rename index command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: compileDropAllTables
  visibility: public
  parameters:
  - name: tables
  comment: '# * Compile the SQL needed to drop all tables.

    # *

    # * @param  array  $tables

    # * @return string'
- name: compileDropAllViews
  visibility: public
  parameters:
  - name: views
  comment: '# * Compile the SQL needed to drop all views.

    # *

    # * @param  array  $views

    # * @return string'
- name: compileEnableForeignKeyConstraints
  visibility: public
  parameters: []
  comment: '# * Compile the command to enable foreign key constraints.

    # *

    # * @return string'
- name: compileDisableForeignKeyConstraints
  visibility: public
  parameters: []
  comment: '# * Compile the command to disable foreign key constraints.

    # *

    # * @return string'
- name: compileTableComment
  visibility: public
  parameters:
  - name: blueprint
  - name: command
  comment: '# * Compile a table comment command.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $command

    # * @return string'
- name: typeChar
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a char type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeString
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a string type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeTinyText
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a tiny text type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeText
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a text type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeMediumText
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a medium text type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeLongText
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a long text type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeBigInteger
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a big integer type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeInteger
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for an integer type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeMediumInteger
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a medium integer type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeTinyInteger
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a tiny integer type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeSmallInteger
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a small integer type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeFloat
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a float type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeDouble
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a double type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeDecimal
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a decimal type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeBoolean
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a boolean type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeEnum
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for an enumeration type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeSet
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a set enumeration type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeJson
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a json type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeJsonb
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a jsonb type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeDate
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a date type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeDateTime
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a date-time type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeDateTimeTz
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a date-time (with time zone) type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeTime
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a time type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeTimeTz
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a time (with time zone) type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeTimestamp
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a timestamp type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeTimestampTz
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a timestamp (with time zone) type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeYear
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a year type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeBinary
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a binary type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeUuid
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a uuid type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeIpAddress
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for an IP address type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeMacAddress
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a MAC address type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeGeometry
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a spatial Geometry type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeGeography
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a spatial Geography type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string'
- name: typeComputed
  visibility: protected
  parameters:
  - name: column
  comment: '# * Create the column definition for a generated, computed column type.

    # *

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return void

    # *

    # * @throws \RuntimeException'
- name: modifyVirtualAs
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for a generated virtual column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: modifyStoredAs
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for a generated stored column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: modifyUnsigned
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for an unsigned column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: modifyCharset
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for a character set column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: modifyCollate
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for a collation column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: modifyNullable
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for a nullable column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: modifyInvisible
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for an invisible column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: modifyDefault
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for a default column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: modifyOnUpdate
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for an "on update" column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: modifyIncrement
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for an auto-increment column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: modifyFirst
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for a "first" column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: modifyAfter
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for an "after" column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: modifyComment
  visibility: protected
  parameters:
  - name: blueprint
  - name: column
  comment: '# * Get the SQL for a "comment" column modifier.

    # *

    # * @param  \Illuminate\Database\Schema\Blueprint  $blueprint

    # * @param  \Illuminate\Support\Fluent  $column

    # * @return string|null'
- name: wrapValue
  visibility: protected
  parameters:
  - name: value
  comment: '# * Wrap a single string in keyword identifiers.

    # *

    # * @param  string  $value

    # * @return string'
- name: wrapJsonSelector
  visibility: protected
  parameters:
  - name: value
  comment: '# * Wrap the given JSON selector.

    # *

    # * @param  string  $value

    # * @return string'
traits:
- Illuminate\Database\Connection
- Illuminate\Database\Query\Expression
- Illuminate\Database\Schema\Blueprint
- Illuminate\Database\Schema\ColumnDefinition
- Illuminate\Support\Fluent
- RuntimeException
interfaces: []