diff --git a/_data/menu_docs_dev.json b/_data/menu_docs_dev.json index b4922eb083..e110088cba 100644 --- a/_data/menu_docs_dev.json +++ b/_data/menu_docs_dev.json @@ -520,6 +520,10 @@ { "page": "VACUUM", "url": "vacuum" + }, + { + "page": "LOAD / INSTALL", + "url": "load_and_install" } ] }, diff --git a/docs/sql/statements/load_and_install.md b/docs/sql/statements/load_and_install.md new file mode 100644 index 0000000000..b712b92c56 --- /dev/null +++ b/docs/sql/statements/load_and_install.md @@ -0,0 +1,49 @@ +--- +layout: docu +title: LOAD / INSTALL Statements +railroad: statements/load_and_install.js +--- + +## `INSTALL` + +The `INSTALL` statement downloads an extension so it can be loaded into a DuckDB session. + +### Examples + +Install the [`httpfs`]({% link docs/extensions/httpfs/overview.md %}) extension: + +```sql +INSTALL httpfs; +``` + +Install the `h3` [Community Extension]({% link docs/extensions/community_extensions.md %}): + +```sql +INSTALL h3 FROM community; +``` + +### Syntax + +
+ +## `LOAD` + +The `LOAD` statement loads an installed DuckDB extension into the current session. + +### Examples + +Load the [`httpfs`]({% link docs/extensions/httpfs/overview.md %}) extension: + +```sql +LOAD httpfs; +``` + +Load the [`spatial`]({% link docs/extensions/spatial.md %}) extension: + +```sql +LOAD spatial; +``` + +### Syntax + +
diff --git a/js/statements/load_and_install.js b/js/statements/load_and_install.js new file mode 100644 index 0000000000..642a3bbdef --- /dev/null +++ b/js/statements/load_and_install.js @@ -0,0 +1,51 @@ +function GenerateLoad(options = {}) { + return Diagram([ + AutomaticStack([ + Keyword("LOAD"), + Expression("extension-name") + ]) + ]) +} + +function GenerateInstall(options = {}) { + return Diagram([ + AutomaticStack([ + Optional(Keyword("FORCE"), "skip"), + Keyword("INSTALL"), + Expression("extension-name"), + Optional( + Sequence([ + Keyword("FROM"), + Choice(0, [ + Expression("repository"), + Expression("'repository-url'") + ]), + ]), + "skip" + ), + Optional( + Sequence([ + Keyword("VERSION"), + Expression("version-number") + ]), + "skip" + ) + ]) + ]) +} + +function Initialize(options = {}) { + document.getElementById("rrdiagram1").classList.add("limit-width"); + document.getElementById("rrdiagram1").innerHTML = GenerateLoad(options).toString(); + + document.getElementById("rrdiagram2").classList.add("limit-width"); + document.getElementById("rrdiagram2").innerHTML = GenerateInstall(options).toString(); +} + +function Refresh(node_name, set_node) { + options[node_name] = set_node; + Initialize(options); +} + +options = {} +Initialize()