top

Package sql provides the user-facing API for access to a Cockroach datastore. As the name suggests, the API is based around SQL, the same SQL you find in traditional RDMBS systems like Oracle, MySQL or Postgres. The core Cockroach system implements a distributed, transactional, monolithic sorted key-value map. The sql package builds on top of this core system adding parsing, query planning and query execution as well as defining the privilege model.

Databases and Tables

The two primary objects are databases and tables. A database is a namespace which holds a series of tables. Conceptually, a database can be viewed like a directory in a filesystem plus some additional metadata (privileges). A table is like a file on steroids: containing a structured layout of rows and columns along with secondary indexes.

Like a directory, a database has a name and metadata. The metadata is defined by the DatabaseDescriptor:

message DatabaseDescriptor {
  optional string name;
  optional uint32 id;
  optional PrivilegeDescriptor privileges;
}

Similarly, tables have a TableDescriptor:

message TableDescriptor {
  optional string name;
  optional uint32 id;
  repeated ColumnDescriptor columns;
  optional IndexDescriptor primary_index;
  repeated IndexDescriptor indexes;
  optional PrivilegeDescriptor privileges;
}

Both the database ID and the table ID are allocate from the same "ID space" and IDs are never reused.

The namespace in which databases and tables exist contains only two levels: the root level contains databases and the database level contains tables. The "system.namespace" and "system.descriptor" tables implement the mapping from database/table name to ID and from ID to descriptor:

CREATE TABLE system.namespace (
  "parentID" INT,
  "name"     CHAR,
  "id"       INT,
  PRIMARY KEY (parentID, name)
);

CREATE TABLE system.descriptor (
  "id"         INT PRIMARY KEY,
  "descriptor" BLOB
);

The reserved ID of 0 is used for the "root" of the namespace in which the databases reside. In order to lookup the ID of a database given its name, the system effectively does a query like:

SELECT id FROM system.namespace WHERE parentID = 0 AND name = <database-name>

And given a database/table ID, the system looks up the descriptor using a query like:

SELECT descriptor FROM system.descriptor WHERE id = <ID>

Primary Key Addressing

All of the SQL data stored in tables is mapped down to keys and values. This mapping is referred to as key addressing. All tables have a primary key, whether explicitly listed in the schema or automatically generated. Note that a primary key is unrelated to the core Cockroach key-value functionality and is instead referring to the primary key for a SQL table.

The primary key consists of one or more non-NULL columns from the table. For a given row of the table, the columns for the primary key are encoded into a single string using the routines in util/encoding. These routines allow for the encoding of NULL values, integers, floating pointer numbers and strings in such a way that lexicographic ordering of the encoded strings corresponds to the same ordering of the unencoded data. Using "system.namespace" as an example, the primary key columns would be encoded as:

/parentID/name

[Note that "/" is being used to disambiguate the components of the key. The actual encodings do not use "/"].

Before being stored in the monolithic key-value space, the encoded primary key columns are prefixed with the table ID and an ID indicating that the key corresponds to the primary index:

/TableID/PrimaryIndexID/parentID/name

The column data associated with a row in a table is stored within the primary index which is the index associated with the primary key. Every column has a unique ID (that is local to the table). The value for a column is stored at the key:

/TableID/PrimaryIndexID/parentID/name/ColumnID -> Value

A column containing a NULL value is not stored in the monolithic map. In order to detect rows which only contain NULL values in non-primary key columns, every row has a sentinel key indicating its existence. The sentinel key is simply the primary index key:

/TableID/PrimaryIndexID/parentID/name -> NULL

As an optimization, columns that are part of the primary key are not stored separately as their data can be decoded from the sentinel value.

Secondary Indexes

Despite not being a formal part of SQL, secondary indexes are one of its most powerful features. Secondary indexes are a level of indirection that allow quick lookup of a row using something other than the primary key. As an example, we can imagine creating a secondary index on the "system.namespace" table:

CREATE INDEX name ON system.namespace (name);

This would create a "name" index composed solely of the "name" column. The key addressing for this non-unique index looks like:

/TableId/SecondaryIndexID/name/parentID -> NULL

Notice that while the index is on "name", the key contains both "name" and "parentID". This is done to ensure that each row for a table has a unique key for the non-unique index. In general, for a non-unique index we encoded the index's columns followed by any primary key columns that have not already been mentioned. This effectively transforms any non-unique index into a unique index.

Let's suppose that we had instead defined the index as:

CREATE UNIQUE INDEX name ON system.namespace (name, id);

The key addressing for a unique index looks like:

/TableID/SecondaryID/name/ID -> /parentID

Unique index keys are defined like this so that a conditional put operation can fail if that key already exists for another row, thereby enforcing the uniqueness constraint. The value for a unique index is composed of any primary key columns that are not part of the index ("parentID" in this example).

Query Planning and Execution

Query planning is the system which takes a parsed SQL statement (described by an abstract syntax tree) and creates an execution plan which is itself a tree consisting of a set of scan, join, group, sort and projection operations. For the bulk of SQL statements, query planning is straightforward: the complexity lies in SELECT.

At one end of the performance spectrum, an implementation of SELECT can be straightforward: do a full scan of the (joined) tables in the FROM clause, filter rows based on the WHERE clause, group the resulting rows based on the GROUP BY clause, filter those rows using the HAVING clause, sort using the ORDER BY clause. There are a number of steps, but they all have well defined semantics and are mostly just an exercise in software engineering: retrieve the rows as quickly as possible and then send them through the pipeline of filtering, grouping, filtering and sorting.

At the other end of the performance spectrum, query planners attempt to take advantage of secondary indexes to limit the data retrieved, make joining of data between two tables easier and faster and to avoid the need to sort data by retrieving it in a sorted or partially sorted form. The details of how we implement this are in flux and will continue to be in flux for the foreseeable future. This section is intended to provide a high-level overview of a few of the techniques involved.

After parsing a SELECT query, the query planner performs semantic analysis to verify the queries correctness and to resolve names within the query to actual objects within the system. Let's consider the query:

SELECT id FROM system.namespace WHERE parentID = 0 AND name = 'test'

This query would look up the ID of the database named "test". The query planner needs to resolve the "system.namespace" qualified name in the FROM clause to the appropriate TableDescriptor. It also needs to resolve the "id", "parentID" and "name" column references to the appropriate column descriptions with the "system.namespace" TableDescriptor. Lastly, as part of semantic analysis, the query planner verifies that the expressions in the select targets and the WHERE clause are valid (e.g. the WHERE clause evaluates to a boolean).

From that starting point, the query planner then analyzes the GROUP BY and ORDER BY clauses, adding "hidden" targets for expressions used in those clauses that are not explicit targets of the query. In our example without a GROUP BY or ORDER BY clause we move straight to the next step: index selection. Index selection is the stage where the query planner selects the best index to scan and selects the start and end keys to use for scanning the index. Depending on the query, the query planner might even select multiple ranges to scan from an index or multiple ranges from different indexes.

How does the query planner decide which index to use and which range of the index to scan? We currently use a restricted form of value propagation in oder to determine the range of possible values for columns referenced in the WHERE clause. Using this range information, each index is examined to determine if it is a potential candidate and ranked according to its specificity. In addition to ranking indexes by the column value range information, they are ranked by how well they match the sorting required by the ORDER BY clause. Back to the example above, the range information would determine that:

parentID >= 0 AND parentID <= 0 AND name >= 'test' and name <= 'test

Notice that each column has a start and end value associated with it. Since there is only a single index on the "system.namespace" table, it is always selected. The start key is computed using the range information as:

/system.descriptor/primary/0/test

The end key is computed as:

/system.descriptor/primary/0/tesu

The "tesu" suffix is not a typo: the end key is computed as the "prefix end key" for the key "/TableID/PrimaryIndexId/0/test". This is done by incrementing the final byte of the key such that "t" becomes "u".

Our example query thus only scans two key-value pairs:

/system.descriptor/primary/0/test    -> NULL
/system.descriptor/primary/0/test/id -> <ID>

Imported by 154 package(s)

  1. github.com/756445638/cockroach/cli
  2. github.com/756445638/cockroach/server
  3. github.com/756445638/cockroach/sql/pgwire
  4. github.com/Aishraj/cockroach/cli
  5. github.com/Aishraj/cockroach/server
  6. github.com/Aishraj/cockroach/sql/pgwire
  7. github.com/JKhawaja/cockroach/server
  8. github.com/YuleiXiao/cockroach/server
  9. github.com/YuleiXiao/cockroach/sql/pgwire
  10. github.com/a10y/cockroach/cli
  11. github.com/a10y/cockroach/server
  12. github.com/a10y/cockroach/sql/pgwire
  13. github.com/abhi11/cockroach/server
  14. github.com/abhi11/cockroach/sql/pgwire
  15. github.com/abhi11/cockroach/storage
  16. github.com/abhinavdahiya/cockroach/server
  17. github.com/abhinavdahiya/cockroach/sql/pgwire
  18. github.com/aishraj/cockroach/cli
  19. github.com/aishraj/cockroach/server
  20. github.com/aishraj/cockroach/sql/pgwire
  21. github.com/ajayaa/cockroach/server
  22. github.com/alex/cockroach/server
  23. github.com/andreweduffy/cockroach/cli
  24. github.com/andreweduffy/cockroach/server
  25. github.com/andreweduffy/cockroach/sql/pgwire
  26. github.com/arkan/cockroach/server
  27. github.com/arkan/cockroach/sql/pgwire
  28. github.com/arypurnomoz/cockroach/server
  29. github.com/asubiotto/cockroach/cli
  30. github.com/asubiotto/cockroach/server
  31. github.com/bdarnell/cockroach/server
  32. github.com/bdarnell/cockroach/sql/pgwire
  33. github.com/bg451/cockroach/cli
  34. github.com/bg451/cockroach/server
  35. github.com/bg451/cockroach/sql/pgwire
  36. github.com/bg451/cockroach/storage
  37. github.com/c4pt0r/cockroach/server
  38. github.com/chzyer-dev/cockroach/cli
  39. github.com/chzyer-dev/cockroach/server
  40. github.com/chzyer-dev/cockroach/sql/pgwire
  41. github.com/chzyer-dev/cockroach/storage
  42. github.com/cockroachdb/cockroach/cli
  43. github.com/cockroachdb/cockroach/server
  44. github.com/cockroachdb/cockroach/sql/pgwire
  45. github.com/codepope/cockroach/server
  46. github.com/codepope/cockroach/sql/pgwire
  47. github.com/d4l3k/cockroach/server
  48. github.com/danielhan/cockroach/server
  49. github.com/danielhan/cockroach/sql/pgwire
  50. github.com/dig3rati/cockroach/server
  51. github.com/dlsniper/cockroach/server
  52. github.com/dlsniper/cockroach/sql/pgwire
  53. github.com/dt/cockroach/server
  54. github.com/dt/cockroach/sql/pgwire
  55. github.com/dt/cockroach/storage
  56. github.com/eddyzhou/cockroach/server
  57. github.com/eddyzhou/cockroach/storage
  58. github.com/guanqun/cockroach/server
  59. github.com/guanqun/cockroach/sql/pgwire
  60. github.com/guanqun/cockroach/storage
  61. github.com/heshed/cockroach/server
  62. github.com/jamesgraves/cockroach/server
  63. github.com/jbowens/cockroach/server
  64. github.com/jgautheron/cockroach/server
  65. github.com/jgautheron/cockroach/storage
  66. github.com/jiezcomet/cockroach/server
  67. github.com/jiezcomet/cockroach/sql/pgwire
  68. github.com/jmank88/cockroach/server
  69. github.com/kardianos/cockroach/cli
  70. github.com/kardianos/cockroach/sql/pgwire
  71. github.com/kimh/cockroach/server
  72. github.com/kimh/cockroach/sql/pgwire
  73. github.com/kimh/cockroach/storage
  74. github.com/kokizzu/cockroach/cli
  75. github.com/kokizzu/cockroach/server
  76. github.com/kokizzu/cockroach/sql/pgwire
  77. github.com/kokizzu/cockroach/storage
  78. github.com/l2x/cockroach/server
  79. github.com/l2x/cockroach/sql/pgwire
  80. github.com/l2x/cockroach/storage
  81. github.com/liexusong/cockroach/server
  82. github.com/liudch/cockroach/server
  83. github.com/lparis/cockroach/cli
  84. github.com/lparis/cockroach/server
  85. github.com/lparis/cockroach/sql/pgwire
  86. github.com/lparis/cockroach/storage
  87. github.com/marcuswestin/cockroach/server
  88. github.com/marcuswestin/cockroach/sql/pgwire
  89. github.com/marcuswestin/cockroach/storage
  90. github.com/maxid/cockroach/server
  91. github.com/maximecaron/cockroach/server
  92. github.com/maximecaron/cockroach/sql/pgwire
  93. github.com/maximecaron/cockroach/storage
  94. github.com/mbertschler/cockroach/server
  95. github.com/mbertschler/cockroach/sql/pgwire
  96. github.com/mjibson/cockroach/server
  97. github.com/nak3/cockroach/cli
  98. github.com/nak3/cockroach/server
  99. github.com/nporsche/cockroach/server
  100. github.com/objectundefined/cockroach/server
  101. github.com/objectundefined/cockroach/sql/pgwire
  102. github.com/panyingyun/cockroach/cli
  103. github.com/panyingyun/cockroach/server
  104. github.com/panyingyun/cockroach/sql/pgwire
  105. github.com/paperstreet/cockroach/cli
  106. github.com/paperstreet/cockroach/server
  107. github.com/paperstreet/cockroach/storage
  108. github.com/petermattis/cockroach/cli
  109. github.com/petermattis/cockroach/server
  110. github.com/petermattis/cockroach/storage
  111. github.com/phobos182/cockroach/cli
  112. github.com/phobos182/cockroach/server
  113. github.com/phobos182/cockroach/sql/pgwire
  114. github.com/phobos182/cockroach/storage
  115. github.com/phynalle/cockroach/cli
  116. github.com/phynalle/cockroach/server
  117. github.com/phynalle/cockroach/sql/pgwire
  118. github.com/rushiagr/cockroach/server
  119. github.com/rushiagr/cockroach/sql/pgwire
  120. github.com/sacheendra/cockroach/server
  121. github.com/sacheendra/cockroach/sql/pgwire
  122. github.com/sacheendra/cockroach/storage
  123. github.com/seiflotfy/cockroach/cli
  124. github.com/seiflotfy/cockroach/server
  125. github.com/seiflotfy/cockroach/sql/pgwire
  126. github.com/seiflotfy/cockroach/storage
  127. github.com/slava-ustovytski/cockroach/server
  128. github.com/slavau/cockroach/server
  129. github.com/soniabhishek/cockroach/server
  130. github.com/soniabhishek/cockroach/storage
  131. github.com/spencerkimball/cockroach/cli
  132. github.com/spencerkimball/cockroach/server
  133. github.com/spencerkimball/cockroach/storage
  134. github.com/sunya123/cockroach/server
  135. github.com/sunya123/cockroach/sql/pgwire
  136. github.com/tamird/cockroach/server
  137. github.com/tescherm/cockroach/server
  138. github.com/tescherm/cockroach/sql/pgwire
  139. github.com/the872/cockroach/server
  140. github.com/the872/cockroach/sql/pgwire
  141. github.com/tkschmidt/cockroach/server
  142. github.com/tschottdorf/cockroach/server
  143. github.com/upton/cockroach/server
  144. github.com/upton/cockroach/sql/pgwire
  145. github.com/upton/cockroach/storage
  146. github.com/vnadgir-ef/cockroach/server
  147. github.com/vnadgir-ef/cockroach/sql/pgwire
  148. github.com/vnadgir-ef/cockroach/storage
  149. github.com/yosiat/cockroach/server
  150. github.com/yydzero/cockroach/cli
  151. github.com/yydzero/cockroach/server
  152. github.com/yydzero/cockroach/sql/pgwire
  153. github.com/yydzero/cockroach/storage
  154. github.com/zhaozhi406/cockroach/server

Imported only in test by 171 package(s)

  1. github.com/756445638/cockroach/acceptance
  2. github.com/756445638/cockroach/config
  3. github.com/756445638/cockroach/sql
  4. github.com/Aishraj/cockroach/acceptance
  5. github.com/Aishraj/cockroach/sql
  6. github.com/JKhawaja/cockroach/acceptance
  7. github.com/JKhawaja/cockroach/sql
  8. github.com/YuleiXiao/cockroach/acceptance
  9. github.com/YuleiXiao/cockroach/sql
  10. github.com/a10y/cockroach/acceptance
  11. github.com/a10y/cockroach/sql
  12. github.com/abhi11/cockroach/config
  13. github.com/abhi11/cockroach/sql
  14. github.com/abhinavdahiya/cockroach/acceptance
  15. github.com/abhinavdahiya/cockroach/sql
  16. github.com/aishraj/cockroach/acceptance
  17. github.com/aishraj/cockroach/sql
  18. github.com/alex/cockroach/config
  19. github.com/alex/cockroach/kv
  20. github.com/alex/cockroach/sql
  21. github.com/alex/cockroach/storage
  22. github.com/andreweduffy/cockroach/acceptance
  23. github.com/andreweduffy/cockroach/sql
  24. github.com/arkan/cockroach/acceptance
  25. github.com/arkan/cockroach/config
  26. github.com/arkan/cockroach/sql
  27. github.com/asubiotto/cockroach/acceptance
  28. github.com/asubiotto/cockroach/sql
  29. github.com/bdarnell/cockroach/acceptance
  30. github.com/bdarnell/cockroach/config
  31. github.com/bdarnell/cockroach/sql
  32. github.com/bg451/cockroach/acceptance
  33. github.com/bg451/cockroach/config
  34. github.com/bg451/cockroach/sql
  35. github.com/c4pt0r/cockroach/sql
  36. github.com/chzyer-dev/cockroach/acceptance
  37. github.com/chzyer-dev/cockroach/config
  38. github.com/chzyer-dev/cockroach/sql
  39. github.com/cockroachdb/cockroach/acceptance
  40. github.com/codepope/cockroach/acceptance
  41. github.com/codepope/cockroach/sql
  42. github.com/d4l3k/cockroach/acceptance
  43. github.com/d4l3k/cockroach/config
  44. github.com/d4l3k/cockroach/sql
  45. github.com/danielhan/cockroach/acceptance
  46. github.com/danielhan/cockroach/sql
  47. github.com/dig3rati/cockroach/config
  48. github.com/dig3rati/cockroach/kv
  49. github.com/dig3rati/cockroach/sql
  50. github.com/dig3rati/cockroach/storage
  51. github.com/dlsniper/cockroach/acceptance
  52. github.com/dlsniper/cockroach/config
  53. github.com/dlsniper/cockroach/sql
  54. github.com/dt/cockroach/config
  55. github.com/dt/cockroach/sql
  56. github.com/eddyzhou/cockroach/config
  57. github.com/eddyzhou/cockroach/sql
  58. github.com/guanqun/cockroach/config
  59. github.com/guanqun/cockroach/sql
  60. github.com/heshed/cockroach/config
  61. github.com/heshed/cockroach/kv
  62. github.com/heshed/cockroach/sql
  63. github.com/heshed/cockroach/storage
  64. github.com/jamesgraves/cockroach/config
  65. github.com/jamesgraves/cockroach/kv
  66. github.com/jamesgraves/cockroach/sql
  67. github.com/jamesgraves/cockroach/storage
  68. github.com/jbowens/cockroach/config
  69. github.com/jbowens/cockroach/kv
  70. github.com/jbowens/cockroach/sql
  71. github.com/jbowens/cockroach/storage
  72. github.com/jgautheron/cockroach/sql
  73. github.com/jiezcomet/cockroach/config
  74. github.com/jiezcomet/cockroach/kv
  75. github.com/jiezcomet/cockroach/sql
  76. github.com/jiezcomet/cockroach/storage
  77. github.com/jmank88/cockroach/config
  78. github.com/jmank88/cockroach/kv
  79. github.com/jmank88/cockroach/sql
  80. github.com/jmank88/cockroach/storage
  81. github.com/kardianos/cockroach/acceptance
  82. github.com/kardianos/cockroach/sql
  83. github.com/kimh/cockroach/config
  84. github.com/kimh/cockroach/sql
  85. github.com/kokizzu/cockroach/config
  86. github.com/kokizzu/cockroach/sql
  87. github.com/l2x/cockroach/config
  88. github.com/l2x/cockroach/sql
  89. github.com/liexusong/cockroach/sql
  90. github.com/liudch/cockroach/sql
  91. github.com/lparis/cockroach/config
  92. github.com/lparis/cockroach/sql
  93. github.com/marcuswestin/cockroach/config
  94. github.com/marcuswestin/cockroach/sql
  95. github.com/maxid/cockroach/sql
  96. github.com/maximecaron/cockroach/config
  97. github.com/maximecaron/cockroach/sql
  98. github.com/mbertschler/cockroach/config
  99. github.com/mbertschler/cockroach/kv
  100. github.com/mbertschler/cockroach/sql
  101. github.com/mbertschler/cockroach/storage
  102. github.com/mjibson/cockroach/acceptance
  103. github.com/mjibson/cockroach/sql
  104. github.com/nak3/cockroach/acceptance
  105. github.com/nak3/cockroach/config
  106. github.com/nak3/cockroach/sql
  107. github.com/nak3/cockroach/storage
  108. github.com/nporsche/cockroach/config
  109. github.com/nporsche/cockroach/kv
  110. github.com/nporsche/cockroach/sql
  111. github.com/nporsche/cockroach/storage
  112. github.com/objectundefined/cockroach/acceptance
  113. github.com/objectundefined/cockroach/sql
  114. github.com/panyingyun/cockroach/acceptance
  115. github.com/panyingyun/cockroach/sql
  116. github.com/paperstreet/cockroach/config
  117. github.com/paperstreet/cockroach/sql
  118. github.com/petermattis/cockroach/acceptance
  119. github.com/petermattis/cockroach/config
  120. github.com/petermattis/cockroach/sql
  121. github.com/phobos182/cockroach/acceptance
  122. github.com/phobos182/cockroach/config
  123. github.com/phobos182/cockroach/sql
  124. github.com/phynalle/cockroach/acceptance
  125. github.com/phynalle/cockroach/config
  126. github.com/phynalle/cockroach/sql
  127. github.com/phynalle/cockroach/storage
  128. github.com/rushiagr/cockroach/acceptance
  129. github.com/rushiagr/cockroach/sql
  130. github.com/sacheendra/cockroach/config
  131. github.com/sacheendra/cockroach/sql
  132. github.com/seiflotfy/cockroach/acceptance
  133. github.com/seiflotfy/cockroach/config
  134. github.com/seiflotfy/cockroach/sql
  135. github.com/slava-ustovytski/cockroach/sql
  136. github.com/slavau/cockroach/sql
  137. github.com/soniabhishek/cockroach/config
  138. github.com/soniabhishek/cockroach/sql
  139. github.com/spencerkimball/cockroach/acceptance
  140. github.com/spencerkimball/cockroach/config
  141. github.com/spencerkimball/cockroach/sql
  142. github.com/sunya123/cockroach/acceptance
  143. github.com/sunya123/cockroach/config
  144. github.com/sunya123/cockroach/sql
  145. github.com/tamird/cockroach/acceptance
  146. github.com/tamird/cockroach/sql
  147. github.com/tescherm/cockroach/acceptance
  148. github.com/tescherm/cockroach/sql
  149. github.com/the872/cockroach/acceptance
  150. github.com/the872/cockroach/sql
  151. github.com/tkschmidt/cockroach/config
  152. github.com/tkschmidt/cockroach/kv
  153. github.com/tkschmidt/cockroach/sql
  154. github.com/tkschmidt/cockroach/storage
  155. github.com/tschottdorf/cockroach/acceptance
  156. github.com/tschottdorf/cockroach/sql
  157. github.com/upton/cockroach/config
  158. github.com/upton/cockroach/sql
  159. github.com/vnadgir-ef/cockroach/config
  160. github.com/vnadgir-ef/cockroach/sql
  161. github.com/yosiat/cockroach/config
  162. github.com/yosiat/cockroach/kv
  163. github.com/yosiat/cockroach/sql
  164. github.com/yosiat/cockroach/storage
  165. github.com/yydzero/cockroach/acceptance
  166. github.com/yydzero/cockroach/config
  167. github.com/yydzero/cockroach/sql
  168. github.com/zhaozhi406/cockroach/config
  169. github.com/zhaozhi406/cockroach/kv
  170. github.com/zhaozhi406/cockroach/sql
  171. github.com/zhaozhi406/cockroach/storage

Imports 34 package(s)

  1. golang.org/x/net/context
  2. github.com/cockroachdb/cockroach/util/syncutil
  3. github.com/cockroachdb/cockroach/sql/sqlutil
  4. github.com/cockroachdb/cockroach/util/hlc
  5. github.com/cockroachdb/cockroach/util/encoding
  6. github.com/cockroachdb/cockroach/sql/mon
  7. gopkg.in/inf.v0
  8. github.com/cockroachdb/cockroach/internal/client
  9. github.com/gogo/protobuf/proto
  10. github.com/cockroachdb/cockroach/sql/privilege
  11. github.com/cockroachdb/cockroach/util/tracing
  12. github.com/cockroachdb/cockroach/sql/sqlbase
  13. github.com/cockroachdb/cockroach/util/stop
  14. github.com/opentracing/opentracing-go
  15. github.com/pkg/errors
  16. github.com/cockroachdb/cockroach/util/envutil
  17. github.com/cockroachdb/cockroach/util/retry
  18. github.com/cockroachdb/cockroach/config
  19. github.com/cockroachdb/cockroach/gossip
  20. github.com/cockroachdb/cockroach/base
  21. github.com/cockroachdb/cockroach/util
  22. github.com/cockroachdb/cockroach/storage
  23. github.com/cockroachdb/cockroach/roachpb
  24. github.com/opentracing/basictracer-go
  25. github.com/cockroachdb/cockroach/util/log
  26. github.com/cockroachdb/cockroach/sql/distsql
  27. github.com/cockroachdb/cockroach/util/timeutil
  28. github.com/cockroachdb/cockroach/storage/engine/enginepb
  29. github.com/cockroachdb/cockroach/sql/parser
  30. github.com/cockroachdb/cockroach/keys
  31. github.com/cockroachdb/cockroach/storage/engine
  32. github.com/cockroachdb/cockroach/util/metric
  33. github.com/cockroachdb/cockroach/util/duration
  34. github.com/cockroachdb/cockroach/security

Test imports 20 package(s)

  1. github.com/cockroachdb/cockroach/sql/pgbench
  2. github.com/cockroachdb/cockroach/testutils/storageutils
  3. github.com/cockroachdb/cockroach/security/securitytest
  4. github.com/cockroachdb/cockroach/internal/rsg
  5. github.com/cockroachdb/cockroach/server/serverpb
  6. github.com/cockroachdb/cockroach/testutils
  7. github.com/lib/pq
  8. github.com/cockroachdb/cockroach/util/leaktest
  9. github.com/go-sql-driver/mysql
  10. github.com/cockroachdb/cockroach/util/caller
  11. github.com/cockroachdb/cockroach/util/protoutil
  12. github.com/cockroachdb/cockroach/storage/storagebase
  13. github.com/cockroachdb/cockroach/rpc
  14. github.com/cockroachdb/cockroach/testutils/testcluster
  15. github.com/cockroachdb/cockroach/util/randutil
  16. github.com/cockroachdb/cockroach/server
  17. github.com/cockroachdb/cockroach/testutils/serverutils
  18. gopkg.in/yaml.v2
  19. github.com/cockroachdb/cockroach/sql/pgwire
  20. github.com/cockroachdb/cockroach/testutils/sqlutils