diff --git a/docs/resources/stage.md b/docs/resources/stage.md
index 6e8cf7841e..2957f5961d 100644
--- a/docs/resources/stage.md
+++ b/docs/resources/stage.md
@@ -21,6 +21,17 @@ resource "snowflake_stage" "example_stage" {
schema = "EXAMPLE_SCHEMA"
credentials = "AWS_KEY_ID='${var.example_aws_key_id}' AWS_SECRET_KEY='${var.example_aws_secret_key}'"
}
+
+# with an existing hardcoded file format
+# please see other examples in the resource documentation
+resource "snowflake_stage" "example_stage_with_file_format" {
+ name = "EXAMPLE_STAGE"
+ url = "s3://com.example.bucket/prefix"
+ database = "EXAMPLE_DB"
+ schema = "EXAMPLE_SCHEMA"
+ credentials = "AWS_KEY_ID='${var.example_aws_key_id}' AWS_SECRET_KEY='${var.example_aws_secret_key}'"
+ file_format = "FORMAT_NAME = DB.SCHEMA.FORMATNAME"
+}
```
-> **Note** Instead of using fully_qualified_name, you can reference objects managed outside Terraform by constructing a correct ID, consult [identifiers guide](https://registry.terraform.io/providers/Snowflake-Labs/snowflake/latest/docs/guides/identifiers#new-computed-fully-qualified-name-field-in-resources).
@@ -43,7 +54,7 @@ resource "snowflake_stage" "example_stage" {
- `credentials` (String, Sensitive) Specifies the credentials for the stage.
- `directory` (String) Specifies the directory settings for the stage.
- `encryption` (String) Specifies the encryption settings for the stage.
-- `file_format` (String) Specifies the file format for the stage. Specifying the default Snowflake value (e.g. TYPE = CSV) will currently result in a permadiff (check [#2679](https://github.com/Snowflake-Labs/terraform-provider-snowflake/issues/2679)). For now, omit the default values; it will be fixed in the upcoming provider versions.
+- `file_format` (String) Specifies the file format for the stage. Specifying the default Snowflake value (e.g. TYPE = CSV) will currently result in a permadiff (check [#2679](https://github.com/Snowflake-Labs/terraform-provider-snowflake/issues/2679)). For now, omit the default values; it will be fixed in the upcoming provider versions. Examples of usage: 1. with hardcoding value: `file_format="FORMAT_NAME = DB.SCHEMA.FORMATNAME"` 2. from dynamic value: `file_format = "FORMAT_NAME = ${snowflake_file_format.myfileformat.fully_qualified_name}"` 3. from expression: `file_format = format("FORMAT_NAME =%s.%s.MYFILEFORMAT", var.db_name, each.value.schema_name)`. Reference: [#265](https://github.com/Snowflake-Labs/terraform-provider-snowflake/issues/265)
- `snowflake_iam_user` (String) An AWS IAM user created for your Snowflake account. This user is the same for every external S3 stage created in your account.
- `storage_integration` (String) Specifies the name of the storage integration used to delegate authentication responsibility for external cloud storage to a Snowflake identity and access management (IAM) entity.
- `tag` (Block List, Deprecated) Definitions of a tag to associate with the resource. (see [below for nested schema](#nestedblock--tag))
diff --git a/examples/resources/snowflake_stage/resource.tf b/examples/resources/snowflake_stage/resource.tf
index 36d710f1f7..8a434db4ff 100644
--- a/examples/resources/snowflake_stage/resource.tf
+++ b/examples/resources/snowflake_stage/resource.tf
@@ -6,3 +6,14 @@ resource "snowflake_stage" "example_stage" {
schema = "EXAMPLE_SCHEMA"
credentials = "AWS_KEY_ID='${var.example_aws_key_id}' AWS_SECRET_KEY='${var.example_aws_secret_key}'"
}
+
+# with an existing hardcoded file format
+# please see other examples in the resource documentation
+resource "snowflake_stage" "example_stage_with_file_format" {
+ name = "EXAMPLE_STAGE"
+ url = "s3://com.example.bucket/prefix"
+ database = "EXAMPLE_DB"
+ schema = "EXAMPLE_SCHEMA"
+ credentials = "AWS_KEY_ID='${var.example_aws_key_id}' AWS_SECRET_KEY='${var.example_aws_secret_key}'"
+ file_format = "FORMAT_NAME = DB.SCHEMA.FORMATNAME"
+}
\ No newline at end of file
diff --git a/pkg/resources/stage.go b/pkg/resources/stage.go
index e2ac46ed96..b2fde2bb80 100644
--- a/pkg/resources/stage.go
+++ b/pkg/resources/stage.go
@@ -57,7 +57,7 @@ var stageSchema = map[string]*schema.Schema{
"file_format": {
Type: schema.TypeString,
Optional: true,
- Description: "Specifies the file format for the stage. Specifying the default Snowflake value (e.g. TYPE = CSV) will currently result in a permadiff (check [#2679](https://github.com/Snowflake-Labs/terraform-provider-snowflake/issues/2679)). For now, omit the default values; it will be fixed in the upcoming provider versions.",
+ Description: "Specifies the file format for the stage. Specifying the default Snowflake value (e.g. TYPE = CSV) will currently result in a permadiff (check [#2679](https://github.com/Snowflake-Labs/terraform-provider-snowflake/issues/2679)). For now, omit the default values; it will be fixed in the upcoming provider versions. Examples of usage: 1. with hardcoding value: `file_format=\"FORMAT_NAME = DB.SCHEMA.FORMATNAME\"` 2. from dynamic value: `file_format = \"FORMAT_NAME = ${snowflake_file_format.myfileformat.fully_qualified_name}\"` 3. from expression: `file_format = format(\"FORMAT_NAME =%s.%s.MYFILEFORMAT\", var.db_name, each.value.schema_name)`. Reference: [#265](https://github.com/Snowflake-Labs/terraform-provider-snowflake/issues/265)",
DiffSuppressFunc: suppressQuoting,
},
"copy_options": {