Files
documentdb/error_mappings.csv
T
Vinod Sridharan c5bbda3241 Merged PR 1668237: [Livesite] Handle default_readonly_transaction more gracefully
### Does this PR have any customer impact?
Yes
### Type (Feature, Refactoring, Bugfix, DevOps, Testing, Perf, etc)
Bugfix
### Does it involve schema level changes? (Table, Column, Index, UDF, etc level changes)
No
### Are you introducing any new config? If yes, do you have tests with and without them being set?
Yes
### ChangeLog (Refer [Template](../oss/CHANGELOG.md))

### Description

When servers have default_readonly_transaction set, the current behavior is wonky - it will cause failures in underlying queries and pollute the errors, and it will go through a bunch of work only to fail.
Additionally, background jobs like TTL will fail ungracefully.

Handle this GUC by failing write commands early with a more useful error message.
Additionally, in cases like TTL, add an opt-in way to prune rows even in the presence of this GUC if it's opted into.

----
#### AI description  (iteration 1)
#### PR Classification
This pull request is a bug fix that improves error handling for write operations attempted during default read-only transactions.

#### PR Summary
The changes introduce a unified mechanism to check and enforce read-only transaction restrictions, ensuring graceful errors when write operations are attempted while in a read-only state. Key changes include:
- **`include/commands/commands_common.h`**: Added the inline function `ThrowIfServerOrTransactionReadOnly` to validate transaction state and throw appropriate errors.
- **Test files**: New regression tests under `/oss/pg_documentdb/src/test/regress/expected/` and `/oss/pg_documentdb/src/test/regress/sql/readonly_transaction_tests.sql` validate the expected error responses under read-only conditions.
- **`ttl_index.c`**: Modified TTL job logic to handle read-only transactions, allowing jobs to commit and restart when the corresponding flag is enabled.
- **Gateway and error handling**: Updated configuration in `TenantConfigurationBase.cs`, error augmentation in `PostgresMongoResultExtensions.cs`, and error mappings (e.g., adding error code 10107 for `NotWritablePrimary`) to propagate clear error messages.
- **Command modules**: Added calls to `ThrowIfServerOrTransactionReadOnly` in several command implementations (e.g., in `insert.c`, `update.c`, `delete.c`, `create_indexes.c`) to enforce read-only restrictions uniformly.
<!-- GitOpsUserAgent=GitOps.Apps.Server.pullrequestcopilot -->
2025-05-29 12:12:31 +08:00

12 KiB

1ErrorMappingErrorName
21InternalError
32BadValue
45GraphContainsCycle
59FailedToParse
614TypeMismatch
715Overflow
816InvalidLength
920IllegalOperation
1023AlreadyInitialized
1126NamespaceNotFound
1227IndexNotFound
1328PathNotViable
1431RoleNotFound
1534CannotBackfillArray
1640ConflictingUpdateOperators
1743CursorNotFound
1848NamespaceExists
1952DollarPrefixedFieldName
2053CanNotBeTypeArray
2154NotSingleValueField
2255Location55
2356EmptyFieldName
2457DottedFieldName
2561ShardKeyNotFound
2666ImmutableField
2767CannotCreateIndex
2868IndexAlreadyExists
2972InvalidOptions
3073InvalidNamespace
3185IndexOptionsConflict
3286IndexKeySpecsConflict
33111NotExactValueField
34115CommandNotSupported
35118NamespaceNotSharded
36121DocumentFailedValidation
37146ExceededMemoryLimit
38159DurationOverflow
39165ViewDepthLimitExceeded
40166CommandNotSupportedOnView
41167OptionNotSupportedOnView
42181AmbiguousIndexKeyPattern
43197InvalidIndexSpecificationOption
44224QueryFeatureNotAllowed
45232MaxSubPipelineDepthExceeded
46241ConversionFailure
47263OperationNotSupportedInTransaction
48276IndexBuildAborted
49291UnableToFindIndex
50361CollectionUUIDMismatch
518000UserCountLimitExceeded
5210065Location10065
5310107NotWritablePrimary
5410334BsonObjectTooLarge
5511000DuplicateKey
5612587BackgroundOperationInProgressForNamespace
5713026Location13026
5813027Location13027
5913068Location13068
6013111Location13111
6113113MergeStageNoMatchingDocument
6213297DbAlreadyExists
6313548Location13548
6415947Location15947
6515952Location15952
6615955Location15955
6715957Location15957
6815958Location15958
6915959Location15959
7015972Location15972
7115976Location15976
7215981Location15981
7315998Location15998
7416004Location16004
7516006Location16006
7616007Location16007
7716020Location16020
7816034Location16034
7916035Location16035
8016410Location16410
8116411Location16411
8216433Location16433
8316554DollarAddNumericOrDateTypes
8416610DollarModByZeroProhibited
8516611DollarModOnlyNumeric
8616612DollarAddOnlyOneDate
8716702Location16702
8816747Location16747
8916748Location16748
9016749Location16749
9116755Location16755
9216764Location16764
9316766HashedIndexDoNotSupportArrayValues
9416800Location16800
9516801Location16801
9616804Location16804
9716874Location16874
9816875Location16875
9916876Location16876
10016878Location16878
10116879Location16879
10216880Location16880
10316882Location16882
10416883Location16883
10516990Location16990
10616994Location16994
10717040Location17040
10817041Location17041
10917042Location17042
11017043Location17043
11117044Location17044
11217045Location17045
11317046Location17046
11417047Location17047
11517048Location17048
11617049Location17049
11717053Location17053
11817080DollarCondMissingIfParameter
11917081DollarCondMissingThenParameter
12017082DollarCondMissingElseParameter
12117083DollarCondBadParameter
12217124DollarSizeRequiresArray
12317194ExactlyOneTextIndex
12417261Location17261
12517276Location17276
12617308Location17308
12717310Location17310
12817419DocumentAfterUpdateLargerThanMaxSize
12917420DocumentToUpsertLargerThanMaxSize
13018533Location18533
13118534Location18534
13218535Location18535
13318536Location18536
13418537Location18537
13518628Location18628
13618629Location18629
13728625Location28625
13828646Location28646
13928647Location28647
14028648Location28648
14128650Location28650
14228651Location28651
14328656Location28656
14428657Location28657
14528664Location28664
14628667RangeArgumentExpressionArgsOutOfRange
14728680DollarAbsCantTakeLongMinValue
14828689ArrayOperatorElemAtFirstArgMustBeArray
14928690DollarArrayElemAtSecondArgArgMustBeNumeric
15028691DollarArrayElemAtSecondArgArgMustBe32Bit
15128714DollarSqrtGreaterOrEqualToZero
15228724DollarSliceInvalidInput
15328725DollarSliceInvalidTypeSecondArg
15428726DollarSliceInvalidValueSecondArg
15528727DollarSliceInvalidTypeThirdArg
15628728DollarSliceInvalidValueThirdArg
15728729DollarSliceInvalidSignThirdArg
15828745Location28745
15928746Location28746
16028747Location28747
16128748Location28748
16228749Location28749
16328756DollarLogArgumentMustBeNumeric
16428757DollarLogBaseMustBeNumeric
16528758DollarLogNumberMustBePositive
16628759DollarLogBaseMustBeGreaterThanOne
16728761DollarLog10MustBePositiveNumber
16828762DollarPowBaseMustBeNumeric
16928763DollarPowExponentMustBeNumeric
17028764DollarPowExponentInvalidForZeroBase
17128765Location28765
17228766DollarLnMustBePositiveNumber
17328769Location28769
17428803Location28803
17528808Location28808
17628809Location28809
17728810Location28810
17828811Location28811
17928812Location28812
18028818Location28818
18128822Location28822
18231002Location31002
18331022Location31022
18431023Location31023
18531024Location31024
18631032KeyCannotContainNullByte
18731034Location31034
18831095Location31095
18931109Location31109
19031119Location31119
19131120Location31120
19231138Location31138
19331170Location31170
19431249Location31249
19531250Location31250
19631253Location31253
19731254Location31254
19831256Location31256
19931271Location31271
20031276Location31276
20131308Location31308
20231325Location31325
20331393Location31393
20431395Location31395
20531441Location31441
20631465Location31465
20734435Location34435
20834443Location34443
20934444Location34444
21034445Location34445
21134446Location34446
21234447Location34447
21334448Location34448
21434449Location34449
21534450Location34450
21634451Location34451
21734452Location34452
21834453Location34453
21934454Location34454
22034455Location34455
22134460Location34460
22234461Location34461
22334462Location34462
22434463Location34463
22534464Location34464
22634465Location34465
22734466Location34466
22834467Location34467
22934468Location34468
23034471Location34471
23134473Location34473
23240060DollarSwitchRequiresObject
23340061DollarSwitchRequiresArrayForBranches
23440062DollarSwitchRequiresObjectForEachBranch
23540063DollarSwitchUnknownArgumentForBranch
23640064DollarSwitchRequiresCaseExpressionForBranch
23740065DollarSwitchRequiresThenExpressionForBranch
23840066DollarSwitchNoMatchingBranchAndNoDefault
23940067DollarSwitchBadArgument
24040068DollarSwitchRequiresAtLeastOneBranch
24140075Location40075
24240076Location40076
24340077Location40077
24440078Location40078
24540079Location40079
24640080Location40080
24740081DollarInRequiresArray
24840085Location40085
24940086Location40086
25040087Location40087
25140090Location40090
25240091Location40091
25340092Location40092
25440093Location40093
25540094Location40094
25640096Location40096
25740097Location40097
25840100Location40100
25940101Location40101
26040102Location40102
26140103Location40103
26240104Location40104
26340105Location40105
26440147Location40147
26540156Location40156
26640158Location40158
26740160Location40160
26840169Location40169
26940177Location40177
27040181Location40181
27140185Location40185
27240191Location40191
27340192Location40192
27440193Location40193
27540194Location40194
27640195Location40195
27740196Location40196
27840197Location40197
27940198Location40198
28040199Location40199
28140200Location40200
28240201Location40201
28340202Location40202
28440218Location40218
28540228Location40228
28640229Location40229
28740234Location40234
28840235Location40235
28940236Location40236
29040237Location40237
29140238Location40238
29240272Location40272
29340319Location40319
29440321Location40321
29540323Location40323
29640324UnrecognizedCommand
29740352Location40352
29840386DollarArrayToObjectRequiresArray
29940390DollarObjectToArrayRequiresObject
30040391DollarArrayToObjectAllMustBeObjects
30140392DollarArrayToObjectIncorrectNumberOfKeys
30240393DollarArrayToObjectRequiresObjectWithKAndV
30340394DollarArrayToObjectObjectKeyMustBeString
30440395DollarArrayToObjectArrayKeyMustBeString
30540396DollarArrayToObjectAllMustBeArrays
30640397DollarArrayToObjectIncorrectArrayLength
30740398DollarArrayToObjectBadInputTypeFormat
30840400DollarMergeObjectsInvalidType
30940414Location40414
31040415UnknownBsonField
31140485Location40485
31240489Location40489
31340515Location40515
31440516Location40516
31540517Location40517
31640518Location40518
31740519Location40519
31840520Location40520
31940521Location40521
32040522Location40522
32140523Location40523
32240524Location40524
32340525Location40525
32440533Location40533
32540535Location40535
32640536Location40536
32740539Location40539
32840540Location40540
32940541Location40541
33040542Location40542
33140600Location40600
33240601Location40601
33340602Location40602
33440603Location40603
33540647ChangeStreamBadResumeToken
33640684Location40684
33742501InsufficientPrivilege
33850694Location50694
33950695Location50695
34050696Location50696
34150699Location50699
34250700Location50700
34350723Location50723
34450752Location50752
34550759Location50759
34650989Location50989
34751003Location51003
34851024Location51024
34951044Location51044
35051045Location51045
35151047Location51047
35251074Location51074
35351075Location51075
35451080DollarRoundOverflowInt64
35551081DollarRoundFirstArgMustBeNumeric
35651082DollarRoundPrecisionMustBeIntegral
35751083DollarRoundPrecisionOutOfRange
35851091Location51091
35951103Location51103
36051104Location51104
36151105Location51105
36251106Location51106
36351107Location51107
36451108Location51108
36551109Location51109
36651110Location51110
36751111Location51111
36851132Location51132
36951134Location51134
37051151Location51151
37151156Location51156
37251178Location51178
37351183Location51183
37451185Location51185
37551186Location51186
37651187Location51187
37751191Location51191
37851246Location51246
37951247Location51247
38051276Location51276
38151743Location51743
38251744Location51744
38351745Location51745
38451746Location51746
38551747Location51747
38651748Location51748
38751749Location51749
38851750Location51750
38951751Location51751
390327391Location327391
391327392Location327392
392605001Location605001
3931257300DollarIfNullRequiresAtLeastTwoArgs
3942942500Location2942500
3952942501Location2942501
3962942502Location2942502
3972942503Location2942503
3982942504Location2942504
3992942505Location2942505
4002942506Location2942506
4013040501DollarRandNonEmptyArgument
4023041701Location3041701
4033041702Location3041702
4043041703Location3041703
4053041704Location3041704
4064031700IntermediateResultTooLarge
4074161100DollarSetFieldRequiresObject
4084161101DollarSetFieldUnknownArgument
4094161102Location4161102
4104161103Location4161103
4114161104Location4161104
4124161105Location4161105
4134161106Location4161106
4144161107Location4161107
4154161108Location4161108
4164161109Location4161109
4174341107Location4341107
4184890500Location4890500
4194940400Location4940400
4204940401Location4940401
4215107200Location5107200
4225107201Location5107201
4235166301Location5166301
4245166302Location5166302
4255166303Location5166303
4265166304Location5166304
4275166305Location5166305
4285166307Location5166307
4295166400Location5166400
4305166401Location5166401
4315166402Location5166402
4325166403Location5166403
4335166404Location5166404
4345166405Location5166405
4355166406Location5166406
4365339900Location5339900
4375339901Location5339901
4385339902Location5339902
4395371601Location5371601
4405371602Location5371602
4415371603Location5371603
4425423900Location5423900
4435423901Location5423901
4445423902Location5423902
4455429413Location5429413
4465429414Location5429414
4475429513Location5429513
4485439007Location5439007
4495439008Location5439008
4505439009Location5439009
4515439010Location5439010
4525439012Location5439012
4535439013Location5439013
4545439014Location5439014
4555439015Location5439015
4565439016Location5439016
4575439017Location5439017
4585439018Location5439018
4595490710Location5490710
4605624900Location5624900
4615624901Location5624901
4625626500Location5626500
4635654600Location5654600
4645654601Location5654601
4655654602Location5654602
4665687301Location5687301
4675687302Location5687302
4685687400Location5687400
4695687401Location5687401
4705733201Location5733201
4715733401Location5733401
4725733402Location5733402
4735733403Location5733403
4745733406Location5733406
4755733408Location5733408
4765733409Location5733409
4775746102Location5746102
4785787801Location5787801
4795787900Location5787900
4805787901Location5787901
4815787902Location5787902
4825787903Location5787903
4835787906Location5787906
4845787907Location5787907
4855787908Location5787908
4865788001Location5788001
4875788002Location5788002
4885788003Location5788003
4895788004Location5788004
4905788005Location5788005
4915788200Location5788200
4925788604Location5788604
4935858203Location5858203
4945860402Location5860402
4955876900Location5876900
4965897900Location5897900
4975946802Location5946802
4985976500Location5976500
4996007200Location6007200
5006045000Location6045000
5016050106Location6050106
5026050202Location6050202
5036050204Location6050204
5046053600Location6053600
5056586400Location6586400
5067429703Location7429703
5077436100Location7436100
5087555701Location7555701
5097555702Location7555702
5107749501Location7749501
5117750301Location7750301
5127750302Location7750302
5137750303Location7750303
5148993000Location8993000