CREATE APPLICATION

Creates a new application based on an application package or listing using the Native Apps Framework.

See also:

ALTER APPLICATION, DESCRIBE APPLICATION, DROP APPLICATION, SHOW APPLICATIONS

Syntax

CREATE APPLICATION <name> FROM APPLICATION PACKAGE <package_name>
   [ COMMENT = '<string_literal>' ]
   [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , ... ] ) ]

CREATE APPLICATION <name> FROM APPLICATION PACKAGE <package_name>
  USING <path_to_version_directory>
  [ DEBUG_MODE = TRUE | FALSE ]
  [ COMMENT = '<string_literal>' ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [, ...] ) ]


CREATE APPLICATION <name> FROM APPLICATION PACKAGE <package_name>
  USING VERSION  <version_identifier> [ PATCH <patch_num> ]
  [ DEBUG_MODE = TRUE | FALSE ]
  [ COMMENT = '<string_literal>' ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , ... ] ) ]

CREATE APPLICATION <name> FROM LISTING <listing_name>
   [ COMMENT = '<string_literal>' ]
   [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , ... ] ) ]
Copy

Required Parameters

name

Specifies the identifier for the application. Must be unique for your account.

In addition, the identifier must start with an alphabetic character and cannot contain spaces or special characters unless the entire identifier string is enclosed in double quotes (for example, "My object"). Identifiers enclosed in double quotes are also case-sensitive.

For more details, refer to Identifier requirements.

FROM APPLICATION PACKAGE package_name

Specifies the name of the application package used to create the application. To use this clause to create an application from an application package without specifying a stage or a version/patch, the application package must have a default release directive defined.

This clause can only be used to create an application in the same account as the application package. This clause cannot be used to create an application in development mode.

FROM LISTING listing_name

Specifies the name of listing containing the application package used to create the application.

USING path_to_version_directory

Specifies the path to the stage containing the application files for the application.

USING version [ PATCH patch_num ]

Specifies the version, and optionally the patch, defined in the application package used to create the application.

Optional Parameters

COMMENT = 'string_literal'

Specifies a comment for the application.

Default: No value

DEBUG_MODE = { TRUE | FALSE }

Enables or disables debug mode for the application to be installed.

  • TRUE enables debug mode for the installed application.

  • FAlSE disables debug mode for the installed application.

Note

You can only set DEBUG_MODE if the application meets the following requirements:

  • The application is in the same account as the application package.

  • The application is being created from a specific version or from files on a named stage.

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

Specifies the tag name and the tag string value.

The tag value is always a string, and the maximum number of characters for the tag value is 256.

For details about specifying tags in a statement, refer to Tag quotas for objects and columns.

Access Control Requirements

A role used to execute this SQL command must have the following privileges at a minimum:

Privilege

Object

Notes

CREATE APPLICATION

Account

DEVELOP

Application package

INSTALL

Application package

IMPORT SHARE

CREATE APPLICATION

Account

These privileges are required to create an application object in an account different than the account that contains the application package.

Usage Notes

  • To create an application directly from an application package, you must specify a default release directive in the application package.

  • The application object differs from a database in the following ways:

    • An application may not be transient.

    • The role with the OWNERSHIP privilege on the application:

      • Can drop the database or modify the COMMENT property as well as any properties that are specific to the application.

      • Cannot see or modify the contents of the application except via the privileges granted the application roles. Also, this role cannot create a database-level object, such as a schema or a database role.

  • Regarding metadata:

    Attention

    Customers should ensure that no personal data (other than for a User object), sensitive data, export-controlled data, or other regulated data is entered as metadata when using the Snowflake service. For more information, see Metadata Fields in Snowflake.

  • CREATE OR REPLACE <object> statements are atomic. That is, when an object is replaced, the old object is deleted and the new object is created in a single transaction.

Examples

CREATE APPLICATION hello_snowflake_app
  FROM APPLICATION PACKAGE hello_snowflake_package
  USING VERSION v1;
Copy
+---------------------------------------------------------+
| status                                                  |
|---------------------------------------------------------|
| Application 'hello_snowflake_app' created successfully. |
+---------------------------------------------------------+
CREATE APPLICATION hello_snowflake_app
  FROM APPLICATION PACKAGE hello_snowflake_package
  USING '@hello_snowflake_code.core.hello_snowflake_stage';
Copy
+---------------------------------------------------------+
| status                                                  |
|---------------------------------------------------------|
| Application 'hello_snowflake_app' created successfully. |
+---------------------------------------------------------+