Details
-
Improvement
-
Resolution: Fixed
-
Major
-
6.5.1
-
DOC-2020-S7-Apr19, DOC-2020-S8-May03
-
1
Description
Support expiration through the N1QL.
- INSERT
- INSERT INTO SELECT
- UPSERT
- UPSERT INTO SELECT
- UPDATE
- SELECT
- MERGE
By default (Existing/feature)
INSERT/UPSERT/MERGE-INSERT expiration will be 0 (no expiration).
UPDATE/MERGE-UPDATE expiration will be 0 (no expiration). If user want preserve existing must set the value again.
UPDATE default AS d USE KEYS "k02" SET d.comment = "xyz", META(d).expiration = META(d).expiration; |
https://docs.google.com/document/d/10Vt7uRi7FyB-6hstp2OXADHC3UZRhFxE5VACU3a16fs/edit
Use cases:
|
DELETE FROM default USE KEYS ["k01","k01-k01","k02","k02-k02", "k11", "k11-k11", "k12", "k12-k12", "k21", "k22"]; |
INSERT INTO default (KEY, VALUE) VALUES ("k01", {"a": "k01"}); |
INSERT INTO default (KEY, VALUE, OPTIONS) VALUES ("k02", {"a": "k02"}, {"expiration": 3000}); |
INSERT INTO default VALUES ("k11", {"a": "k11"}) RETURNING META().expiration; |
INSERT INTO default VALUES ("k12", {"a": "k12"}, {"expiration": 5*24*60*60}) RETURNING META().expiration; |
INSERT INTO default VALUES ("k21", {"a": "k21"}), VALUES ("k22", {"a": "k22"}, {"expiration": 10*24*60*60}); |
INSERT INTO default (KEY id, VALUE doc) SELECT CONCAT(META(d).id,"-",d.a) AS id, d AS doc FROM default AS d USE KEYS "k01"; |
INSERT INTO default (KEY id, VALUE doc, OPTIONS {expiration}) SELECT CONCAT(META(d).id,"-",d.a) AS id, d AS doc, META(d).expiration FROM default AS d USE KEYS "k02"; |
INSERT INTO default (KEY id) SELECT CONCAT(META(d).id,"-",d.a) AS id FROM default AS d USE KEYS "k11"; |
INSERT INTO default (KEY id, OPTIONS {expiration}) SELECT CONCAT(META(d).id,"-",d.a) AS id, META(d).expiration FROM default AS d USE KEYS "k12"; |
|
SELECT META(d).id, META(d).expiration FROM default AS d USE KEYS ["k01","k01-k01","k02","k02-k02", "k11", "k11-k11", "k12", "k12-k12", "k21", "k22"] ORDER BY META(d).id; |
DELETE FROM default USE KEYS ["k01","k01-k01","k02","k02-k02", "k11", "k11-k11", "k12", "k12-k12", "k21", "k22"]; |
|
|
DELETE FROM default USE KEYS ["k01","k01-k01","k02","k02-k02", "k11", "k11-k11", "k12", "k12-k12", "k21", "k22"]; |
UPSERT INTO default (KEY, VALUE) VALUES ("k01", {"a": "k01"}); |
UPSERT INTO default (KEY, VALUE, OPTIONS) VALUES ("k02", {"a": "k02"}, {"expiration": 3000}); |
UPSERT INTO default VALUES ("k11", {"a": "k11"}) RETURNING META().expiration; |
UPSERT INTO default VALUES ("k12", {"a": "k12"}, {"expiration": 5*24*60*60}) RETURNING META().expiration; |
UPSERT INTO default VALUES ("k21", {"a": "k21"}), VALUES ("k22", {"a": "k22"}, {"expiration": 10*24*60*60}); |
UPSERT INTO default (KEY id, VALUE doc) SELECT CONCAT(META(d).id,"-",d.a) AS id, d AS doc FROM default AS d USE KEYS "k01"; |
UPSERT INTO default (KEY id, VALUE doc, OPTIONS {expiration}) SELECT CONCAT(META(d).id,"-",d.a) AS id, d AS doc, META(d).expiration FROM default AS d USE KEYS "k02"; |
UPSERT INTO default (KEY id) SELECT CONCAT(META(d).id,"-",d.a) AS id FROM default AS d USE KEYS "k11"; |
UPSERT INTO default (KEY id, OPTIONS {expiration}) SELECT CONCAT(META(d).id,"-",d.a) AS id, META(d).expiration FROM default AS d USE KEYS "k12"; |
|
SELECT META(d).id, META(d).expiration FROM default AS d USE KEYS ["k01","k01-k01","k02","k02-k02", "k11", "k11-k11", "k12", "k12-k12", "k21", "k22"] ORDER BY META(d).id; |
DELETE FROM default USE KEYS ["k01","k01-k01","k02","k02-k02", "k11", "k11-k11", "k12", "k12-k12", "k21", "k22"]; |
|
|
DELETE FROM default USE KEYS ["k02"]; |
INSERT INTO default VALUES ("k02", {"a": "k02"}, {"expiration": 3000}); |
UPDATE default AS d USE KEYS "k02" SET d.comment = "xyz"; |
SELECT META(d).id, META(d).expiration FROM default AS d USE KEYS "k02"; |
UPDATE default AS d USE KEYS "k02" SET META(d).expiration = 24*60*60; |
SELECT META(d).id, META(d).expiration FROM default AS d USE KEYS "k02"; |
UPDATE default AS d USE KEYS "k02" SET META(d).expiration = META(d).expiration + 1000 RETURNING META(d).expiration; |
SELECT META(d).id, META(d).expiration FROM default AS d USE KEYS "k02"; |
UPDATE default AS d USE KEYS "k02" SET META(d).expiration = 0 RETURNING META(d).expiration; |
SELECT META(d).id, META(d).expiration FROM default AS d USE KEYS "k02"; |
UPDATE default AS d USE KEYS "k02" SET META(d).expiration = 24*60*60; |
UPDATE default AS d USE KEYS "k02" SET META(d).expiration = 24*60*60, d.xyz = "a" RETURNING META(d).expiration; |
SELECT META(d).id, META(d).expiration, d.* FROM default AS d USE KEYS "k02"; |
DELETE FROM default USE KEYS ["k02"]; |
|
|
|
DELETE FROM default USE KEYS ['k100', 'k101', 'k50', 'k01', 'k02', 'k03', 'k11', 'k12', 'k13', 'k14']; |
INSERT INTO default VALUES ("k100", {"ids": ["k01", "k02", "k03", "k11", "k12", "k13", "k14"]}, {"expiration": 2000}), VALUES ("k101", {"ids": ["k50", "k50", "k50", "k50", "k50", "k50", "k50"]}, {"expiration": 5000}), VALUES ("k50", {"a": "k50"}); |
|
MERGE INTO default AS o USING default AS s USE KEYS ["k100", "k101"] ON KEY s.ids[0] WHEN MATCHED THEN UPDATE SET o.comment = "xyz" WHEN NOT MATCHED THEN INSERT {"a":s.ids[0]} RETURNING META(o).expiration, META(o).id; |
SELECT META(o).id, META(o).expiration FROM default AS o USE KEYS ['k01', 'k50']; |
|
MERGE INTO default AS o USING default AS s USE KEYS ["k100", "k101"] ON s.ids[1] = META(o).id WHEN MATCHED THEN UPDATE SET META(o).expiration = META(s).expiration WHEN NOT MATCHED THEN INSERT (s.ids[1], {"a":s.ids[1]}) RETURNING META(o).expiration, META(o).id; |
SELECT META(o).id, META(o).expiration FROM default AS o USE KEYS ['k02', 'k50']; |
|
MERGE INTO default AS o USING default AS s USE KEYS ["k100", "k101"] ON s.ids[2] = META(o).id WHEN MATCHED THEN UPDATE SET META(o).expiration = 1000 WHEN NOT MATCHED THEN INSERT (s.ids[2], {"a":s.ids[2]}, {"expiration": 3000}) RETURNING META(o).expiration, META(o).id; |
SELECT META(o).id, META(o).expiration FROM default AS o USE KEYS ['k03', 'k50']; |
|
MERGE INTO default AS o USING default AS s USE KEYS ["k100", "k101"] ON s.ids[3] = META(o).id WHEN MATCHED THEN UPDATE SET META(o).expiration = 3000 WHEN NOT MATCHED THEN INSERT (KEY s.ids[3]) RETURNING META(o).expiration, META(o).id; |
SELECT META(o).id, META(o).expiration FROM default AS o USE KEYS ['k11', 'k50']; |
|
MERGE INTO default AS o USING default AS s USE KEYS ["k100", "k101"] ON s.ids[4] = META(o).id WHEN MATCHED THEN UPDATE SET META(o).expiration = META(s).expiration + 1000 WHEN NOT MATCHED THEN INSERT (KEY s.ids[4], VALUE {"a":s.ids[4]}) RETURNING META(o).expiration, META(o).id; |
SELECT META(o).id, META(o).expiration FROM default AS o USE KEYS ['k12', 'k50']; |
|
MERGE INTO default AS o USING default AS s USE KEYS ["k100", "k101"] ON s.ids[5] = META(o).id WHEN MATCHED THEN UPDATE SET META(o).expiration = META(s).expiration WHEN NOT MATCHED THEN INSERT (KEY s.ids[5], OPTIONS {"expiration": 3000} ) RETURNING META(o).expiration, META(o).id; |
SELECT META(o).id, META(o).expiration FROM default AS o USE KEYS ['k13', 'k50']; |
|
MERGE INTO default AS o USING default AS s USE KEYS ["k100", "k101"] ON s.ids[6] = META(o).id WHEN MATCHED THEN UPDATE SET o.comment = "xyz" WHEN NOT MATCHED THEN INSERT (KEY s.ids[6], VALUE {"a":s.ids[6]}, OPTIONS {META(s).expiration}) RETURNING META(o).expiration, META(o).id; |
SELECT META(o).id, META(o).expiration FROM default AS o USE KEYS ['k14', 'k50']; |
|
DELETE FROM orders USE KEYS ['k100', 'k101', 'k50', 'k01', 'k02', 'k03', 'k11', 'k12', 'k13', 'k14'] |
|
|