Compare commits
240 Commits
python-run
...
docs-gen-s
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2c63e7fef2 | ||
|
|
d728124642 | ||
|
|
8a0ad66aba | ||
|
|
6a2fc326b5 | ||
|
|
d0c1de1cdd | ||
|
|
e291e8b3a1 | ||
|
|
0611e14ff7 | ||
|
|
7f5ba7184d | ||
|
|
d7f3c10cce | ||
|
|
6a6543492b | ||
|
|
a3e728305a | ||
|
|
817e3a33bc | ||
|
|
bf3394ee2c | ||
|
|
f2b646a1db | ||
|
|
9b0c8f19e1 | ||
|
|
cfab7f9d8c | ||
|
|
0bdb368e6e | ||
|
|
39ee072743 | ||
|
|
f6cdd9daf6 | ||
|
|
fdbdb039af | ||
|
|
3f951da6d3 | ||
|
|
dda8f2fa40 | ||
|
|
5b7cb8769c | ||
|
|
5f835e1fba | ||
|
|
24776a33e6 | ||
|
|
7465006a6d | ||
|
|
d9b1ee4f8c | ||
|
|
ec29c093aa | ||
|
|
893bdfc033 | ||
|
|
7833c48e3f | ||
|
|
d07616db35 | ||
|
|
cf9f542bd0 | ||
|
|
f2a6ab386b | ||
|
|
a1ea609c55 | ||
|
|
3a03d60d12 | ||
|
|
4dbb6c0dc4 | ||
|
|
f2c77434c5 | ||
|
|
4771545446 | ||
|
|
62f75b55a3 | ||
|
|
7d99a0f82b | ||
|
|
950d8b2a10 | ||
|
|
f0845fdc1d | ||
|
|
c98ecebe85 | ||
|
|
e7e9ad08e7 | ||
|
|
4e563b75cc | ||
|
|
977a515ecb | ||
|
|
78e1ec542f | ||
|
|
ed169c8c2e | ||
|
|
843f49f1ad | ||
|
|
27cc4abb26 | ||
|
|
c42b7cce9a | ||
|
|
65da45c098 | ||
|
|
01fce987e0 | ||
|
|
de3d7077d2 | ||
|
|
bbdaab3d8f | ||
|
|
1bf231e80c | ||
|
|
bd75132198 | ||
|
|
43a0f2a5cb | ||
|
|
88935bb7bd | ||
|
|
a137110141 | ||
|
|
8bfa8ff556 | ||
|
|
0bb43a1a5d | ||
|
|
4efffa7785 | ||
|
|
3a1d6ae053 | ||
|
|
d3a4a4259e | ||
|
|
b37f1a5b37 | ||
|
|
a1eac8b288 | ||
|
|
73e60daaef | ||
|
|
77e98801ba | ||
|
|
082dbc18c9 | ||
|
|
ec5df62b4d | ||
|
|
1244e5483c | ||
|
|
1ea41280d9 | ||
|
|
4450aef337 | ||
|
|
a22ec71522 | ||
|
|
3f60bb4166 | ||
|
|
f4293e06de | ||
|
|
5e19bbc2c5 | ||
|
|
e777063ffe | ||
|
|
fdedb65b60 | ||
|
|
eeda1125d2 | ||
|
|
bd638c913f | ||
|
|
cf7d68240a | ||
|
|
3fbcfc57ed | ||
|
|
a343d67ad5 | ||
|
|
3275e6f43f | ||
|
|
a95bf66163 | ||
|
|
811b440ecc | ||
|
|
59289bbe16 | ||
|
|
b08a91d3ea | ||
|
|
553b94d6ed | ||
|
|
c65f90be7d | ||
|
|
073a3bcbbb | ||
|
|
d4a0640d09 | ||
|
|
f402326b7e | ||
|
|
d0b5929f8d | ||
|
|
aa51cc41e5 | ||
|
|
618118a4c6 | ||
|
|
ff58482aad | ||
|
|
12f6e2e834 | ||
|
|
cf2dbb0f15 | ||
|
|
dcc5bc7704 | ||
|
|
486a88215c | ||
|
|
fc8d6a91dd | ||
|
|
6deed0f8bb | ||
|
|
1fa9ae4e88 | ||
|
|
4575c22a9a | ||
|
|
05fe0df0bf | ||
|
|
a063ca93a9 | ||
|
|
29ce6a4f3e | ||
|
|
5cced69207 | ||
|
|
c1c78462ee | ||
|
|
be45ac5d68 | ||
|
|
cd3d2e680f | ||
|
|
7a4107c65c | ||
|
|
17f133d715 | ||
|
|
a9fcfb7417 | ||
|
|
6c2fd11714 | ||
|
|
3fe9169f2f | ||
|
|
43db3bd3a6 | ||
|
|
661d40bd19 | ||
|
|
57c356bfa1 | ||
|
|
adfd39b69b | ||
|
|
0379e493b8 | ||
|
|
374c35c066 | ||
|
|
be7aec8ab6 | ||
|
|
d3ee5d04e0 | ||
|
|
5a6c6b9500 | ||
|
|
f2749f504c | ||
|
|
cce105ff35 | ||
|
|
e019767c92 | ||
|
|
36afb52625 | ||
|
|
0aa6f53ad1 | ||
|
|
1fa8ac23b1 | ||
|
|
931b6c92fd | ||
|
|
d6c5771222 | ||
|
|
379274d3a7 | ||
|
|
129edd96b3 | ||
|
|
02cc22b415 | ||
|
|
2bf5ddcb02 | ||
|
|
843afd1cbc | ||
|
|
6d43aadbb2 | ||
|
|
0e7dd5dcb7 | ||
|
|
03edf415e2 | ||
|
|
9b483697a4 | ||
|
|
ab5d43bed2 | ||
|
|
38712a7312 | ||
|
|
767ad1eeef | ||
|
|
df0aab2fb0 | ||
|
|
1abad61ec9 | ||
|
|
65507dce6d | ||
|
|
bde13d332b | ||
|
|
f657138b57 | ||
|
|
d05abc5d7c | ||
|
|
8faebeab23 | ||
|
|
3ed601e3d7 | ||
|
|
430922b074 | ||
|
|
b3b08f03b1 | ||
|
|
cc093e01c4 | ||
|
|
487bd5c5f9 | ||
|
|
fc9e7ed9b3 | ||
|
|
2a738dac1f | ||
|
|
65809644ec | ||
|
|
6a5407308e | ||
|
|
3edd5cc074 | ||
|
|
4d46f1fcec | ||
|
|
cbe1122bc0 | ||
|
|
d1b72456b5 | ||
|
|
7f17e4270c | ||
|
|
204272ff3d | ||
|
|
2a14cecbaf | ||
|
|
209204d8c2 | ||
|
|
fe774afba1 | ||
|
|
c8023ad602 | ||
|
|
53ec18eb76 | ||
|
|
59ad97bed9 | ||
|
|
120dd8e2f4 | ||
|
|
b3ab893ae4 | ||
|
|
44ea22093a | ||
|
|
2af2c404a9 | ||
|
|
b4b338c439 | ||
|
|
f84fdc22d3 | ||
|
|
1be7240919 | ||
|
|
e6cc051a9f | ||
|
|
1dddbe1c59 | ||
|
|
b9a9eaf903 | ||
|
|
a5203ae1a9 | ||
|
|
29e4abf469 | ||
|
|
c21f8dd652 | ||
|
|
b52cf777c0 | ||
|
|
043ce92800 | ||
|
|
d8d35a1ae9 | ||
|
|
f15f1931d1 | ||
|
|
e53822a376 | ||
|
|
4621879cd0 | ||
|
|
0677067e6a | ||
|
|
864576de3e | ||
|
|
5fc643d77b | ||
|
|
d6198703cb | ||
|
|
92c856255f | ||
|
|
9ae566a7cf | ||
|
|
ea5bdc690a | ||
|
|
65e01a51b2 | ||
|
|
3d593d7a92 | ||
|
|
bdbc5c327d | ||
|
|
95514e8d42 | ||
|
|
019b3ad302 | ||
|
|
d4552b8708 | ||
|
|
5996fc21d6 | ||
|
|
c60ab340fe | ||
|
|
5f70f21049 | ||
|
|
4be18fa874 | ||
|
|
b0e7978dbc | ||
|
|
04cda66324 | ||
|
|
819b59ec3c | ||
|
|
25a78a355f | ||
|
|
d9b586cbdd | ||
|
|
ddf035ab89 | ||
|
|
33ed416293 | ||
|
|
809ce3192f | ||
|
|
d9ff58371a | ||
|
|
62534528cd | ||
|
|
6d55c3c859 | ||
|
|
202de96d98 | ||
|
|
40bcc8ce13 | ||
|
|
8ddaba0bee | ||
|
|
ec9c7c8259 | ||
|
|
c0b7a52d81 | ||
|
|
a35f60bb2f | ||
|
|
7d28a7f45e | ||
|
|
aacf902b64 | ||
|
|
ec8ab6a4f1 | ||
|
|
17702007f3 | ||
|
|
8b6ef378dc | ||
|
|
c6b5bc19e5 | ||
|
|
8dcf84b8ad | ||
|
|
20cd1b6387 | ||
|
|
414fc65262 | ||
|
|
50a80ee809 | ||
|
|
372aaec236 |
@@ -28,6 +28,7 @@
|
||||
database-enable-actions
|
||||
deprecation-notice-version
|
||||
dismissed-custom-dashboard-toast
|
||||
dismissed-onboarding-sidebar-link
|
||||
email-configured?
|
||||
email-from-address
|
||||
email-from-name
|
||||
|
||||
1
.github/CODEOWNERS
vendored
@@ -13,6 +13,7 @@ src/metabase/analytics/prometheus.clj @metabase/cloud-ops
|
||||
deps.edn @metabase/backend-developers
|
||||
|
||||
docs @metabase/tech-writers
|
||||
docs/developers-guide # exclude from tech-writer ownership
|
||||
|
||||
#
|
||||
# Backend modules <=> teams that own them
|
||||
|
||||
7
.github/actions/test-driver/action.yml
vendored
@@ -38,3 +38,10 @@ runs:
|
||||
list-suites: failed
|
||||
list-tests: failed
|
||||
fail-on-error: false
|
||||
- name: Upload Logs on Failure
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: test-logs-${{ github.job }}
|
||||
path: logs/test-log.json
|
||||
retention-days: 1
|
||||
|
||||
1
.github/file-paths.yaml
vendored
@@ -40,6 +40,7 @@ frontend_specs: &frontend_specs
|
||||
- "frontend/test/**"
|
||||
- "frontend/**/tests/**"
|
||||
- "frontend/**/*.unit.*"
|
||||
- "enterprise/frontend/**/*.unit.*"
|
||||
- ".github/**/*.unit.spec.*"
|
||||
- "jest.config.js"
|
||||
- "jest.tz.unit.conf.json"
|
||||
|
||||
10
.github/team.json
vendored
@@ -11,7 +11,8 @@
|
||||
"appleby",
|
||||
"uladzimirdev",
|
||||
"wzimrin",
|
||||
"ericnormand"
|
||||
"ericnormand",
|
||||
"galdre"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -99,7 +100,12 @@
|
||||
{
|
||||
"name": "Product Growth",
|
||||
"label": ".Team/ProductGrowth",
|
||||
"members": ["nemanjaglumac"]
|
||||
"members": ["nemanjaglumac", "chodorowicz"]
|
||||
},
|
||||
{
|
||||
"name": "Cloud",
|
||||
"label": "cloud",
|
||||
"members": []
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
8
.github/workflows/backend.yml
vendored
@@ -153,6 +153,14 @@ jobs:
|
||||
list-tests: failed
|
||||
fail-on-error: false
|
||||
|
||||
- name: Upload Logs on Failure
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: test-logs-${{ matrix.java-version }}-${{ matrix.job.edition }}-${{ github.job }}
|
||||
path: logs/test-log.json
|
||||
retention-days: 1
|
||||
|
||||
# checks that all the namespaces we actually ship can be compiled, without any dependencies that we don't ship (such
|
||||
# as `:dev` dependencies). See #27009 for more context.
|
||||
be-check:
|
||||
|
||||
25
.github/workflows/docs_bump_detected.yml
vendored
@@ -1,13 +1,23 @@
|
||||
name: Docs Bump Detected
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
- reopened
|
||||
branches:
|
||||
- 'master'
|
||||
- 'release-x.[0-9]+.x'
|
||||
paths:
|
||||
- 'docs/**'
|
||||
|
||||
jobs:
|
||||
push_workflow_to_docs_metabase_github_io_job:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
SOURCE_BRANCH: ${{ github.head_ref || github.ref }}
|
||||
TARGET_BRANCH: ${{ github.event.pull_request.base.ref }}
|
||||
steps:
|
||||
- name: Report changed docs files exist
|
||||
run: |
|
||||
@@ -15,20 +25,13 @@ jobs:
|
||||
|
||||
- name: Trigger repo dispatch
|
||||
uses: actions/github-script@v7
|
||||
env:
|
||||
BRANCH_NAME: ${{ github.head_ref || github.ref }}
|
||||
with:
|
||||
github-token: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
|
||||
script: | #js
|
||||
if (process.env.BRANCH_NAME === "master" ||
|
||||
/^release-x\.\d+\.x$/.test(process.env.BRANCH_NAME)) {
|
||||
github.rest.repos.createDispatchEvent({
|
||||
owner: "${{ github.repository_owner }}",
|
||||
repo: "docs.metabase.github.io",
|
||||
event_type: "docs_update",
|
||||
client_payload: { branch_name: process.env.BRANCH_NAME
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.log("Branch name is not to be published: ", process.env.BRANCH_NAME);
|
||||
}
|
||||
client_payload: {
|
||||
source_branch: process.env.SOURCE_BRANCH,
|
||||
target_branch: process.env.TARGET_BRANCH}});
|
||||
|
||||
29
.github/workflows/docs_merge_detected.yml
vendored
@@ -1,35 +1,36 @@
|
||||
name: Docs Merge Detected
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
types:
|
||||
- closed
|
||||
branches:
|
||||
- master
|
||||
- 'master'
|
||||
- 'release-x.[0-9]+.x'
|
||||
paths:
|
||||
- 'docs/**'
|
||||
|
||||
jobs:
|
||||
push_workflow_to_docs_metabase_github_io_job_merge:
|
||||
push_and_merge_workflow_to_docs_metabase_github_io_job:
|
||||
if: github.event.pull_request.merged == true
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
SOURCE_BRANCH: ${{ github.head_ref || github.ref }}
|
||||
TARGET_BRANCH: ${{ github.event.pull_request.base.ref }}
|
||||
steps:
|
||||
- name: Report changed docs files exist
|
||||
run: |
|
||||
echo "A change in the docs directory was detected on merge."
|
||||
echo "A PR with changes to the docs directory was merged."
|
||||
|
||||
- name: Trigger repo dispatch
|
||||
uses: actions/github-script@v7
|
||||
env:
|
||||
BRANCH_NAME: ${{ github.head_ref || github.ref }}
|
||||
with:
|
||||
github-token: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
|
||||
script: | #js
|
||||
if (process.env.BRANCH_NAME === "master" ||
|
||||
/^release-x\.\d+\.x$/.test(process.env.BRANCH_NAME)) {
|
||||
github.rest.repos.createDispatchEvent({
|
||||
github.rest.repos.createDispatchEvent({
|
||||
owner: "${{ github.repository_owner }}",
|
||||
repo: "docs.metabase.github.io",
|
||||
event_type: "docs_merge",
|
||||
client_payload: { branch_name: process.env.BRANCH_NAME }
|
||||
});
|
||||
} else {
|
||||
console.log("Branch name is not to be published: ", process.env.BRANCH_NAME);
|
||||
}
|
||||
client_payload: {
|
||||
source_branch: process.env.SOURCE_BRANCH,
|
||||
target_branch: process.env.TARGET_BRANCH}});
|
||||
|
||||
6
.github/workflows/e2e-sample-apps-tests.yml
vendored
@@ -227,6 +227,12 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
# We have to use the latest version that does not have this issue https://github.com/docker/compose/pull/12752
|
||||
- name: Set up Docker Compose
|
||||
uses: docker/setup-compose-action@v1
|
||||
with:
|
||||
version: latest
|
||||
|
||||
- name: Retrieve uberjar artifact for ee
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
|
||||
4
.github/workflows/embedding-sdk.yml
vendored
@@ -2,7 +2,9 @@ name: Embedding SDK
|
||||
|
||||
on:
|
||||
push:
|
||||
|
||||
branches:
|
||||
- "master"
|
||||
- "release-**"
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
|
||||
|
||||
8
.github/workflows/release-embedding-sdk.yml
vendored
@@ -15,7 +15,7 @@ on:
|
||||
- release-x.52.x
|
||||
- release-x.53.x
|
||||
- release-x.54.x
|
||||
- metabot-v3-main
|
||||
- release-x.55.x
|
||||
- esbuild-main
|
||||
|
||||
concurrency:
|
||||
@@ -393,10 +393,10 @@ jobs:
|
||||
run: |
|
||||
echo //registry.npmjs.org/:_authToken=${{ secrets.NPM_RELEASE_TOKEN }} > .npmrc
|
||||
# Please keep the value in sync with `inputs.branch`'s release branch
|
||||
npm publish --tag ${{fromJson('{"master": "nightly", "release-x.51.x": "51-stable", "release-x.52.x": "52-stable", "release-x.53.x": "53-stable", "release-x.54.x": "54-stable", "metabot-v3-main": "55-metabot", "esbuild-main": "56-esbuild"}')[inputs.branch]}}
|
||||
npm publish --tag ${{fromJson('{"master": "nightly", "release-x.51.x": "51-stable", "release-x.52.x": "52-stable", "release-x.53.x": "53-stable", "release-x.54.x": "54-stable", "release-x.55.x": "55-stable", "esbuild-main": "56-esbuild"}')[inputs.branch]}}
|
||||
|
||||
- name: Add `latest` tag to the latest release branch (`release-x.54.x`) deployment
|
||||
if: ${{ inputs.branch == 'release-x.54.x' }}
|
||||
- name: Add `latest` tag to the latest release branch (`release-x.55.x`) deployment
|
||||
if: ${{ inputs.branch == 'release-x.55.x' }}
|
||||
working-directory: sdk
|
||||
run: |
|
||||
npm dist-tag add @metabase/embedding-sdk-react@${{ env.sdk_version }} latest
|
||||
|
||||
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 167 KiB After Width: | Height: | Size: 167 KiB |
@@ -9,6 +9,6 @@
|
||||
"express": "^5.0.1",
|
||||
"express-session": "^1.18.1",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"next": "^15.2.2"
|
||||
"next": "^15.2.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,170 +2,180 @@
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@emnapi/runtime@^1.2.0":
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.1.tgz#0fcaa575afc31f455fd33534c19381cfce6c6f60"
|
||||
integrity sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==
|
||||
"@emnapi/runtime@^1.4.3":
|
||||
version "1.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d"
|
||||
integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==
|
||||
dependencies:
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@img/sharp-darwin-arm64@0.33.5":
|
||||
version "0.33.5"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz#ef5b5a07862805f1e8145a377c8ba6e98813ca08"
|
||||
integrity sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==
|
||||
"@img/sharp-darwin-arm64@0.34.2":
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.2.tgz#65049ef7c6be7857da742cd028f97602ce209635"
|
||||
integrity sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-darwin-arm64" "1.0.4"
|
||||
"@img/sharp-libvips-darwin-arm64" "1.1.0"
|
||||
|
||||
"@img/sharp-darwin-x64@0.33.5":
|
||||
version "0.33.5"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz#e03d3451cd9e664faa72948cc70a403ea4063d61"
|
||||
integrity sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==
|
||||
"@img/sharp-darwin-x64@0.34.2":
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.2.tgz#d37ff7c75c46d5a68a3756e3f1924ef7ca7b285e"
|
||||
integrity sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-darwin-x64" "1.0.4"
|
||||
"@img/sharp-libvips-darwin-x64" "1.1.0"
|
||||
|
||||
"@img/sharp-libvips-darwin-arm64@1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz#447c5026700c01a993c7804eb8af5f6e9868c07f"
|
||||
integrity sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==
|
||||
"@img/sharp-libvips-darwin-arm64@1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz#843f7c09c7245dc0d3cfec2b3c83bb08799a704f"
|
||||
integrity sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==
|
||||
|
||||
"@img/sharp-libvips-darwin-x64@1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz#e0456f8f7c623f9dbfbdc77383caa72281d86062"
|
||||
integrity sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==
|
||||
"@img/sharp-libvips-darwin-x64@1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz#1239c24426c06a8e833815562f78047a3bfbaaf8"
|
||||
integrity sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==
|
||||
|
||||
"@img/sharp-libvips-linux-arm64@1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz#979b1c66c9a91f7ff2893556ef267f90ebe51704"
|
||||
integrity sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==
|
||||
"@img/sharp-libvips-linux-arm64@1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz#20d276cefd903ee483f0441ba35961679c286315"
|
||||
integrity sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==
|
||||
|
||||
"@img/sharp-libvips-linux-arm@1.0.5":
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz#99f922d4e15216ec205dcb6891b721bfd2884197"
|
||||
integrity sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==
|
||||
"@img/sharp-libvips-linux-arm@1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz#067c0b566eae8063738cf1b1db8f8a8573b5465c"
|
||||
integrity sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==
|
||||
|
||||
"@img/sharp-libvips-linux-s390x@1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz#f8a5eb1f374a082f72b3f45e2fb25b8118a8a5ce"
|
||||
integrity sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==
|
||||
"@img/sharp-libvips-linux-ppc64@1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz#682334595f2ca00e0a07a675ba170af165162802"
|
||||
integrity sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==
|
||||
|
||||
"@img/sharp-libvips-linux-x64@1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz#d4c4619cdd157774906e15770ee119931c7ef5e0"
|
||||
integrity sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==
|
||||
"@img/sharp-libvips-linux-s390x@1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz#82fcd68444b3666384235279c145c2b28d8ee302"
|
||||
integrity sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==
|
||||
|
||||
"@img/sharp-libvips-linuxmusl-arm64@1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz#166778da0f48dd2bded1fa3033cee6b588f0d5d5"
|
||||
integrity sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==
|
||||
"@img/sharp-libvips-linux-x64@1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz#65b2b908bf47156b0724fde9095676c83a18cf5a"
|
||||
integrity sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==
|
||||
|
||||
"@img/sharp-libvips-linuxmusl-x64@1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz#93794e4d7720b077fcad3e02982f2f1c246751ff"
|
||||
integrity sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==
|
||||
"@img/sharp-libvips-linuxmusl-arm64@1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz#72accf924e80b081c8db83b900b444a67c203f01"
|
||||
integrity sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==
|
||||
|
||||
"@img/sharp-linux-arm64@0.33.5":
|
||||
version "0.33.5"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz#edb0697e7a8279c9fc829a60fc35644c4839bb22"
|
||||
integrity sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==
|
||||
"@img/sharp-libvips-linuxmusl-x64@1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz#1fa052737e203f46bf44192acd01f9faf11522d7"
|
||||
integrity sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==
|
||||
|
||||
"@img/sharp-linux-arm64@0.34.2":
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.2.tgz#c9690fac5f3137eaab3f7ad6065390d10f66f1fa"
|
||||
integrity sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linux-arm64" "1.0.4"
|
||||
"@img/sharp-libvips-linux-arm64" "1.1.0"
|
||||
|
||||
"@img/sharp-linux-arm@0.33.5":
|
||||
version "0.33.5"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz#422c1a352e7b5832842577dc51602bcd5b6f5eff"
|
||||
integrity sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==
|
||||
"@img/sharp-linux-arm@0.34.2":
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.2.tgz#771dd2ec645f85f98441359bfc118afaf38cbd8b"
|
||||
integrity sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linux-arm" "1.0.5"
|
||||
"@img/sharp-libvips-linux-arm" "1.1.0"
|
||||
|
||||
"@img/sharp-linux-s390x@0.33.5":
|
||||
version "0.33.5"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz#f5c077926b48e97e4a04d004dfaf175972059667"
|
||||
integrity sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==
|
||||
"@img/sharp-linux-s390x@0.34.2":
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.2.tgz#82132d158abff57bd90b53574f2865f72f94e6c8"
|
||||
integrity sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linux-s390x" "1.0.4"
|
||||
"@img/sharp-libvips-linux-s390x" "1.1.0"
|
||||
|
||||
"@img/sharp-linux-x64@0.33.5":
|
||||
version "0.33.5"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz#d806e0afd71ae6775cc87f0da8f2d03a7c2209cb"
|
||||
integrity sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==
|
||||
"@img/sharp-linux-x64@0.34.2":
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.2.tgz#d815fb87899d462b28b62a9252ad127f02fe0740"
|
||||
integrity sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linux-x64" "1.0.4"
|
||||
"@img/sharp-libvips-linux-x64" "1.1.0"
|
||||
|
||||
"@img/sharp-linuxmusl-arm64@0.33.5":
|
||||
version "0.33.5"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz#252975b915894fb315af5deea174651e208d3d6b"
|
||||
integrity sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==
|
||||
"@img/sharp-linuxmusl-arm64@0.34.2":
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.2.tgz#cfac45b2abbc04628f676e123bfe3aeb300266c7"
|
||||
integrity sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linuxmusl-arm64" "1.0.4"
|
||||
"@img/sharp-libvips-linuxmusl-arm64" "1.1.0"
|
||||
|
||||
"@img/sharp-linuxmusl-x64@0.33.5":
|
||||
version "0.33.5"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz#3f4609ac5d8ef8ec7dadee80b560961a60fd4f48"
|
||||
integrity sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==
|
||||
"@img/sharp-linuxmusl-x64@0.34.2":
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.2.tgz#b876c23ff51d0fb6d9f3b0a07e2f4d1436c203ad"
|
||||
integrity sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linuxmusl-x64" "1.0.4"
|
||||
"@img/sharp-libvips-linuxmusl-x64" "1.1.0"
|
||||
|
||||
"@img/sharp-wasm32@0.33.5":
|
||||
version "0.33.5"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz#6f44f3283069d935bb5ca5813153572f3e6f61a1"
|
||||
integrity sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==
|
||||
"@img/sharp-wasm32@0.34.2":
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.34.2.tgz#b1dd0bab547dccf517586eb1fa5852160bba3b82"
|
||||
integrity sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==
|
||||
dependencies:
|
||||
"@emnapi/runtime" "^1.2.0"
|
||||
"@emnapi/runtime" "^1.4.3"
|
||||
|
||||
"@img/sharp-win32-ia32@0.33.5":
|
||||
version "0.33.5"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz#1a0c839a40c5351e9885628c85f2e5dfd02b52a9"
|
||||
integrity sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==
|
||||
"@img/sharp-win32-arm64@0.34.2":
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.2.tgz#f37bee0f60c167f825a09d2b8de6849b823e8b30"
|
||||
integrity sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==
|
||||
|
||||
"@img/sharp-win32-x64@0.33.5":
|
||||
version "0.33.5"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz#56f00962ff0c4e0eb93d34a047d29fa995e3e342"
|
||||
integrity sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==
|
||||
"@img/sharp-win32-ia32@0.34.2":
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.2.tgz#8fc30b6655bc6ff8910344a2020d334aa6361672"
|
||||
integrity sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==
|
||||
|
||||
"@next/env@15.2.2":
|
||||
version "15.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/env/-/env-15.2.2.tgz#6345352365a811c523cecf284874ff489b675e59"
|
||||
integrity sha512-yWgopCfA9XDR8ZH3taB5nRKtKJ1Q5fYsTOuYkzIIoS8TJ0UAUKAGF73JnGszbjk2ufAQDj6mDdgsJAFx5CLtYQ==
|
||||
"@img/sharp-win32-x64@0.34.2":
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.2.tgz#ecf19250f8fe35de684aa2b0ec6f773b3447247b"
|
||||
integrity sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==
|
||||
|
||||
"@next/swc-darwin-arm64@15.2.2":
|
||||
version "15.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.2.tgz#d3131279d4815ed7604eba7bf0063e0b8bfd2135"
|
||||
integrity sha512-HNBRnz+bkZ+KfyOExpUxTMR0Ow8nkkcE6IlsdEa9W/rI7gefud19+Sn1xYKwB9pdCdxIP1lPru/ZfjfA+iT8pw==
|
||||
"@next/env@15.3.2":
|
||||
version "15.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/env/-/env-15.3.2.tgz#7143eafa9b11cfdf3d3c7318b0facb9dfdb2948f"
|
||||
integrity sha512-xURk++7P7qR9JG1jJtLzPzf0qEvqCN0A/T3DXf8IPMKo9/6FfjxtEffRJIIew/bIL4T3C2jLLqBor8B/zVlx6g==
|
||||
|
||||
"@next/swc-darwin-x64@15.2.2":
|
||||
version "15.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.2.tgz#8562f6b51177aa30f3a6e95a8b3e0e176a6cb04f"
|
||||
integrity sha512-mJOUwp7al63tDpLpEFpKwwg5jwvtL1lhRW2fI1Aog0nYCPAhxbJsaZKdoVyPZCy8MYf/iQVNDuk/+i29iLCzIA==
|
||||
"@next/swc-darwin-arm64@15.3.2":
|
||||
version "15.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.2.tgz#1a7b36bf3c439f899065c878a580bc57a3630ec7"
|
||||
integrity sha512-2DR6kY/OGcokbnCsjHpNeQblqCZ85/1j6njYSkzRdpLn5At7OkSdmk7WyAmB9G0k25+VgqVZ/u356OSoQZ3z0g==
|
||||
|
||||
"@next/swc-linux-arm64-gnu@15.2.2":
|
||||
version "15.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.2.tgz#c2466cffc541f39ae4d435087c81f5899d401903"
|
||||
integrity sha512-5ZZ0Zwy3SgMr7MfWtRE7cQWVssfOvxYfD9O7XHM7KM4nrf5EOeqwq67ZXDgo86LVmffgsu5tPO57EeFKRnrfSQ==
|
||||
"@next/swc-darwin-x64@15.3.2":
|
||||
version "15.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.2.tgz#3742026344f49128cf1b0f43814c67e880db7361"
|
||||
integrity sha512-ro/fdqaZWL6k1S/5CLv1I0DaZfDVJkWNaUU3un8Lg6m0YENWlDulmIWzV96Iou2wEYyEsZq51mwV8+XQXqMp3w==
|
||||
|
||||
"@next/swc-linux-arm64-musl@15.2.2":
|
||||
version "15.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.2.tgz#24ed87fe47325597e986bd01c427efae53d6b677"
|
||||
integrity sha512-cgKWBuFMLlJ4TWcFHl1KOaVVUAF8vy4qEvX5KsNd0Yj5mhu989QFCq1WjuaEbv/tO1ZpsQI6h/0YR8bLwEi+nA==
|
||||
"@next/swc-linux-arm64-gnu@15.3.2":
|
||||
version "15.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.2.tgz#fb29d45c034e3d2eef89b0e2801d62eb86155823"
|
||||
integrity sha512-covwwtZYhlbRWK2HlYX9835qXum4xYZ3E2Mra1mdQ+0ICGoMiw1+nVAn4d9Bo7R3JqSmK1grMq/va+0cdh7bJA==
|
||||
|
||||
"@next/swc-linux-x64-gnu@15.2.2":
|
||||
version "15.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.2.tgz#0240f44530ca39c1fc899fabe8f33aa35d7e77da"
|
||||
integrity sha512-c3kWSOSsVL8rcNBBfOq1+/j2PKs2nsMwJUV4icUxRgGBwUOfppeh7YhN5s79enBQFU+8xRgVatFkhHU1QW7yUA==
|
||||
"@next/swc-linux-arm64-musl@15.3.2":
|
||||
version "15.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.2.tgz#396784ef312666600ab1ae481e34cb1f6e3ae730"
|
||||
integrity sha512-KQkMEillvlW5Qk5mtGA/3Yz0/tzpNlSw6/3/ttsV1lNtMuOHcGii3zVeXZyi4EJmmLDKYcTcByV2wVsOhDt/zg==
|
||||
|
||||
"@next/swc-linux-x64-musl@15.2.2":
|
||||
version "15.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.2.tgz#cca6ce8e9ec89afaa618673f0f8658682c30ff56"
|
||||
integrity sha512-PXTW9PLTxdNlVYgPJ0equojcq1kNu5NtwcNjRjHAB+/sdoKZ+X8FBu70fdJFadkxFIGekQTyRvPMFF+SOJaQjw==
|
||||
"@next/swc-linux-x64-gnu@15.3.2":
|
||||
version "15.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.2.tgz#ac01fda376878e02bc6b57d1e88ab8ceae9f868e"
|
||||
integrity sha512-uRBo6THWei0chz+Y5j37qzx+BtoDRFIkDzZjlpCItBRXyMPIg079eIkOCl3aqr2tkxL4HFyJ4GHDes7W8HuAUg==
|
||||
|
||||
"@next/swc-win32-arm64-msvc@15.2.2":
|
||||
version "15.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.2.tgz#08f621602ed53fa21ddf6f656160b9186860be15"
|
||||
integrity sha512-nG644Es5llSGEcTaXhnGWR/aThM/hIaz0jx4MDg4gWC8GfTCp8eDBWZ77CVuv2ha/uL9Ce+nPTfYkSLG67/sHg==
|
||||
"@next/swc-linux-x64-musl@15.3.2":
|
||||
version "15.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.2.tgz#327a5023003bcb3ca436efc08733f091bba2b1e8"
|
||||
integrity sha512-+uxFlPuCNx/T9PdMClOqeE8USKzj8tVz37KflT3Kdbx/LOlZBRI2yxuIcmx1mPNK8DwSOMNCr4ureSet7eyC0w==
|
||||
|
||||
"@next/swc-win32-x64-msvc@15.2.2":
|
||||
version "15.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.2.tgz#2072d69374f8c944134a5c5a80ce03ff84254cfa"
|
||||
integrity sha512-52nWy65S/R6/kejz3jpvHAjZDPKIbEQu4x9jDBzmB9jJfuOy5rspjKu4u77+fI4M/WzLXrrQd57hlFGzz1ubcQ==
|
||||
"@next/swc-win32-arm64-msvc@15.3.2":
|
||||
version "15.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.2.tgz#ce3a6588bd9c020960704011ab20bd0440026965"
|
||||
integrity sha512-LLTKmaI5cfD8dVzh5Vt7+OMo+AIOClEdIU/TSKbXXT2iScUTSxOGoBhfuv+FU8R9MLmrkIL1e2fBMkEEjYAtPQ==
|
||||
|
||||
"@next/swc-win32-x64-msvc@15.3.2":
|
||||
version "15.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.2.tgz#43cc36097ac27639e9024a5ceaa6e7727fa968c8"
|
||||
integrity sha512-aW5B8wOPioJ4mBdMDXkt5f3j8pUr9W8AnlX0Df35uRWNT1Y6RIybxjnSUe+PhM+M1bwgyY8PHLmXZC6zT1o5tA==
|
||||
|
||||
"@swc/counter@0.1.3":
|
||||
version "0.1.3"
|
||||
@@ -437,10 +447,10 @@ destroy@^1.2.0:
|
||||
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
|
||||
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
|
||||
|
||||
detect-libc@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
|
||||
integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==
|
||||
detect-libc@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8"
|
||||
integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==
|
||||
|
||||
dunder-proto@^1.0.1:
|
||||
version "1.0.1"
|
||||
@@ -802,12 +812,12 @@ negotiator@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a"
|
||||
integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==
|
||||
|
||||
next@^15.2.2:
|
||||
version "15.2.2"
|
||||
resolved "https://registry.yarnpkg.com/next/-/next-15.2.2.tgz#e3941a0e0e76cfe1880b57452807489e0546e3a2"
|
||||
integrity sha512-dgp8Kcx5XZRjMw2KNwBtUzhngRaURPioxoNIVl5BOyJbhi9CUgEtKDO7fx5wh8Z8vOVX1nYZ9meawJoRrlASYA==
|
||||
next@^15.2.3:
|
||||
version "15.3.2"
|
||||
resolved "https://registry.yarnpkg.com/next/-/next-15.3.2.tgz#97510629e38a058dd154782a5c2ec9c9ab94d0d8"
|
||||
integrity sha512-CA3BatMyHkxZ48sgOCLdVHjFU36N7TF1HhqAHLFOkV6buwZnvMI84Cug8xD56B9mCuKrqXnLn94417GrZ/jjCQ==
|
||||
dependencies:
|
||||
"@next/env" "15.2.2"
|
||||
"@next/env" "15.3.2"
|
||||
"@swc/counter" "0.1.3"
|
||||
"@swc/helpers" "0.5.15"
|
||||
busboy "1.6.0"
|
||||
@@ -815,15 +825,15 @@ next@^15.2.2:
|
||||
postcss "8.4.31"
|
||||
styled-jsx "5.1.6"
|
||||
optionalDependencies:
|
||||
"@next/swc-darwin-arm64" "15.2.2"
|
||||
"@next/swc-darwin-x64" "15.2.2"
|
||||
"@next/swc-linux-arm64-gnu" "15.2.2"
|
||||
"@next/swc-linux-arm64-musl" "15.2.2"
|
||||
"@next/swc-linux-x64-gnu" "15.2.2"
|
||||
"@next/swc-linux-x64-musl" "15.2.2"
|
||||
"@next/swc-win32-arm64-msvc" "15.2.2"
|
||||
"@next/swc-win32-x64-msvc" "15.2.2"
|
||||
sharp "^0.33.5"
|
||||
"@next/swc-darwin-arm64" "15.3.2"
|
||||
"@next/swc-darwin-x64" "15.3.2"
|
||||
"@next/swc-linux-arm64-gnu" "15.3.2"
|
||||
"@next/swc-linux-arm64-musl" "15.3.2"
|
||||
"@next/swc-linux-x64-gnu" "15.3.2"
|
||||
"@next/swc-linux-x64-musl" "15.3.2"
|
||||
"@next/swc-win32-arm64-msvc" "15.3.2"
|
||||
"@next/swc-win32-x64-msvc" "15.3.2"
|
||||
sharp "^0.34.1"
|
||||
|
||||
object-assign@^4:
|
||||
version "4.1.1"
|
||||
@@ -939,11 +949,16 @@ safe-buffer@5.2.1, safe-buffer@^5.0.1:
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
semver@^7.5.4, semver@^7.6.3:
|
||||
semver@^7.5.4:
|
||||
version "7.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
|
||||
integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
|
||||
|
||||
semver@^7.7.2:
|
||||
version "7.7.2"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58"
|
||||
integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
|
||||
|
||||
send@^1.0.0, send@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/send/-/send-1.1.0.tgz#4efe6ff3bb2139b0e5b2648d8b18d4dec48fc9c5"
|
||||
@@ -977,34 +992,36 @@ setprototypeof@1.2.0:
|
||||
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
|
||||
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
|
||||
|
||||
sharp@^0.33.5:
|
||||
version "0.33.5"
|
||||
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.5.tgz#13e0e4130cc309d6a9497596715240b2ec0c594e"
|
||||
integrity sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==
|
||||
sharp@^0.34.1:
|
||||
version "0.34.2"
|
||||
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.34.2.tgz#648bd639854dbe48047b0b420213c186d036b32d"
|
||||
integrity sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==
|
||||
dependencies:
|
||||
color "^4.2.3"
|
||||
detect-libc "^2.0.3"
|
||||
semver "^7.6.3"
|
||||
detect-libc "^2.0.4"
|
||||
semver "^7.7.2"
|
||||
optionalDependencies:
|
||||
"@img/sharp-darwin-arm64" "0.33.5"
|
||||
"@img/sharp-darwin-x64" "0.33.5"
|
||||
"@img/sharp-libvips-darwin-arm64" "1.0.4"
|
||||
"@img/sharp-libvips-darwin-x64" "1.0.4"
|
||||
"@img/sharp-libvips-linux-arm" "1.0.5"
|
||||
"@img/sharp-libvips-linux-arm64" "1.0.4"
|
||||
"@img/sharp-libvips-linux-s390x" "1.0.4"
|
||||
"@img/sharp-libvips-linux-x64" "1.0.4"
|
||||
"@img/sharp-libvips-linuxmusl-arm64" "1.0.4"
|
||||
"@img/sharp-libvips-linuxmusl-x64" "1.0.4"
|
||||
"@img/sharp-linux-arm" "0.33.5"
|
||||
"@img/sharp-linux-arm64" "0.33.5"
|
||||
"@img/sharp-linux-s390x" "0.33.5"
|
||||
"@img/sharp-linux-x64" "0.33.5"
|
||||
"@img/sharp-linuxmusl-arm64" "0.33.5"
|
||||
"@img/sharp-linuxmusl-x64" "0.33.5"
|
||||
"@img/sharp-wasm32" "0.33.5"
|
||||
"@img/sharp-win32-ia32" "0.33.5"
|
||||
"@img/sharp-win32-x64" "0.33.5"
|
||||
"@img/sharp-darwin-arm64" "0.34.2"
|
||||
"@img/sharp-darwin-x64" "0.34.2"
|
||||
"@img/sharp-libvips-darwin-arm64" "1.1.0"
|
||||
"@img/sharp-libvips-darwin-x64" "1.1.0"
|
||||
"@img/sharp-libvips-linux-arm" "1.1.0"
|
||||
"@img/sharp-libvips-linux-arm64" "1.1.0"
|
||||
"@img/sharp-libvips-linux-ppc64" "1.1.0"
|
||||
"@img/sharp-libvips-linux-s390x" "1.1.0"
|
||||
"@img/sharp-libvips-linux-x64" "1.1.0"
|
||||
"@img/sharp-libvips-linuxmusl-arm64" "1.1.0"
|
||||
"@img/sharp-libvips-linuxmusl-x64" "1.1.0"
|
||||
"@img/sharp-linux-arm" "0.34.2"
|
||||
"@img/sharp-linux-arm64" "0.34.2"
|
||||
"@img/sharp-linux-s390x" "0.34.2"
|
||||
"@img/sharp-linux-x64" "0.34.2"
|
||||
"@img/sharp-linuxmusl-arm64" "0.34.2"
|
||||
"@img/sharp-linuxmusl-x64" "0.34.2"
|
||||
"@img/sharp-wasm32" "0.34.2"
|
||||
"@img/sharp-win32-arm64" "0.34.2"
|
||||
"@img/sharp-win32-ia32" "0.34.2"
|
||||
"@img/sharp-win32-x64" "0.34.2"
|
||||
|
||||
side-channel-list@^1.0.0:
|
||||
version "1.0.0"
|
||||
|
||||
@@ -122,30 +122,6 @@
|
||||
(some change-types-supporting-rollback (mapcat keys changes))
|
||||
(contains? change-set :rollback)))
|
||||
|
||||
(def ^:private change-types-requiring-preconditions
|
||||
#{:createTable
|
||||
:dropTable
|
||||
:addColumn
|
||||
:dropColumn
|
||||
:createIndex
|
||||
:dropIndex
|
||||
:addForeignKeyConstraint
|
||||
:dropForeignKeyConstraint})
|
||||
|
||||
(defn- precondition-present-when-required?
|
||||
"Ensures that certain changeSet types include a preCondition. The intent is for the preCondition to ensure that the changeSet is
|
||||
idempotent by checking whether the table/column/index/etc does not exist before trying to create it. (Or inversely, that it does
|
||||
exist before trying to drop it.)
|
||||
|
||||
We don't currently assert on the structure of the preCondition to provide flexibility if there are cases where idempotence is not
|
||||
desired."
|
||||
[{:keys [id changes] :as change-set}]
|
||||
(or
|
||||
(int? id)
|
||||
(< (major-version id) 51)
|
||||
(not-any? change-types-requiring-preconditions (mapcat keys changes))
|
||||
(contains? change-set :preConditions)))
|
||||
|
||||
(defn- disallow-delete-cascade-with-add-column
|
||||
"Returns false if addColumn changeSet uses deleteCascade. See Metabase issue #14321"
|
||||
[{:keys [changes]}]
|
||||
@@ -160,7 +136,6 @@
|
||||
(s/def ::change-set
|
||||
(s/and
|
||||
rollback-present-when-required?
|
||||
precondition-present-when-required?
|
||||
disallow-delete-cascade-with-add-column
|
||||
(s/keys :req-un [::id ::author ::changes ::comment]
|
||||
:opt-un [::preConditions])))
|
||||
|
||||
@@ -252,35 +252,6 @@
|
||||
(testing "change types with automatic rollback support are allowed"
|
||||
(is (= :ok (validate (mock-change-set :id "v49.2024-01-01T10:30:00" :changes [(mock-add-column-changes)]))))))
|
||||
|
||||
(deftest require-precondition-test
|
||||
(testing "certain change types require preConditions"
|
||||
(is (thrown-with-msg?
|
||||
clojure.lang.ExceptionInfo
|
||||
#"Invalid change set\."
|
||||
(validate (mock-change-set
|
||||
:id "v51.2024-01-01T10:30:00"
|
||||
:changes [(mock-create-table-changes)])))))
|
||||
|
||||
(testing "other change types are exempt"
|
||||
(is (= :ok
|
||||
(validate
|
||||
(mock-change-set
|
||||
:changes
|
||||
[{:sql {:dbms "h2", :sql "1"}}])))))
|
||||
|
||||
(testing "nil preConditions is allowed"
|
||||
(is (= :ok
|
||||
(validate (mock-change-set
|
||||
:id "v51.2024-01-01T10:30:00"
|
||||
:changes [(mock-create-table-changes)]
|
||||
:preConditions nil)))))
|
||||
|
||||
(testing "changeSets prior to v51 are exempt"
|
||||
(is (= :ok
|
||||
(validate (mock-change-set
|
||||
:id "v50.2024-01-01T10:30:00"
|
||||
:changes [(mock-create-table-changes)]))))))
|
||||
|
||||
(deftest disallow-deletecascade-in-addcolumn-test
|
||||
(testing "addColumn with deleteCascade fails"
|
||||
(is (thrown-with-msg?
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
(ns src.dev.add-load
|
||||
(ns dev.add-load
|
||||
(:require [clojure.walk :as walk]
|
||||
[dev.with-perm :as perm]
|
||||
[metabase.util.malli :as mu]))
|
||||
@@ -28,9 +28,9 @@
|
||||
(def ^:private NormalizedTuple [:tuple :keyword BindingForm :map])
|
||||
|
||||
(def ^:private Tuple [:or
|
||||
[:tuple :keyword]
|
||||
[:tuple :keyword BindingForm]
|
||||
NormalizedTuple])
|
||||
[:tuple :keyword]
|
||||
[:tuple :keyword BindingForm]
|
||||
NormalizedTuple])
|
||||
|
||||
(mu/defn- normalize-tuple :- NormalizedTuple
|
||||
[next-kw-thunk :- fn? t :- Tuple]
|
||||
@@ -61,7 +61,6 @@
|
||||
;; PUBLIC API ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
||||
(mu/defn from-script :- :map
|
||||
"Takes a script and inserts the entities into the database. Returns a map of the ids of the entities inserted."
|
||||
[script :- [:sequential Tuple]]
|
||||
@@ -105,5 +104,4 @@
|
||||
[:model/DashboardCard :? {:card_id :?/card-id :dashboard_id :?/dash-id}]
|
||||
[:model/Card {:?/card-id :id} {:name "My Card (w/ dashboard)"}]
|
||||
[:model/Dashboard {:?/dash-id :id} {:name "My Dashboard"}]
|
||||
[:model/DashboardCard :? {:card_id :?/card-id :dashboard_id :?/dash-id}]])
|
||||
)
|
||||
[:model/DashboardCard :? {:card_id :?/card-id :dashboard_id :?/dash-id}]]))
|
||||
|
||||
@@ -49,6 +49,7 @@ Metabase's reference documentation.
|
||||
- [Backing up Metabase](./installation-and-operation/backing-up-metabase-application-data.md)
|
||||
- [Migrating to a production application database](./installation-and-operation/migrating-from-h2.md)
|
||||
- [Monitoring your Metabase](./installation-and-operation/monitoring-metabase.md)
|
||||
- [Development instances](./installation-and-operation/development-instance.md)
|
||||
- [Serialization](./installation-and-operation/serialization.md)
|
||||
- [Commands](./installation-and-operation/commands.md)
|
||||
- [Supported browsers](./installation-and-operation/supported-browsers.md)
|
||||
@@ -138,11 +139,12 @@ Metabase's reference documentation.
|
||||
- [Basic actions](./actions/basic.md)
|
||||
- [Custom actions](./actions/custom.md)
|
||||
|
||||
### Organization
|
||||
### Exploration and organization
|
||||
|
||||
- [Organization overview](./exploration-and-organization/start.md)
|
||||
- [Basic exploration](./exploration-and-organization/exploration.md)
|
||||
- [Collections](./exploration-and-organization/collections.md)
|
||||
- [Keyboard shortcuts](./exploration-and-organization/keyboard-shortcuts.md)
|
||||
- [History](./exploration-and-organization/history.md)
|
||||
- [Trash](./exploration-and-organization/delete-and-restore.md)
|
||||
- [Data reference](./exploration-and-organization/data-model-reference.md)
|
||||
@@ -293,3 +295,5 @@ Data jargon explained.
|
||||
### [Metabase Experts](https://www.metabase.com/partners/)
|
||||
|
||||
If you’d like more technical resources to set up your data stack with Metabase, connect with a [Metabase Expert](https://www.metabase.com/partners/).
|
||||
|
||||
<!-- docs bump 1 -->
|
||||
|
||||
@@ -10,6 +10,8 @@ title: Introduction to actions
|
||||
|
||||
## What are actions?
|
||||
|
||||
> Want to edit data directly in your database through Metabase and build data apps? Join our [Early Access Program](https://form.fillout.com/t/j9cymCcLGVus) to explore this new feature, try it with your team, and help shape what we build next.
|
||||
|
||||
**Actions** are entities in Metabase that let you build custom forms and business logic.
|
||||
|
||||
Actions let you write parameterized SQL that writes back to your database. Actions can be attached to [buttons on dashboards](../dashboards/actions.md) to create custom workflows. You can even publicly share the parameterized forms that actions generate to collect data.
|
||||
|
||||
3847
docs/api.html
@@ -12,6 +12,7 @@ clojure -M:doc:ee config-template
|
||||
|
||||
The template lists example `database`, `user`, and `settings` sections for the [config file](./config-file.md).
|
||||
|
||||
|
||||
```yaml
|
||||
# A config file template for Metabase.
|
||||
# You'll need to update (or remove) the `users` and `databases` sections.
|
||||
@@ -26,48 +27,49 @@ The template lists example `database`, `user`, and `settings` sections for the [
|
||||
version: 1
|
||||
config:
|
||||
users:
|
||||
- first_name: First
|
||||
last_name: Person
|
||||
password: metabot1
|
||||
email: first@example.com
|
||||
- first_name: Normal
|
||||
last_name: Person
|
||||
password: metabot1
|
||||
email: normal@example.com
|
||||
- first_name: Admin
|
||||
last_name: Person
|
||||
password: metabot1
|
||||
is_superuser: true
|
||||
email: admin@example.com
|
||||
- first_name: First
|
||||
last_name: Person
|
||||
password: metabot1
|
||||
email: first@example.com
|
||||
- first_name: Normal
|
||||
last_name: Person
|
||||
password: metabot1
|
||||
email: normal@example.com
|
||||
- first_name: Admin
|
||||
last_name: Person
|
||||
password: metabot1
|
||||
is_superuser: true
|
||||
email: admin@example.com
|
||||
databases:
|
||||
- name: Sample PostgreSQL
|
||||
engine: postgres
|
||||
details:
|
||||
host: postgres-data
|
||||
port: 5432
|
||||
user: metabase
|
||||
password: metasample123
|
||||
dbname: sample
|
||||
- name: Sample MySQL
|
||||
engine: mysql
|
||||
details:
|
||||
host: mysql-data
|
||||
port: 3306
|
||||
user: metabase
|
||||
password: metasample123
|
||||
dbname: sample
|
||||
- name: Sample PostgreSQL
|
||||
engine: postgres
|
||||
details:
|
||||
host: postgres-data
|
||||
port: 5432
|
||||
user: metabase
|
||||
password: metasample123
|
||||
dbname: sample
|
||||
- name: Sample MySQL
|
||||
engine: mysql
|
||||
details:
|
||||
host: mysql-data
|
||||
port: 3306
|
||||
user: metabase
|
||||
password: metasample123
|
||||
dbname: sample
|
||||
api-keys:
|
||||
- name: Admin API key
|
||||
group: admin
|
||||
creator: first@example.com
|
||||
key: mb_firsttestapikey123
|
||||
- name: All Users API key
|
||||
group: all-users
|
||||
creator: first@example.com
|
||||
key: mb_secondtestapikey456
|
||||
- name: Admin API key
|
||||
group: admin
|
||||
creator: first@example.com
|
||||
key: mb_firsttestapikey123
|
||||
- name: All Users API key
|
||||
group: all-users
|
||||
creator: first@example.com
|
||||
key: mb_secondtestapikey456
|
||||
settings:
|
||||
admin-email: null
|
||||
aggregated-query-row-limit: null
|
||||
ai-proxy-base-url: http://localhost:8000
|
||||
allowed-iframe-hosts: |-
|
||||
youtube.com,
|
||||
youtu.be,
|
||||
@@ -101,7 +103,6 @@ config:
|
||||
application-name: Metabase
|
||||
attachment-row-limit: null
|
||||
attachment-table-row-limit: 20
|
||||
backfill-entity-ids-repeat-ms: 3000
|
||||
bcc-enabled: true
|
||||
breakout-bin-width: 10.0
|
||||
breakout-bins-num: 8
|
||||
@@ -147,7 +148,7 @@ config:
|
||||
gsheets: null
|
||||
health-check-logging-enabled: true
|
||||
help-link: metabase
|
||||
help-link-custom-destination: https://www.metabase.com/help-premium
|
||||
help-link-custom-destination: https://www.metabase.com/help/premium
|
||||
humanization-strategy: simple
|
||||
jdbc-data-warehouse-max-connection-pool-size: 15
|
||||
jwt-attribute-email: email
|
||||
@@ -160,7 +161,7 @@ config:
|
||||
jwt-identity-provider-uri: null
|
||||
jwt-shared-secret: null
|
||||
jwt-user-provisioning-enabled: true
|
||||
landing-page: ""
|
||||
landing-page: ''
|
||||
landing-page-illustration: default
|
||||
landing-page-illustration-custom: null
|
||||
ldap-attribute-email: mail
|
||||
@@ -191,8 +192,10 @@ config:
|
||||
no-data-illustration-custom: null
|
||||
no-object-illustration: default
|
||||
no-object-illustration-custom: null
|
||||
non-table-chart-generated: false
|
||||
not-behind-proxy: false
|
||||
notification-link-base-url: null
|
||||
notification-system-event-thread-pool-size: 5
|
||||
notification-thread-pool-size: 3
|
||||
persisted-model-refresh-cron-schedule: 0 0 0/6 * * ? *
|
||||
persisted-models-enabled: false
|
||||
@@ -226,7 +229,9 @@ config:
|
||||
saml-slo-enabled: false
|
||||
saml-user-provisioning-enabled: true
|
||||
scim-enabled: null
|
||||
sdk-encryption-validation-key: null
|
||||
search-engine: in-place
|
||||
search-language: null
|
||||
search-typeahead-enabled: true
|
||||
send-new-sso-user-admin-email: null
|
||||
session-cookie-samesite: lax
|
||||
@@ -256,5 +261,6 @@ config:
|
||||
unaggregated-query-row-limit: null
|
||||
update-channel: latest
|
||||
uploads-settings: null
|
||||
use-tenants: false
|
||||
user-visibility: all
|
||||
```
|
||||
|
||||
@@ -71,6 +71,13 @@ Maximum number of rows to return for aggregated queries via the API.
|
||||
|
||||
Must be less than 1048575. See also MB_UNAGGREGATED_QUERY_ROW_LIMIT.
|
||||
|
||||
### `MB_AI_PROXY_BASE_URL`
|
||||
|
||||
- Type: string
|
||||
- Default: `http://localhost:8000`
|
||||
|
||||
URL for the a AI Proxy service.
|
||||
|
||||
### `MB_ALLOWED_IFRAME_HOSTS`
|
||||
|
||||
- Type: string
|
||||
@@ -120,7 +127,7 @@ Middleware that enforces validation of the client via the request header X-Metab
|
||||
If the header is available, then it's validated against MB_API_KEY.
|
||||
When it matches, the request continues; otherwise it's blocked with a 403 Forbidden response.
|
||||
MB_API_KEY is used only for /notify endpoints and isn't the same as Metabase API keys
|
||||
used for authenticating other API requests. MP_API_KEY can be an arbitrary string.
|
||||
used for authenticating other API requests. MB_API_KEY can be an arbitrary string.
|
||||
|
||||
### `MB_APPLICATION_COLORS`
|
||||
|
||||
@@ -290,8 +297,8 @@ Identify when new versions of Metabase are available.
|
||||
- Type: boolean
|
||||
- Default: `true`
|
||||
|
||||
Whether to (asynchronously) sync newly created Databases during config-from-file initialization. By default, true, but you can disable
|
||||
this behavior if you want to sync it manually or use SerDes to populate its data model.
|
||||
Whether to (asynchronously) sync newly created Databases during config-from-file initialization. By default, true,
|
||||
but you can disable this behavior if you want to sync it manually or use SerDes to populate its data model.
|
||||
|
||||
### `MB_CUSTOM_FORMATTING`
|
||||
|
||||
@@ -345,8 +352,8 @@ Consider metabase.driver/can-connect? / can-connect-with-details? to have failed
|
||||
successfully connect after this many milliseconds. By default, this is 10 seconds.
|
||||
|
||||
Timeout in milliseconds for connecting to databases, both Metabase application database and data connections.
|
||||
In case you're connecting via an SSH tunnel and run into a timeout, you might consider increasing this value
|
||||
as the connections via tunnels have more overhead than connections without.
|
||||
In case you're connecting via an SSH tunnel and run into a timeout, you might consider increasing this value as the
|
||||
connections via tunnels have more overhead than connections without.
|
||||
|
||||
### `MB_DB_QUERY_TIMEOUT_MINUTES`
|
||||
|
||||
@@ -671,7 +678,7 @@ Keyword setting to control whitelabeling of the help link. Valid values are `:me
|
||||
> Only available on Metabase [Pro](https://www.metabase.com/product/pro) and [Enterprise](https://www.metabase.com/product/enterprise) plans.
|
||||
|
||||
- Type: string
|
||||
- Default: `https://www.metabase.com/help-premium`
|
||||
- Default: `https://www.metabase.com/help/premium`
|
||||
- [Configuration file name](./config-file.md): `help-link-custom-destination`
|
||||
|
||||
Custom URL for the help link.
|
||||
@@ -694,9 +701,11 @@ Maximum size of the c3p0 connection pool.
|
||||
|
||||
Change this to a higher value if you notice that regular usage consumes all or close to all connections.
|
||||
|
||||
When all connections are in use then Metabase will be slower to return results for queries, since it would have to wait for an available connection before processing the next query in the queue.
|
||||
When all connections are in use then Metabase will be slower to return results for queries, since it would have to
|
||||
wait for an available connection before processing the next query in the queue.
|
||||
|
||||
For setting the maximum, see [MB_APPLICATION_DB_MAX_CONNECTION_POOL_SIZE](#mb_application_db_max_connection_pool_size).
|
||||
For setting the maximum,
|
||||
see [MB_APPLICATION_DB_MAX_CONNECTION_POOL_SIZE](#mb_application_db_max_connection_pool_size).
|
||||
|
||||
### `MB_JWT_ATTRIBUTE_EMAIL`
|
||||
|
||||
@@ -1082,6 +1091,15 @@ Options for displaying the illustration when there are no results after searchin
|
||||
|
||||
The custom illustration for when there are no results after searching.
|
||||
|
||||
### `MB_NON_TABLE_CHART_GENERATED`
|
||||
|
||||
- Type: boolean
|
||||
- Default: `false`
|
||||
- [Exported as](../installation-and-operation/serialization.md): `non-table-chart-generated`.
|
||||
- [Configuration file name](./config-file.md): `non-table-chart-generated`
|
||||
|
||||
Whether a non-table chart has already been generated. Required for analytics to track instance activation journey.
|
||||
|
||||
### `MB_NOT_BEHIND_PROXY`
|
||||
|
||||
- Type: boolean
|
||||
@@ -1101,6 +1119,13 @@ By default "Site Url" is used in notification links, but can be overridden.
|
||||
The base URL where dashboard notitification links will point to instead of the Metabase base URL.
|
||||
Only applicable for users who utilize interactive embedding and subscriptions.
|
||||
|
||||
### `MB_NOTIFICATION_SYSTEM_EVENT_THREAD_POOL_SIZE`
|
||||
|
||||
- Type: integer
|
||||
- Default: `5`
|
||||
|
||||
The size of the thread pool used to send system event notifications.
|
||||
|
||||
### `MB_NOTIFICATION_THREAD_POOL_SIZE`
|
||||
|
||||
- Type: integer
|
||||
@@ -1408,6 +1433,13 @@ don't have one.
|
||||
|
||||
Is SCIM currently enabled?
|
||||
|
||||
### `MB_SDK_ENCRYPTION_VALIDATION_KEY`
|
||||
|
||||
- Type: string
|
||||
- Default: `null`
|
||||
|
||||
Used for encrypting and checking whether SDK requests are signed.
|
||||
|
||||
### `MB_SEARCH_ENGINE`
|
||||
|
||||
- Type: keyword
|
||||
@@ -1415,6 +1447,14 @@ Is SCIM currently enabled?
|
||||
|
||||
Which engine to use when performing search. Supported values are :in-place and :appdb.
|
||||
|
||||
### `MB_SEARCH_LANGUAGE`
|
||||
|
||||
- Type: string
|
||||
- Default: `null`
|
||||
|
||||
When using the appdb engine against postgresql, override the language used for stemming in to_tsvector.
|
||||
Value must be a valid configured langauge option in your database such as 'english' or 'simple'.
|
||||
|
||||
### `MB_SEARCH_TYPEAHEAD_ENABLED`
|
||||
|
||||
- Type: boolean
|
||||
@@ -1728,6 +1768,16 @@ Upload settings.
|
||||
|
||||
Prefix for upload table names.
|
||||
|
||||
### `MB_USE_TENANTS`
|
||||
|
||||
> Only available on Metabase [Pro](https://www.metabase.com/product/pro) and [Enterprise](https://www.metabase.com/product/enterprise) plans.
|
||||
|
||||
- Type: boolean
|
||||
- Default: `false`
|
||||
- [Configuration file name](./config-file.md): `use-tenants`
|
||||
|
||||
Turn on the Tenants feature, allowing users to be assigned to a particular Tenant.
|
||||
|
||||
### `MB_USER_VISIBILITY`
|
||||
|
||||
> Only available on Metabase [Pro](https://www.metabase.com/product/pro) and [Enterprise](https://www.metabase.com/product/enterprise) plans.
|
||||
|
||||
@@ -2,23 +2,50 @@
|
||||
title: Metabase logs
|
||||
redirect_from:
|
||||
- /docs/latest/operations-guide/log-configuration
|
||||
summary: Configure how much information Metabase displays in its logs.
|
||||
---
|
||||
|
||||
# Metabase logs
|
||||
|
||||
Metabase logs quite a bit of information by default. It uses [Log4j 2][log4j] under the hood, so you can configure how much information Metabase logs.
|
||||
Metabase logs quite a bit of information by default. Metabase uses [Log4j 2][https://logging.apache.org/log4j/2.x/] under the hood, so you can configure how much information Metabase logs.
|
||||
|
||||
## Configuring Logging Level
|
||||
## View and download Metabase logs
|
||||
|
||||
Here is Metabase's [default logging configuration][default-log-config]. You can override this XML file and tell Metabase to use your own logging configuration file by passing a `-Dlog4j.configurationFile` argument when running Metabase. For example, if your custom XML file is found in `/path/to/custom/log4j2.xml`, you can use it like so:
|
||||
You can find Metabase logs in **Admin settings** > **Troubleshooting** > **Logs**. You can filter the logs by keywords (for example, "sync") and download them as a text file.
|
||||
|
||||
```
|
||||
java -Dlog4j.configurationFile=file:/path/to/custom/log4j2.xml -jar metabase.jar
|
||||
If you're running self-hosted Metabase, you'll also be able see the logs in the terminal.
|
||||
|
||||
## How to read Metabase logs
|
||||
|
||||
See [How to read logs][../troubleshooting-guide/server-logs.md].
|
||||
|
||||
## Configuring logging Level
|
||||
|
||||
Metabase uses [log4j](https://logging.apache.org/log4j/2.x/)for logging configuration. Here is Metabase's [default logging configuration](https://github.com/metabase/metabase/blob/master/resources/log4j2.xml). Some troubleshooting tasks might require you to override this logging configuration (for example, to see more details about errors). See Log4j's docs for info on [log levels](https://logging.apache.org/log4j/2.x/manual/customloglevels.html).
|
||||
|
||||
### Temporary override logging configuration
|
||||
|
||||
To temporarily adjust the logging configuration, go to **Admin settings** > **Troubleshooting** > **Logs** and click on **Customize log levels**.
|
||||
|
||||
You can select from log level presets for common troubleshooting tasks (for example, troubleshooting sync issues), or provide your own configuration as a JSON. For example, here's an override configuration that increases logging for troubleshooting linked filters:
|
||||
|
||||
```json
|
||||
{
|
||||
"metabase.parameters.chain-filter": "debug",
|
||||
"metabase.parameters.chain-filter.dedupe-joins": "debug"
|
||||
}
|
||||
```
|
||||
|
||||
To get started customizing the logs, make a [copy of the default `log4j2.xml` file][default-log-config] and adjust it to meet your needs. You'll need to restart Metabase for changes to the file to take effect. See Log4j's docs for info on [log levels][levels].
|
||||
The override from Admin settings will be temporary. You can select for how long the override should be in place (e.g., 60 minutes). When the override times out, the logging configuration will revert to the default logging configuration (or a custom configuration if you're using a [custom log file](#use-a-custom-log-configuration-file)).
|
||||
|
||||
You can set different log levels for different areas of the application, e.g.,:
|
||||
### Use a custom log configuration file
|
||||
|
||||
You can point Metabase to a custom log configuration file.
|
||||
|
||||
1. Make a [copy of the default `log4j2.xml` file](https://github.com/metabase/metabase/blob/master/resources/log4j2.xml)
|
||||
2. Adjust it to meet your needs.
|
||||
|
||||
You can set different log levels for different areas of the application, e.g.,:
|
||||
|
||||
```
|
||||
<Loggers>
|
||||
@@ -37,9 +64,21 @@ You can set different log levels for different areas of the application, e.g.,:
|
||||
</Loggers>
|
||||
```
|
||||
|
||||
Check out [How to read the logs][read-logs].
|
||||
3. Stop your Metabase and start it again using the custom log configuration file:
|
||||
|
||||
## Jetty logs
|
||||
- If you're running Metabase in Docker, you can point Metabase to your custom log file using an environment variable, `JAVA_OPTS=-Dlog4j.configurationFile=file:/path/to/custom/log4j2.xml`:
|
||||
|
||||
```
|
||||
docker run -p 3000:3000 -v $PWD/my_log4j2.xml:/tmp/my_log4j2.xml -e JAVA_OPTS=-Dlog4j.configurationFile=file:/tmp/my_log4j2.xml metabase/metabase`
|
||||
```
|
||||
|
||||
- If you're running Metabase as a JAR file, you can pass a `-Dlog4j.configurationFile` argument. For example, if your custom XML file is found in `/path/to/custom/log4j2.xml`, you can use it like so:
|
||||
|
||||
```
|
||||
java -Dlog4j.configurationFile=file:/path/to/custom/log4j2.xml -jar metabase.jar
|
||||
```
|
||||
|
||||
## Configure Jetty logs
|
||||
|
||||
You can configure Metabase's web server to provide more detail in the logs by setting the log level to `DEBUG`. Just keep in mind that Jetty's debug logs can be really chatty, which can make it difficult to find the data you're looking for.
|
||||
|
||||
@@ -49,26 +88,25 @@ To get Jetty logs, add the following lines to the Log4J2 XML file in the <Logger
|
||||
<Logger name="org.eclipse.jetty" level="DEBUG"/>
|
||||
```
|
||||
|
||||
## Using Log4j 2 with Docker
|
||||
## Configure how logs are displayed
|
||||
|
||||
Before running the Metabase Docker image, you'll need to pass the custom `log4j.configurationFile` argument. Add a `JAVA_OPTS=-Dlog4j.configurationFile=file:/path/to/custom/log4j2.xml` to the environment variables of the container, like this:
|
||||
### Turn off emojis in logs
|
||||
|
||||
By default Metabase will include emoji characters in logs, like this:
|
||||
|
||||
```
|
||||
docker run -p 3000:3000 -v $PWD/my_log4j2.xml:/tmp/my_log4j2.xml -e JAVA_OPTS=-Dlog4j.configurationFile=file:/tmp/my_log4j2.xml metabase/metabase`
|
||||
2025-06-10 21:43:00,243 INFO sync.analyze :: classify-tables Analyzed [*****************************************·········] 😊 84% Table 6 ''PUBLIC.ACCOUNTS'' {mb-quartz-job-type=SyncAndAnalyzeDatabase}
|
||||
2025-06-10 21:43:00,244 INFO sync.analyze :: classify-tables Analyzed [***********************************************···] 😎 96% Table 2 ''PUBLIC.ORDERS'' {mb-quartz-job-type=SyncAndAnalyzeDatabase}
|
||||
|
||||
```
|
||||
|
||||
## Disable emoji or colorized logging
|
||||
|
||||
By default Metabase will include emoji characters in logs. You can disable emoji by using the `MB_EMOJI_IN_LOGS` environment variable:
|
||||
|
||||
### Configuring Emoji Logging
|
||||
You can disable emoji using the [`MB_EMOJI_IN_LOGS` environment variable](../configuring-metabase/environment-variables.md#mb_emoji_in_logs):
|
||||
|
||||
```
|
||||
export MB_EMOJI_IN_LOGS="false"
|
||||
java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar
|
||||
```
|
||||
|
||||
[default-log-config]: https://github.com/metabase/metabase/blob/master/resources/log4j2.xml
|
||||
[levels]: https://logging.apache.org/log4j/2.x/manual/customloglevels.html
|
||||
[log4j]: https://logging.apache.org/log4j/2.x/
|
||||
[read-logs]: ../troubleshooting-guide/server-logs.md
|
||||
### Turn off colorized logs
|
||||
|
||||
By default, Metabase will use color when displaying logs (both in the Admin **Logs** and in the terminal). You can disable colorized logs using the [`MB_COLORIZE_LOGS` environment variable](../configuring-metabase/environment-variables.md#mb_colorize_logs).
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Dashboard filters
|
||||
summary: Make your dashboards do more with filters and parameters. Instead of creating a bunch of similar dashboards, just add widgets to change variables.
|
||||
redirect_from:
|
||||
- /docs/latest/users-guide/08-dashboard-filters
|
||||
---
|
||||
@@ -27,18 +28,23 @@ Metabase will display the filter only if the filter is connected to a card on th
|
||||
|
||||
## Filter and parameter types
|
||||
|
||||
The type of filter or parameter widget you choose will determine how the widget works, as well as which fields you’ll be able to filter your cards by.
|
||||
The type of filter or parameter widget you choose determines how the widget works, including which fields you'll be able to filter your cards by.
|
||||
|
||||
### Filter widgets
|
||||
|
||||
**Filters** determine what data to show. For example, a date filter might show only data from the last 30 days, or a category filter might show only specific product categories.
|
||||
|
||||
- [Date picker](#date-picker-filters)
|
||||
- [Location](#location-filters)
|
||||
- [ID](#id-filter)
|
||||
- [Number](#number-filter)
|
||||
- [Text or category](#text-or-category-filter)
|
||||
- [Boolean](#boolean-filter)
|
||||
|
||||
### Parameter widgets
|
||||
|
||||
**Parameters** determine how to show the data. The time grouping parameter, for example, changes the granularity of time-based visualizations (like showing data by month instead of by day) without removing any data points.
|
||||
|
||||
- [Time grouping](#time-grouping-parameter)
|
||||
|
||||
## Date picker filters
|
||||
@@ -108,6 +114,10 @@ A flexible filter type that will let you create either a dropdown menu or an inp
|
||||
- **Starts with**. Match values that begin with the entered text.
|
||||
- **Ends with**. Match values that end with the entered text.
|
||||
|
||||
## Boolean filter
|
||||
|
||||
A boolean filter allows people to filter data based on true/false values.
|
||||
|
||||
## Connecting a filter or parameter widget to dashboard cards
|
||||
|
||||
Dashboard widgets apply across all [dashboard tabs](./introduction.md#dashboard-tabs), though they'll only be displayed when a tab has cards connected to the widget.
|
||||
@@ -248,13 +258,19 @@ By default, each time you change the value in a filter on a dashboard, the dashb
|
||||
|
||||
If a dashboard is particularly large or slow, or you have multiple filters that you want to adjust before the dashboard refreshes its results, you may want to tell Metabase when to apply those filters and refresh the dashboard.
|
||||
|
||||
To turn off the automatic application of filters, click on the info **i** icon, and toggle the **Auto-apply filters** option. With auto-apply turned off, each time you change a value in a filter, you'll need to click the **Apply** button to refresh the dashboard with the new filter value.
|
||||
To turn off the automatic application of filters.
|
||||
|
||||
1. Click on the three-dot menu **...**.
|
||||
2. Select **Edit settings**.
|
||||
3. In the **General** section, toggle off **Auto-apply filters**.
|
||||
|
||||
With auto-apply turned off, each time you change a value in a filter, you'll need to click the **Apply** button to refresh the dashboard with the new filter value.
|
||||
|
||||

|
||||
|
||||
## Using filter widgets
|
||||
|
||||
Once you’ve added a filter to your dashboard, just click on the filter widget to select a value and activate the filter. To stop filtering, just click the blue X.
|
||||
Once you've added a filter to your dashboard, just click on the filter widget to select a value and activate the filter. To stop filtering, just click the blue X.
|
||||
|
||||
Your active filter will only apply to your view of the dashboard. If someone else is viewing the same dashboard link at the same time, they won't see your filter.
|
||||
|
||||
|
||||
BIN
docs/dashboards/images/add-data.png
Normal file
|
After Width: | Height: | Size: 258 KiB |
|
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 360 KiB After Width: | Height: | Size: 472 KiB |
BIN
docs/dashboards/images/edit-visualization.png
Normal file
|
After Width: | Height: | Size: 167 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 194 KiB |
BIN
docs/dashboards/images/editor-orders-by-product-category.png
Normal file
|
After Width: | Height: | Size: 208 KiB |
|
Before Width: | Height: | Size: 481 KiB After Width: | Height: | Size: 234 KiB |
|
Before Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 35 KiB |
BIN
docs/dashboards/images/set-to-bar-chart.png
Normal file
|
After Width: | Height: | Size: 232 KiB |
BIN
docs/dashboards/images/settings-sidebar.png
Normal file
|
After Width: | Height: | Size: 301 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 220 KiB |
BIN
docs/dashboards/images/visualize-another-way.png
Normal file
|
After Width: | Height: | Size: 65 KiB |
@@ -231,18 +231,24 @@ You can change the width of a dashboard by going into the three dots menu in the
|
||||
|
||||
You can change a card's visualization settings (to add a goal line, for example). Changing a card's visualization settings will only affect how the question appears on that dashboard card; these changes won't affect the original question's visualization settings.
|
||||
|
||||
Click on the **pencil** icon to enter dashboard edit mode, hover over the question you want to edit, and click on the **palette** icon to edit a card's visualization's settings.
|
||||
Click on the **pencil** icon to enter dashboard edit mode, hover over the question you want to edit, and click on the **pencil** icon or **palette** icon (depending on the chart type) to edit a card's visualization's settings.
|
||||
|
||||

|
||||
|
||||
If you clicked the pencil icon, look for **Settings** button in the bottom right.
|
||||
|
||||

|
||||
|
||||
You can also [add more data to the chart](./multiple-series.md).
|
||||
|
||||
### Hiding a card when it doesn't return results
|
||||
|
||||
One neat thing to call out: if you have a question card that rarely returns results, but you still want to include that card in your dashboard because you want to know when the question _does_ return results, you can tell Metabase to hide the card unless it returns at least one row of data.
|
||||
|
||||
When in dashboard edit mode, click on the **Visualization settings** for the card.
|
||||
|
||||
- If the card displays a table, the option is in the **Columns** tab.
|
||||
- If the card displays a chart, the option is in the **Display** tab.
|
||||
- For tables, the option is in the **Columns** tab.
|
||||
- For other charts, the option is in the **Display** tab.
|
||||
|
||||
Toggle the option **Hide this card if there are no results**. When you turn on this option, the query will still run in the background, but the dashboard won't display the card. If the query returns results, the dashboard will display the card, moving the other cards around to make room for it according to how you've arranged the cards in dashboard edit mode.
|
||||
|
||||
@@ -252,11 +258,18 @@ If you want to revert a dashboard card to its original visualization settings (i
|
||||
|
||||
1. Go to your dashboard and click the **pencil icon** to go into edit mode.
|
||||
2. Hover over the card (question) that you want to edit.
|
||||
3. Click the **palette icon** to bring up the visualization settings for that card.
|
||||
4. Click **Reset to defaults**.
|
||||
3. Click the **palette icon** to bring up the visualization settings for that card.
|
||||
4. Click **Reset to defaults** (bottom right).
|
||||
5. Click **Done** to save the card's visualization settings.
|
||||
6. Click **Save** to save the dashboard.
|
||||
|
||||
If you don't see the palette icon, you'll need to:
|
||||
|
||||
1. Click the **pencil icon** to edit the card's visualization settings.
|
||||
2. Remove the data in the **Manage data** section.
|
||||
3. Re-add the question to the card.
|
||||
4. **Save** your changes.
|
||||
|
||||
## Fullscreen dashboards
|
||||
|
||||
After you've made your ideal dashboard, you may want to put the dashboard on a TV to help keep your team up to date throughout the day.
|
||||
|
||||
@@ -6,96 +6,90 @@ redirect_from:
|
||||
|
||||
# Charts with multiple series
|
||||
|
||||
Data in isolation is rarely all that useful. One of the best ways to add context and clarity when communicating with data is to show data side-by-side with other data. Here are just a few examples of data that is better together than apart.
|
||||
One of the best ways to add context and clarity when communicating with data is to show data side-by-side with other data. For example:
|
||||
|
||||
- Your company’s revenue vs. its costs over time.
|
||||
- Average order price this month and user signups for that month.
|
||||
- New users per day vs. returning users per day.
|
||||
- Orders per day from a few different product lines.
|
||||
- Your company's revenue vs. its costs over time
|
||||
- Average order price this month and user signups for that month
|
||||
- Orders per day from a few different product lines
|
||||
|
||||
## Displaying data side by side
|
||||
|
||||
There are two main ways to visualize data side by side:
|
||||
There are two main ways to visualize multiple series in Metabase:
|
||||
|
||||
1. [**Ask a question that involves multiple dimensions**](#ask-a-question-that-involves-multiple-dimensions) with the query builder (or in SQL, if you’re fancy). Example: the count of users by region over time.
|
||||
|
||||
2. [**Combine two saved questions**](#combining-two-saved-questions) that share a common dimension (like time) on a dashboard. For example, you could look at revenue over time and costs over time together.
|
||||
- [**Ask a question that involves multiple dimensions**](#ask-a-question-that-involves-multiple-dimensions) with the query builder (or in SQL, if you're using SQL). For example, the count of users by region over time.
|
||||
- [**Combine multiple questions on one dashboard card**](#combining-multiple-questions-on-one-dashboard-card) that share a common dimension (like time) on a dashboard. For example, you could look at revenue over time and costs over time together.
|
||||
|
||||
## Ask a question that involves multiple dimensions
|
||||
|
||||
If you’re creating a new question, you can view the results as a multi-series visualization by summarizing your data and grouping it into two groups.
|
||||
If you're creating a new question, you can view the results as a multi-series visualization by summarizing your data and grouping it by two or more dimensions.
|
||||
|
||||
As an example, we might want to see which website or service is referring the most people to our website. In the **Sample Database** that ships with Metabase, you would group by the `Source` and `Created At` columns of the **People** table.
|
||||
For example, we might want to see sales by month and product category. In the **Sample Database** that ships with Metabase, you would count the number of rows, then group by the `Product -> Category` and `Created At`:
|
||||
|
||||
To create the multi-series chart, select the **People** table, click on the **Summarize** button in the upper right, then add `Source` and `Created At` as groupings (the `count of rows` metric that we want is selected by default). Be sure to click the plus button to the right of your selection, so Metabase knows to add the grouping; otherwise, Metabase will switch to that grouping. [Learn more about asking questions](../questions/start.md).
|
||||

|
||||
|
||||
Metabase will automatically display a multi-series line chart visualization of how each referrer has performed for us.
|
||||
Metabase will automatically display a multi-series line chart, with each series representing a different category.
|
||||
|
||||

|
||||

|
||||
|
||||
You can also create a multi-series chart by composing a custom question in the notebook editor. All you need to do is summarize your data (e.g., count the rows) and group that data into multiple groups (e.g. `Created At` by month and Product Category).
|
||||
Metabase can visualize up to 100 distinct values of a dimension at once, so if you're selecting a field that contains many values, you might need to filter the values.
|
||||
|
||||

|
||||
## Combining multiple questions on one dashboard card
|
||||
|
||||
Note: you won’t be able to add another saved question to multi-series visualizations made in this fashion. Metabase can visualize up to 100 distinct values of a dimension at once, so if you're selecting a field that contains a lot of values, you might need to filter the values.
|
||||
You can layer multiple questions on a single dashboard card. You can even layer questions that query different databases, as long as they share the same datetime dimension.
|
||||
|
||||
## Combining two saved questions
|
||||
1. **Create a dashboard and enter dashboard edit mode**. On a dashboard, click the **Pencil** icon to enter editing mode.
|
||||
|
||||
If you already have two or more saved questions you’d like to compare, and they have the same first dimension, they can be combined onto a single dashboard card. You can even compare questions that pull data from different databases. Here’s how:
|
||||
2. **Add a question** with a dimension like time or category to a dashboard. In practice, questions you'll typically want to overlay will be line or bar charts.
|
||||
|
||||
1. Add a question with a dimension like time or category to a dashboard. In practice, these will usually be line charts or bar charts.
|
||||
3. **Edit the card's visualization**. Still in dashboard edit mode, hover over the question's card and click the **Pencil** icon to edit the card's visualization.
|
||||
|
||||
2. While in edit mode on the dashboard, hovering over a card will display some editing options in the upper right of the question, including an option to **add a line**, as well as a **gear** icon. Click on the add a line option (the **+** with a line and the word "Add" next to it).
|
||||

|
||||
|
||||

|
||||
4. **Add more data**. In the Manage data sidebar on the left, click on **Add more data**.
|
||||
|
||||
3. In the Edit Data modal, you’ll see the original question on the left, with a list of compatible questions you can choose from on the right. Search question(s) to add, and check the box next to each question you’d like to see alongside with the original. Metabase will add the question(s) to the same chart.
|
||||

|
||||
|
||||

|
||||
Metabase will list questions in the left sidebar. Valid questions that you can plot on the card will have a plus sign **+**. You can also swap out the card's current question for a different question, which may update the list of compatible questions.
|
||||
|
||||
If necessary, the X and Y axes will automatically update. Metabase will create a legend using the existing card titles to help you understand which question maps to which series on the chart. Repeat this process as many times as you need.
|
||||
|
||||

|
||||
You can also swap out the chart's original question entirely, for example if you want to start over, or to reset the question's visualization to its original settings.
|
||||
|
||||
To remove a series, simply uncheck its box.
|
||||
5. (Optional) **Rename your chart** to reflect the combined data.
|
||||
|
||||
Once you have your chart looking how you’d like, hit done. Metabase will show your changes on the card in the dashboard. Depending on how dense your data is, at this point you might want to consider enlarging your chart to make sure the data is legible.
|
||||
6. **Save** your changes.
|
||||
|
||||
> **SQL questions may not work**. Metabase has less information about SQL-based questions, so we cannot guarantee they can be added reliably. You'll see a little warning sign next to SQL questions to indicate this uncertainty, so be aware that adding these kinds of questions may not work.
|
||||
## Combining number charts
|
||||
|
||||
## Combining Number charts
|
||||
If you need to compare single numbers to get a sense of how they differ, Metabase can turn multiple number charts into a funnel or bar chart.
|
||||
|
||||
If you need to compare single numbers to get a sense of how they differ, Metabase can turn multiple number charts into a bar chart.
|
||||
1. **Add a number chart to a dashboard.**
|
||||
|
||||
As above, while editing a dashboard, hover over a number chart of your choice, and click on the icon with the **+** and bar chart icon to add a saved question.
|
||||
2. **Visualize as a funnel chart**. (Yes, we know you're going for a bar chart, bear with us, you're going to switch the funnel's type to a bar chart.) In dashboard edit mode, hover over the card and click on **Visualize another way**. Metabase will change the visualization to a funnel chart.
|
||||
|
||||
Use the search bar to find other saved question(s) that you’d like to see represented on the bar chart, and click the checkbox to add them to your chart. In this case, we added **Widget orders** to compare them to **Gadget orders**.
|
||||

|
||||
|
||||

|
||||
3. **Add more data**. Add another question that returns a single number to the chart.
|
||||
|
||||
4. **Set the Funnel type to a bar chart**. Click **Settings** and change **Funnel type** to "Bar chart".
|
||||
|
||||

|
||||
|
||||
## Multi-series charts, values, and legibility
|
||||
|
||||
When displaying multiple series, it’s important to keep legibility in mind. Combining many series can sometimes decrease the communication value of the data.
|
||||
When displaying multiple series, it's important to keep legibility in mind. Combining many series can sometimes decrease the communication value of the data.
|
||||
|
||||
Metabase allows you to add values to multi-series charts, but go easy on this feature, especially on charts with lots of data points. Adding values to multiple series, each with many data points, can make charts more difficult to read.
|
||||
Metabase allows you to add values to multi-series charts, but use this feature sparingly, especially on charts with many data points. Adding values to multiple series, each with many data points, can make charts _more_ difficult to read.
|
||||
|
||||
From the **Visualization > Display** options, you can toggle the option: **Show values on data points**. Metabase will do its best to fit as many values as can fit nicely. You can also force Metabase to (begrudgingly) show values for all data points, by setting the **Values to show** to **All**.
|
||||
From the **Visualization > Display** options, you can toggle the option: **Show values on data points**. Metabase will do its best to fit as many values as can fit nicely. You can also force Metabase to show values for all data points by setting the **Values to show** to **All**.
|
||||
|
||||

|
||||

|
||||
|
||||
You can also toggle values for each individual series. If you have three series, for example, you can show values on one, two, or all three series.
|
||||
Additionally, you can configure the formatting of the values:
|
||||
|
||||
- For a question with multiple dimensions, go to **Visualization > Data** tab, click on the three dots menu **...** to the right of a series, and toggle **Show values for this series** to show or hide its values.
|
||||
|
||||
- For a dashboard card that combines multiple saved questions, go to the **Visualization > Display** tab, click on the down arrow to the right of a series to expand its details, and toggle **Show values for this series** to show or hide its values.
|
||||
|
||||
You can also toggle values for the whole chart, then selectively hide values for individual series until you have your chart looking just right.
|
||||
|
||||
Additionally, there is an option to configure the formatting of the values:
|
||||
|
||||
- **Auto**. Metabase selects the appropriate style for you
|
||||
- **Compact**. Metabase abbreviates values, e.g., 1,000 becomes 1K.
|
||||
- **Full**. Values are displayed in their natural beauty.
|
||||
- **Auto**: Metabase selects the appropriate style for you
|
||||
- **Compact**: Metabase abbreviates values, e.g., 1,000 becomes 1K
|
||||
- **Full**: Values are displayed in their natural form
|
||||
|
||||
Now go forth and start letting your data get to know each other!
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ If you want Metabase to treat a text or number column as a datetime column:
|
||||
4. Scroll to **Cast to a specific data type**
|
||||
5. Select a casting option.
|
||||
|
||||
> Metabase currently supports only casting to a datetime type in **Cast to a specific data type**. If you need to cast to a different type (like float), you can [create a SQL question](../questions/native-editor/writing-sql.md#starting-a-new-sql-query) that casts the data and [save it as a model](./models.md#create-a-model-from-a-saved-question), or create a view directly in your database.
|
||||
> Metabase currently supports limited casting options in **Cast to a specific data type**. If you need to cast to a type that's not available in Metabase, you can [create a SQL question](../questions/native-editor/writing-sql.md#starting-a-new-sql-query) that casts the data and [save it as a model](./models.md#create-a-model-from-a-saved-question), or create a view directly in your database.
|
||||
|
||||
**Text to datetime casting options**:
|
||||
|
||||
@@ -131,6 +131,16 @@ If you want Metabase to treat a text or number column as a datetime column:
|
||||
- UNIXNanoSeconds->DateTime
|
||||
- UNIXSeconds->DateTime
|
||||
|
||||
**Text to numeric casting options**:
|
||||
|
||||
- String->Integer
|
||||
- String->Float
|
||||
|
||||
**Other options**:
|
||||
|
||||
- Float->Integer
|
||||
- Datetime->Date
|
||||
|
||||
Casting is different from setting the [field type](./field-types.md). For example, say you have a "Created At" column with a string [data type](https://www.metabase.com/learn/grow-your-data-skills/data-fundamentals/data-types-overview) in your database. You'll need to cast "Created At" to one of the datetime types above if you want to do things like:
|
||||
|
||||
- Create relative date filters, such as "Created At = Last week".
|
||||
|
||||
@@ -39,11 +39,7 @@ You can use custom expressions to combine multiple metrics, or perform calculati
|
||||
|
||||
To create a metric, bring up the command palette with cmd/ctrl + k. That’s cmd + k for Macs, or ctrl + k for Windows PCs. Search for New metric.
|
||||
|
||||
You can also create a metric by first creating a question, then converting it to a metric:
|
||||
|
||||
1. Click on **+ New** and select **Question**
|
||||
2. Build your query using the query builder
|
||||
3. Once you've created your question, you can convert it to a metric by clicking the three dot menu (**...**) and selecting **Turn into a metric**
|
||||
You can also create a new metric by going to **Browse > Metrics** in the navigation side bar and clicking on **+**.
|
||||
|
||||
Select your starting data. You can start from a model, metric, table, or saved question.
|
||||
|
||||
|
||||
@@ -39,20 +39,25 @@ See [Personal Access Token (PAT)](https://docs.databricks.com/en/dev-tools/auth/
|
||||
|
||||
See [Authenticate access with a service principal using OAuth](https://docs.databricks.com/en/dev-tools/auth/oauth-m2m.html).
|
||||
|
||||
### Catalog
|
||||
For now, you can only select one catalog. Metabase doesn't support multi-catalog connections. If you want to use more than one catalog in Metabase, you can set up multiple connections, each selecting a different catalog.
|
||||
### Enable multiple catalogs
|
||||
|
||||
Toggle on to sync multiple catalogs. If you enable this, you'll be able to [specify which catalogs to sync](#catalogs-and-schemas).
|
||||
|
||||
### Default catalog
|
||||
|
||||
Required. You must specify a default catalog (so you don't have to deal with catalog qualification in native queries).
|
||||
|
||||
You can't sync Databricks's legacy catalogs, however, including the `samples` or `hive_metastore` catalogs.
|
||||
|
||||
### Schemas
|
||||
### Catalogs and schemas
|
||||
|
||||
You can specify which schemas you want to sync and scan. Options are:
|
||||
You can specify which catalogs and schemas you want to sync and scan. Options are:
|
||||
|
||||
- All
|
||||
- Only these...
|
||||
- All except...
|
||||
|
||||
For the **Only these** and **All except** options, you can input a comma-separated list of values to tell Metabase which schemas you want to include (or exclude). For example:
|
||||
For the **Only these** and **All except** options, you can input a comma-separated list of values to tell Metabase which catalogs and schemas you want to include (or exclude). For example:
|
||||
|
||||
```
|
||||
foo,bar,baz
|
||||
|
||||
@@ -61,95 +61,6 @@ Admins can optionally specify a string of text to add in front of the table that
|
||||
|
||||
In order to upload CSVs, a person must be in a group with **View data** access of "Can view" and **Create queries** of Query builder access or higher to the schema you've selected to store your uploaded data. See [groups](../people-and-groups/managing.md) and [data permissions](../permissions/data.md).
|
||||
|
||||
## Primary key auto-generation
|
||||
|
||||
When you upload a CSV, Metabase will create an a unique primary key column, called `_mb_row_id`, as the first (left-most) column of the uploaded CSV table. This `_mb_row_id` column will contain automatically generated integers. Metabase will also ignore any columns in the upload that have a name that will be in the database with the same name as the auto-generated primary key column (e.g., `_MB row-ID` in the CSV will be `_mb_row_id` or `_MB_ROW_ID` in the database).
|
||||
|
||||
If you don't want this autogenerated ID column, you can always remove the column from the model Metabase created. Visit the model, click on the info **i** icon, then **Model details**. From the model details page, click the **Edit definition** button. In the Data section of the query builder, click on the down arrow next to the table, deselect the added ID column, and save your changes.
|
||||
|
||||
## Data type errors
|
||||
|
||||
Metabase will try to guess what the data type is for each column, but if some entries are not like the others, Metabase may not guess the type correctly. For example, if you have a column that starts with integers like 100, 130, 140, then later on a float 105.5, Metabase may reject the upload. To fix this, you'll need to use spreadsheet software to adjust the formatting so that all the integers are formatted as floats (e.g., 100.00, 130.00, 140.00 and so on) before uploading.
|
||||
|
||||
## File size limit
|
||||
|
||||
CSV files cannot exceed 50 MB in size.
|
||||
|
||||
> While Metabase limits uploads to 50 MB, the server you use to run your Metabase may impose a lower limit. For example, the default client upload limit for [NGINX is 1 MB](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size). So you may need to change your server settings to allow uploads up to 50 MB. People on Metabase Cloud don't have to worry about this.
|
||||
|
||||
If you have a file larger than 50 MB, the workaround here is to split the data into multiple files and [append those files to an existing model](../exploration-and-organization/uploads.md#appending-to-a-model-created-by-an-upload). Each file that you upload to Metabase must have a header row (the names of the columns), so if you're splitting one file into multiple files, you'll need to add header rows to each file.
|
||||
|
||||
## Date formats
|
||||
|
||||
For now, Metabase only recognizes dates and datetimes from strings in uploaded CSVs with the following formats:
|
||||
|
||||
### Dates
|
||||
|
||||
Represents the year, month, and day without time information.
|
||||
|
||||
**Format**: `yyyy-MM-dd`
|
||||
|
||||
**Example**: `2023-01-01`
|
||||
|
||||
### Datetimes
|
||||
|
||||
Represents the year, month, day, hour. Minutes, seconds, and fractional seconds are optional.
|
||||
|
||||
**Format**: `yyyy-MM-ddTHH:mm:ss.SSS`. The "T" separator could also be a space (" ").
|
||||
|
||||
**Examples**:
|
||||
|
||||
- `2023-01-01 00`
|
||||
- `2023-01-01 00:00:00.000`
|
||||
- `2023-01-01T00:00:00.000`
|
||||
- `2023-01-01 00:00:00.0000000`
|
||||
|
||||
### Datetimes with offsets
|
||||
|
||||
Represents the datetime with an offset from Coordinated Universal Time (UTC). Minutes and seconds in the offset are optional.
|
||||
|
||||
**Formats**:
|
||||
|
||||
Datetime formats:
|
||||
|
||||
- `yyyy-MM-ddTHH:mm`.
|
||||
- `yyyy-MM-ddTHH:mm:ss`.
|
||||
- `yyyy-MM-ddTHH:mm:ss.SSS` (and any number of S's).
|
||||
|
||||
The "T" separator could also be a space (" ").
|
||||
|
||||
Offsets:
|
||||
|
||||
- `Z` (for UTC)
|
||||
- `+HH` or `-HH`
|
||||
- `+HH:mm` or `-HH:mm`
|
||||
- `+HH:mm:ss` or `-HH:mm:ss`
|
||||
|
||||
**Examples**:
|
||||
|
||||
- `2023-01-01 00:00:00+00:00:00`
|
||||
- `2023-01-01T00:00:00+00:00:00`
|
||||
|
||||
## Deleting models and tables created by uploads
|
||||
|
||||
### Deleting models created by uploads
|
||||
|
||||
{% include plans-blockquote.html feature="Deleting uploaded tables" %}
|
||||
|
||||
You can move a model to Trash by clicking on the three dots in the upper right and selecting **Move to Trash**.
|
||||
|
||||
For deleting models completely, see [Deleting items permanently](../exploration-and-organization/delete-and-restore.md).
|
||||
|
||||
### Deleting tables created by uploads
|
||||
|
||||
{% include plans-blockquote.html feature="Deleting uploaded tables" %}
|
||||
|
||||
To delete tables created by uploads, go to **Admin settings** > **Settings** > **Uploads**.
|
||||
|
||||
Under **Manage uploads**, Metabase will list the tables underlying the models.
|
||||
|
||||
When you delete the table, Metabase will give you the option to **Also send all models and questions based on this table to the trash**.
|
||||
|
||||
## Note on uploading data to a MySQL database
|
||||
|
||||
For speeding up uploads to a MySQL database, we recommend that you set a `local_infile` to `ON`. You'll need to set this `local_infile` in MySQL, not Metabase. The command-line format is `--local-infile=ON`.
|
||||
|
||||
@@ -76,7 +76,7 @@ Once you've installed all the build tools, you'll need to clone the [Metabase re
|
||||
cd ~/workspace
|
||||
```
|
||||
|
||||
{:start="3"} 3. Run the following command to “clone” Metabase into this folder, using the URL of the Metabase repository on GitHub:
|
||||
3. Run the following command to “clone” Metabase into this folder, using the URL of the Metabase repository on GitHub:
|
||||
|
||||
```
|
||||
git clone https://github.com/metabase/metabase
|
||||
@@ -88,7 +88,7 @@ This is the part that you’ll use over and over.
|
||||
|
||||
The “official” branch of Metabase is called `master`, and other feature development branches get merged into it when they’re approved. So if you want to try out a feature before then, you’ll need to know the name of that branch so you can switch over to it. Here’s what to do:
|
||||
|
||||
{:start="4"} 4. Open up your terminal app
|
||||
4. Open up your terminal app
|
||||
|
||||
5. Navigate to where you're storing the Metabase code. If you followed this guide exactly, you'd get there by entering this command:
|
||||
|
||||
@@ -127,7 +127,7 @@ The “official” branch of Metabase is called `master`, and other feature deve
|
||||
|
||||
## Run Metabase
|
||||
|
||||
{:start="9"} 9. Now we’ll start up the backend server of Metabase with:
|
||||
9. Now we’ll start up the backend server of Metabase with:
|
||||
|
||||
```
|
||||
clojure -M:run
|
||||
@@ -143,7 +143,7 @@ yarn build-hot
|
||||
|
||||
If you're having trouble with this step, make sure you are using the LTS version of [Node.js (http://nodejs.org/)](http://nodejs.org/).
|
||||
|
||||
{:start="11"} 11. In your web browser of choice, navigate to `http://localhost:3000`, where you should see Metabase!
|
||||
11. In your web browser of choice, navigate to `http://localhost:3000`, where you should see Metabase!
|
||||
|
||||
This is the local “server” on your computer, and 3000 is the “port” that Metabase is running on. You can have multiple different apps running on different ports on your own computer. Note that if you share any URLs with others that begin with `localhost`, they won’t be able to access them because your computer by default isn’t open up to the whole world, for security.
|
||||
|
||||
|
||||
@@ -63,6 +63,16 @@ title: Driver interface changelog
|
||||
settings formerly in a `metabase.query-processor.*` namespace have been moved to
|
||||
`metabase.query-processor.settings`.
|
||||
|
||||
## Metabase 0.54.12
|
||||
|
||||
- The function `metabase.driver.sql-jdbc.sync/describe-table-fields-xf` now takes a table instead of a database
|
||||
|
||||
|
||||
## Metabase 0.54.11
|
||||
|
||||
- The multimethods `metabase.driver.sql-jdbc.sync.interface/active-tables` and `metabase.driver.sql-jdbc.sync.interface/filtered-syncable-schemas`, aswell as the functions
|
||||
`metabase.driver.sql-jdbc.sync.describe_database/fast-active-tables`, `metabase.driver.sql-jdbc.sync.describe_database/have-select-privilege-fn` and `metabase.driver.sql-jdbc.sync.describe_database/db-tables` now take a database spec instead of a `java.sql.Connection` object.
|
||||
|
||||
## Metabase 0.54.10
|
||||
|
||||
- Add `metabase.driver/table-known-to-not-exist?` for drivers to test if an exception is due to a query on a table that no longer exists
|
||||
|
||||
|
Before Width: | Height: | Size: 276 KiB After Width: | Height: | Size: 198 KiB |