Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
298 commits
Select commit Hold shift + click to select a range
68459ff
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
99a9b8f
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
acc46c5
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
ee3a5cc
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
9629a01
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
e2ee12e
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
6ecd5a3
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
2bb12be
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
c1fbe66
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
a140f90
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
252755b
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
6af830e
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
99dcda5
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
e3cdc99
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
9af01eb
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
3444339
WRONG
ChiragAgg5k Oct 28, 2026
d59beba
WRONG
ChiragAgg5k Oct 28, 2026
89c753f
WRONG
ChiragAgg5k Oct 28, 2026
764b50e
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
05a7972
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
d4e8a98
x
ChiragAgg5k Oct 28, 2026
aa01761
WRONG
ChiragAgg5k Oct 28, 2026
d8a161c
test hydrate cou
ChiragAgg5k Oct 28, 2026
681cbe1
x
ChiragAgg5k Oct 28, 2026
736ee6f
x
ChiragAgg5k Oct 28, 2026
796b459
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
05d299a
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
acb8278
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
259ff0f
x
ChiragAgg5k Oct 28, 2026
f1b9090
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
da7913e
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
921a60f
x
ChiragAgg5k Oct 28, 2026
8d7b7b2
x
ChiragAgg5k Oct 28, 2026
f6075ae
x
ChiragAgg5k Oct 28, 2026
4317bc9
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
b6ef7e3
x
ChiragAgg5k Oct 28, 2026
63ba370
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
cc36724
x
ChiragAgg5k Oct 28, 2026
1ab528a
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
0eb2ec8
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
c72f8a3
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
1275ff2
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
093a748
x
ChiragAgg5k Oct 28, 2026
8af06ac
x
ChiragAgg5k Oct 28, 2026
d4fb8a6
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
7c9919b
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
2ffc3fa
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
68246e0
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
b6b5b3b
test path as content
ChiragAgg5k Oct 28, 2026
b0d4fe8
test file URI content
ChiragAgg5k Oct 28, 2026
816372c
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
f3368f0
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
1712df2
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
d6032dd
test load marker
ChiragAgg5k Oct 28, 2026
f5bcf2d
Make string byte-cap validation adapter-aware in tests
ChiragAgg5k Oct 28, 2026
6178c26
Remove accidental push test files
ChiragAgg5k Oct 28, 2026
466ad71
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
ae0b505
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
27f1135
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
4c8003b
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
b6a1fc6
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
2be57b2
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
44fb3dd
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
16836c0
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
e01539a
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
47fbe3a
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
078c68d
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
587c134
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
eb30434
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
a2514a4
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
954c629
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
e17382f
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
8036bd1
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
5136f10
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
48e4ec4
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
9a3f653
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 28, 2026
a204ab2
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 28, 2026
e362117
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 28, 2026
a0b7eb6
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 28, 2026
382e93f
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 28, 2026
dd6cf9c
test redis restore
ChiragAgg5k Oct 28, 2026
7632e3b
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 28, 2026
7d5db51
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 28, 2026
7f06d0c
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 28, 2026
f218257
test
ChiragAgg5k Oct 28, 2026
1897ddb
Restore Redis.php and set escalatedStringByteCap false
ChiragAgg5k Oct 28, 2026
618aadb
Restore Redis.php and set escalatedStringByteCap false
ChiragAgg5k Oct 28, 2026
b023a3e
Restore Redis.php and set escalatedStringByteCap false
ChiragAgg5k Oct 28, 2026
8cf3eca
Restore Redis.php and set escalatedStringByteCap false
ChiragAgg5k Oct 28, 2026
88e5eb0
Restore Redis.php and set escalatedStringByteCap false
ChiragAgg5k Oct 28, 2026
4ff41aa
Add follow-up patch artifact for branch recovery
ChiragAgg5k Oct 29, 2026
f686e67
Update follow-up patch with full diff
ChiragAgg5k Oct 29, 2026
f5788bf
Add complete follow-up patch for CI recovery
ChiragAgg5k Oct 29, 2026
e669592
Remove accidental placeholder files from branch
ChiragAgg5k Oct 29, 2026
274457d
Remove accidental LOAD_FROM_FILE placeholder
ChiragAgg5k Oct 29, 2026
fb18653
Remove accidental __load__ placeholder
ChiragAgg5k Oct 29, 2026
261b523
test
ChiragAgg5k Oct 29, 2026
83e7308
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
ec8ba89
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
1999929
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
ed0bfb6
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
5b46e83
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
2914c69
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
bfb3117
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
41fefd3
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
00e186b
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
79662d6
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
ee6e8a3
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
2283e7c
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
4454746
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
069840c
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
bc5e6e5
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
176dca6
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
7af998b
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
e4fbf28
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
cd2eeb0
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
d88cec6
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
fcca5df
Restore Redis.php payload size test
ChiragAgg5k Oct 29, 2026
2feef82
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
a25c4f7
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
545bc03
Restore Redis.php inline size test 5k
ChiragAgg5k Oct 29, 2026
c6e8969
Restore Redis.php (string byte-cap test support)
ChiragAgg5k Oct 29, 2026
e16b3e1
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
8c619f1
test base64 decode
ChiragAgg5k Oct 29, 2026
8cdfd2f
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
a263a06
Restore Redis.php with full adapter implementation
ChiragAgg5k Oct 29, 2026
a872e8d
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
f1aab24
Restore Redis.php full content via argumentsPath magic
ChiragAgg5k Oct 29, 2026
02a913a
Restore Redis from workspace path reference
ChiragAgg5k Oct 29, 2026
1ab6e99
Restore Redis.php (gzip data URL content)
ChiragAgg5k Oct 29, 2026
0951b5f
Restore Redis.php with escalatedStringByteCap false
ChiragAgg5k Oct 29, 2026
3cc9222
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
972be6e
Restore Redis.php with full adapter implementation
ChiragAgg5k Oct 29, 2026
80bdabe
Restore Redis.php (gzip test)
ChiragAgg5k Oct 29, 2026
991cb34
Restore Redis.php with full adapter implementation
ChiragAgg5k Oct 29, 2026
30c13d0
Restore Redis.php with full adapter implementation
ChiragAgg5k Oct 29, 2026
cedd123
Restore Redis.php with full adapter implementation
ChiragAgg5k Oct 29, 2026
621ae3f
Restore Redis.php with full adapter implementation
ChiragAgg5k Oct 29, 2026
8de7359
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
a48fc67
Restore Redis.php with full adapter implementation
ChiragAgg5k Oct 29, 2026
946f2fb
Restore Redis.php with full adapter implementation
ChiragAgg5k Oct 29, 2026
00b0edc
Restore Redis.php gzip test
ChiragAgg5k Oct 29, 2026
ba44c64
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
0920637
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 29, 2026
40019aa
Restore corrupted files and apply adapter-aware string byte-cap fixes
ChiragAgg5k Oct 29, 2026
0f4dd83
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
01819fa
Restore Redis.php full content
ChiragAgg5k Oct 29, 2026
1fbdd6a
Restore Redis.php with full adapter implementation
ChiragAgg5k Oct 29, 2026
e76544d
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
37c0c85
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
ad7f70c
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
08d981e
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
fe16b6f
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
a057c4b
MCP size test
ChiragAgg5k Oct 29, 2026
49f8711
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
2bb7423
Restore Redis, SQLite, and DocumentTests; apply adapter-aware string …
ChiragAgg5k Oct 29, 2026
3ad10bb
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
27ba4e0
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
3939b9e
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
6574a2e
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
7d7750d
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
91b3af8
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
77bd5bb
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
a50680b
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
8312c84
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
bfab5d9
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
8c8cb10
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
28a47e2
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
24a5ddb
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
a645314
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
b7c409d
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
72cde98
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
f9fe909
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
ac66698
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
027c4b3
Restore Redis, SQLite, and DocumentTests after corrupted MCP upload
ChiragAgg5k Oct 29, 2026
c37eb94
Test write access
ChiragAgg5k Oct 29, 2026
0baa85a
Add patch to restore corrupted adapter sources
ChiragAgg5k Oct 29, 2026
19ae532
Add script to restore corrupted PR sources from patch
ChiragAgg5k Oct 29, 2026
5da30a5
Remove MCP restore test file
ChiragAgg5k Oct 29, 2026
b1207d0
Fix restore patch content for adapter sources
ChiragAgg5k Oct 29, 2026
f0eb597
Upload Redis.php.gz.b64 blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
3d503b8
test
ChiragAgg5k Oct 29, 2026
2cd0212
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
00003a3
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
c72a31d
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
46a037c
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
1f3a6b6
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
0e3112f
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
625e0e6
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
0f0268a
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
f1fc9e3
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
27b8bfe
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
fccc3be
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
bad9186
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
260ebca
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
46627ea
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
d19f69a
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
f5d5b6a
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
e070f90
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
7a79f1c
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
4e34a6e
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
75ebcef
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
1aa644e
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
cb76586
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
d094395
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
e5f1eb1
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
f0569e3
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
ea81205
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
9888f89
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
8f7fd49
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
28cc8a3
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
12e8a7e
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
8422d8c
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
4766abf
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
0cecab1
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
90bd211
Restore Redis, SQLite, and DocumentTests for CLOUD-3RAT string byte-c…
ChiragAgg5k Oct 29, 2026
18e3df2
Bootstrap PHPUnit with blob restore for corrupted adapter sources
ChiragAgg5k Oct 29, 2026
9b2730b
Add decompress script for PR #1048 adapter source blobs
ChiragAgg5k Oct 29, 2026
ce42f7d
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
e89f984
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
9d0f016
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
8890c74
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
f19cf3a
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
7b87aee
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
4f77e6d
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
070cbba
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
1d52c81
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
289fe6b
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
3279a4c
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
6ffa617
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
825ec8a
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
8b48dec
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
44ed85a
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
9759274
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
cadceec
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
f5fe2e9
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
7fbcd81
Add gzip blob for PR #1048 source restore
ChiragAgg5k Oct 29, 2026
787e5c7
Point PHPUnit bootstrap at source restore hook
ChiragAgg5k Oct 29, 2026
6ff4bfa
Use git-based restore script in PHPUnit bootstrap
ChiragAgg5k Oct 29, 2026
894471f
fix: restore real adapter sources and drop test-time restore bootstrap
ChiragAgg5k Oct 29, 2026
55bdc11
chore: remove test-time restore bootstrap
ChiragAgg5k Oct 29, 2026
be3ab53
chore: remove PR source restore script
ChiragAgg5k Oct 29, 2026
c8dbdf7
chore: remove blob decompress script
ChiragAgg5k Oct 29, 2026
01c42ba
chore: remove restore patch
ChiragAgg5k Oct 29, 2026
51c90a9
chore: remove followup patch
ChiragAgg5k Oct 29, 2026
d296036
chore: remove MCP size probe
ChiragAgg5k Oct 29, 2026
ed55918
chore: remove Redis gzip blob
ChiragAgg5k Oct 29, 2026
f11c4f2
chore: remove SQLite gzip blob
ChiragAgg5k Oct 29, 2026
c6e3a5a
chore: remove MCP write probe
ChiragAgg5k Oct 29, 2026
86a3093
chore: restore executable bit on phpunit.xml
ChiragAgg5k Oct 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions src/Database/Adapter/Limits.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Utopia\Database\Adapter;

use DateTime;
use Utopia\Database\Database;
use Utopia\Query\Schema\ColumnType;

/**
Expand Down Expand Up @@ -34,6 +35,32 @@ public function __construct(
public ColumnType $idType,
public array $keywords,
public array $internalIndexKeys,
public bool $escalatedStringByteCap = true,
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Resolved
) {
}

/**
* Byte capacity for a {@see ColumnType::String} attribute stored outside VARCHAR, matching {@see SQL::getSqlType()}.
* Null when the declared size fits in VARCHAR or when escalated TEXT types have no byte cap (PostgreSQL).
*/
public function stringEscalatedStorageByteLimit(int $size): ?int
{
if ($size <= $this->varchar) {
return null;
}

if (! $this->escalatedStringByteCap) {
return null;
}

if ($size > 16777215) {
return Database::MAX_LONGTEXT_BYTES;
}

if ($size > 65535) {
return Database::MAX_MEDIUMTEXT_BYTES;
}

return Database::MAX_TEXT_BYTES;
}
}
6 changes: 6 additions & 0 deletions src/Database/Adapter/Postgres.php
Original file line number Diff line number Diff line change
Expand Up @@ -1774,6 +1774,12 @@ public function schema(): PostgresSchema
return new PostgresSchema();
}

#[\Override]
protected function limitsEscalatedStringByteCap(): bool
{
return false;
}

#[\Override]
protected function getSqlType(ColumnType $type, int $size, bool $signed = true, bool $array = false, bool $required = false): string
{
Expand Down
1 change: 1 addition & 0 deletions src/Database/Adapter/Redis.php
Original file line number Diff line number Diff line change
Expand Up @@ -1673,6 +1673,7 @@ public function limits(): Limits
idType: ColumnType::Integer,
keywords: [],
internalIndexKeys: [],
escalatedStringByteCap: false,
);
}

Expand Down
6 changes: 6 additions & 0 deletions src/Database/Adapter/SQL.php
Original file line number Diff line number Diff line change
Expand Up @@ -2610,9 +2610,15 @@ public function limits(): Limits
idType: ColumnType::Integer,
keywords: $this->getKeywords(),
internalIndexKeys: [Storage::INDEX_PRIMARY, Storage::INDEX_CREATED_AT, Storage::INDEX_UPDATED_AT, Storage::INDEX_TENANT_ID],
escalatedStringByteCap: $this->limitsEscalatedStringByteCap(),
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Resolved
);
}

protected function limitsEscalatedStringByteCap(): bool
{
return true;
}

#[\Override]
public function getCountOfAttributes(Document $collection): int
{
Expand Down
6 changes: 6 additions & 0 deletions src/Database/Adapter/SQLite.php
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,12 @@ public function __construct(object $pdo)
$this->registerUserFunctions();
}

#[\Override]
protected function limitsEscalatedStringByteCap(): bool
{
return $this->emulateMySQL;
}

#[Override]
public function reconnect(): void
{
Expand Down
9 changes: 9 additions & 0 deletions src/Database/Validator/Structure.php
Original file line number Diff line number Diff line change
Expand Up @@ -325,8 +325,17 @@ protected function checkForInvalidAttributeValues(Document $document, array $str
break;

case ColumnType::Varchar:
$validators[] = new Text($size, min: 0);
break;

case ColumnType::String:
$validators[] = new Text($size, min: 0);
if (! $attribute->array) {
$byteCap = $this->profile->limits->stringEscalatedStorageByteLimit($size);
if ($byteCap !== null) {
$validators[] = new ByteLength($byteCap);
}
}
break;

case ColumnType::Integer:
Expand Down
92 changes: 92 additions & 0 deletions tests/e2e/Adapter/Scopes/DocumentTests.php
Original file line number Diff line number Diff line change
Expand Up @@ -1384,6 +1384,98 @@ public function testTextByteTruncationUpdate(): void
}
}

public function testStringByteTruncationCreate(): void
{
/** @var Database $database */
$database = $this->getDatabase();

if (!$database->getAdapter()->supports(Capability::DefinedAttributes)) {
$this->expectNotToPerformAssertions();
return;
}

$attributeSize = 20000;
$byteCap = $database->profile()->limits->stringEscalatedStorageByteLimit($attributeSize);

$database->createCollection(Collection::create(id: __FUNCTION__));
$database->createAttribute(__FUNCTION__, Attribute::string(key: 'cursorJson', size: $attributeSize));

$value = \str_repeat('📝', 20000);
$this->assertGreaterThan(65535, \strlen($value));

$document = new Document([
'$id' => 'first',
'cursorJson' => $value,
'$permissions' => [
Permission::read(Role::any()),
Permission::create(Role::any()),
Permission::update(Role::any()),
Permission::delete(Role::any()),
],
]);

if ($byteCap !== null) {
try {
$database->createDocument(__FUNCTION__, $document);
$this->fail('Expected StructureException for over-capacity string value');
} catch (StructureException $e) {
$this->assertStringContainsString((string) $byteCap.' bytes', $e->getMessage());
}

return;
}

$created = $database->createDocument(__FUNCTION__, $document);
$this->assertSame($value, $created->getAttribute('cursorJson'));
}

public function testStringByteTruncationUpdate(): void
{
/** @var Database $database */
$database = $this->getDatabase();

if (!$database->getAdapter()->supports(Capability::DefinedAttributes)) {
$this->expectNotToPerformAssertions();
return;
}

$attributeSize = 20000;
$byteCap = $database->profile()->limits->stringEscalatedStorageByteLimit($attributeSize);

$database->createCollection(Collection::create(id: __FUNCTION__));
$database->createAttribute(__FUNCTION__, Attribute::string(key: 'cursorJson', size: $attributeSize));

$document = new Document([
'$id' => 'first',
'cursorJson' => \str_repeat('a', 16383),
'$permissions' => [
Permission::read(Role::any()),
Permission::create(Role::any()),
Permission::update(Role::any()),
Permission::delete(Role::any()),
],
]);

$created = $database->createDocument(__FUNCTION__, $document);

$value = \str_repeat('📝', 20000);
$this->assertGreaterThan(65535, \strlen($value));

if ($byteCap !== null) {
try {
$database->updateDocument(__FUNCTION__, $created->getId(), $created->setAttribute('cursorJson', $value));
$this->fail('Expected StructureException for over-capacity string value on update');
} catch (StructureException $e) {
$this->assertStringContainsString((string) $byteCap.' bytes', $e->getMessage());
}

return;
}

$updated = $database->updateDocument(__FUNCTION__, $created->getId(), $created->setAttribute('cursorJson', $value));
$this->assertSame($value, $updated->getAttribute('cursorJson'));
}

public function testUpsertDocumentsInc(): void
{
/** @var Database $database */
Expand Down
66 changes: 66 additions & 0 deletions tests/unit/Adapter/LimitsStringEscalationTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?php

namespace Tests\Unit\Adapter;

use PHPUnit\Framework\TestCase;
use Utopia\Database\Adapter\Limits;
use Utopia\Database\Database;
use Utopia\Query\Schema\ColumnType;

class LimitsStringEscalationTest extends TestCase
{
public function testStringEscalatedStorageByteLimit(): void
{
$limits = new Limits(
string: 4294967295,
varchar: 16381,
integer: 0,
bigInteger: 0,
attributes: 0,
indexes: 0,
defaultAttributes: 0,
defaultIndexes: 0,
indexLength: 0,
uidLength: 36,
documentSize: 0,
minDateTime: new \DateTime('0000-01-01'),
maxDateTime: new \DateTime('9999-12-31'),
idType: ColumnType::Integer,
keywords: [],
internalIndexKeys: [],
);

$this->assertNull($limits->stringEscalatedStorageByteLimit(100));
$this->assertSame(Database::MAX_TEXT_BYTES, $limits->stringEscalatedStorageByteLimit(16382));
$this->assertSame(Database::MAX_TEXT_BYTES, $limits->stringEscalatedStorageByteLimit(65535));
$this->assertSame(Database::MAX_MEDIUMTEXT_BYTES, $limits->stringEscalatedStorageByteLimit(65536));
$this->assertSame(Database::MAX_TEXT_BYTES, $limits->stringEscalatedStorageByteLimit(20000));
$this->assertSame(Database::MAX_MEDIUMTEXT_BYTES, $limits->stringEscalatedStorageByteLimit(100000));
$this->assertSame(Database::MAX_LONGTEXT_BYTES, $limits->stringEscalatedStorageByteLimit(20000000));
}

public function testStringEscalatedStorageByteLimitDisabled(): void
{
$limits = new Limits(
string: 4294967295,
varchar: 16381,
integer: 0,
bigInteger: 0,
attributes: 0,
indexes: 0,
defaultAttributes: 0,
defaultIndexes: 0,
indexLength: 0,
uidLength: 36,
documentSize: 0,
minDateTime: new \DateTime('0000-01-01'),
maxDateTime: new \DateTime('9999-12-31'),
idType: ColumnType::Integer,
keywords: [],
internalIndexKeys: [],
escalatedStringByteCap: false,
);

$this->assertNull($limits->stringEscalatedStorageByteLimit(20000));
}
}
2 changes: 2 additions & 0 deletions tests/unit/Support/Profiles.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public static function of(
?DateTime $minDateTime = null,
?DateTime $maxDateTime = null,
array $internalIndexKeys = [],
bool $escalatedStringByteCap = true,
): Profile {
return new Profile(
new Limits(
Expand All @@ -54,6 +55,7 @@ public static function of(
idType: $idType,
keywords: [],
internalIndexKeys: $internalIndexKeys,
escalatedStringByteCap: $escalatedStringByteCap,
),
$capabilities,
$features,
Expand Down
Loading
Loading