summary refs log tree commit diff
path: root/synapse/storage (follow)
Commit message (Expand)AuthorAgeFilesLines
* Merge pull request #6004 from matrix-org/jaywink/autojoin-create-real-usersJason Robinson2019-09-091-0/+37
|\
| * Fix code style, againJason Robinson2019-09-091-3/+1
| * Simplify count_real_users SQL to only count user_type is null rowsJason Robinson2019-09-091-1/+1
| * Simplify is_real_user_txn check to trust user_type is null if real userJason Robinson2019-09-091-1/+1
| * Auto-fix a few code style issuesJason Robinson2019-09-091-4/+4
| * Only count real users when checking for auto-creation of auto-join roomJason Robinson2019-09-091-0/+39
* | Merge pull request #5934 from matrix-org/erikj/censor_redactionsErik Johnston2019-09-092-1/+119
|\ \ | |/ |/|
| * Fix commentsErik Johnston2019-09-091-2/+3
| * Use better names in SQLErik Johnston2019-09-091-5/+8
| * Fixup commentErik Johnston2019-09-091-4/+12
| * Don't start looping call unless enabledErik Johnston2019-09-091-1/+2
| * Handle setting retention period to 0Erik Johnston2019-09-091-1/+1
| * Merge branch 'develop' of github.com:matrix-org/synapse into erikj/censor_red...Erik Johnston2019-09-0516-378/+959
| |\
| * | Make redaction retention period configurableErik Johnston2019-09-051-2/+4
| * | Censor redactions in DB after a monthErik Johnston2019-08-302-1/+104
* | | Servers-known-about statistic (#5981)Amber Brown2019-09-071-0/+59
* | | Merge pull request #5998 from matrix-org/erikj/fixup_federate_flagErik Johnston2019-09-061-1/+3
|\ \ \
| * | | Correctly handle non-bool m.federate flagErik Johnston2019-09-061-1/+3
| | |/ | |/|
* | | Move delete_threepid_session into RegistrationWorkerStoreAndrew Morgan2019-09-061-25/+25
* | | Move get_threepid_validation_session into RegistrationWorkerStoreAndrew Morgan2019-09-061-54/+54
|/ /
* | Opentracing context cannot be noneJorik Schellekens2019-09-051-1/+1
* | Fix and refactor room and user stats (#5971)Erik Johnston2019-09-045-345/+904
* | Remove double return statements (#5962)Andrew Morgan2019-09-033-4/+0
* | Opentrace device lists (#5853)Jorik Schellekens2019-09-032-0/+26
* | Remove unnecessary parentheses around return statements (#5931)Andrew Morgan2019-08-3010-28/+28
|/
* Merge pull request #5902 from matrix-org/hs/exempt-support-users-from-consentWill Hunt2019-08-281-0/+1
|\
| * Ignore consent for support usersHalf-Shot2019-08-231-0/+1
* | Fix a cache-invalidation bug for worker-based deployments (#5920)Richard van der Hoff2019-08-281-8/+16
* | Allow schema deltas to be engine-specific (#5911)reivilibre2019-08-271-5/+19
|\ \
| * | Code style (Black)Olivier Wilkinson (reivilibre)2019-08-271-3/+1
| * | Allow schema deltas to be engine-specificOlivier Wilkinson (reivilibre)2019-08-271-5/+21
| |/
* / Add Admin API capability to set adminship of a user (#5878)reivilibre2019-08-271-0/+23
|/
* Propagate opentracing contexts through EDUs (#5852)Jorik Schellekens2019-08-222-6/+53
* Opentrace e2e keys (#5855)Jorik Schellekens2019-08-222-3/+49
* Add missing index on users_in_public_rooms. (#5894)Richard van der Hoff2019-08-221-0/+17
* Servlet to purge old rooms (#5845)Richard van der Hoff2019-08-221-0/+137
* Drop some unused tables. (#5893)Richard van der Hoff2019-08-213-47/+22
* Merge pull request #5857 from matrix-org/uhoreg/fix_e2e_room_keys_indexHubert Chathi2019-08-162-1/+19
|\
| * update set_e2e_room_key to agree with fixed indexHubert Chathi2019-08-141-1/+1
| * add the version field to the index for e2e_room_keysHubert Chathi2019-08-141-0/+18
* | Merge pull request #5809 from matrix-org/erikj/handle_pusher_stopErik Johnston2019-08-131-8/+22
|\ \
| * | Clarify docstringErik Johnston2019-08-131-1/+1
| * | Handle pusher being deleted during processing.Erik Johnston2019-08-011-8/+22
* | | Merge pull request #5826 from matrix-org/erikj/reduce_event_pausesErik Johnston2019-08-131-128/+142
|\ \ \
| * | | Don't unnecessarily block notifying of new events.Erik Johnston2019-08-061-128/+142
| | |/ | |/|
* | | Merge pull request #5788 from matrix-org/rav/metaredactionsRichard van der Hoff2019-08-121-101/+112
|\ \ \ | |/ / |/| |
| * | Handle loops in redaction eventsRichard van der Hoff2019-07-301-60/+36
| * | recursively fetch redactionsRichard van der Hoff2019-07-301-32/+36
| * | split _get_events_from_db out of _enqueue_eventsRichard van der Hoff2019-07-291-32/+51
| * | Return dicts from _fetch_event_listRichard van der Hoff2019-07-291-15/+27
* | | Have ClientReaderSlavedStore inherit RegistrationStore (#5806)Andrew Morgan2019-08-011-21/+21
| |/ |/|
* | Don't recreate columnErik Johnston2019-07-302-1/+22
* | Fix current_state_events membership background update.Erik Johnston2019-07-302-1/+1
|/
* Merge pull request #5774 from matrix-org/erikj/fix_rejected_membershipErik Johnston2019-07-291-0/+6
|\
| * Fix room summary when rejected events are in stateErik Johnston2019-07-261-0/+6
* | Merge pull request #5752 from matrix-org/erikj/forgotten_userErik Johnston2019-07-292-35/+123
|\ \
| * | Expand commentErik Johnston2019-07-291-0/+5
| * | Remove lost commentErik Johnston2019-07-291-7/+0
| |/
| * Remove join when calculating room summaries.Erik Johnston2019-07-241-13/+21
| * Remove join on room_memberships when fetching rooms for user.Erik Johnston2019-07-241-22/+36
| * Add function to get all forgotten rooms for userErik Johnston2019-07-242-0/+68
* | Fix current_state bg update to work on old SQLiteErik Johnston2019-07-291-2/+2
* | Merge branch 'master' into developRichard van der Hoff2019-07-261-0/+4
|\ \
| * | Fix DoS when there is a cycle in redaction eventsRichard van der Hoff2019-07-261-0/+4
* | | Merge pull request #5767 from matrix-org/rav/redactions/cross_room_idRichard van der Hoff2019-07-251-0/+27
|\| |
| * | log when a redaction attempts to redact an event in a different roomRichard van der Hoff2019-07-251-0/+27
* | | Stop trying to fetch events with event_id=None. (#5753)Richard van der Hoff2019-07-242-10/+15
* | | Replace returnValue with return (#5736)Amber Brown2019-07-2337-362/+321
| |/ |/|
* | Speed up current state background update.Erik Johnston2019-07-231-18/+30
* | Add `user_type` to returned fields in admin API user list endpointsJason Robinson2019-07-221-3/+3
* | Merge pull request #5720 from matrix-org/erikj/transactions_upsertErik Johnston2019-07-191-0/+20
|\ \
| * | Use upsert when updating destination retry intervalErik Johnston2019-07-191-0/+20
| |/
* | Merge pull request #5713 from matrix-org/erikj/use_cache_for_filtered_stateErik Johnston2019-07-191-2/+6
|\ \
| * | Delegate to cached version when using get_filtered_current_state_idsErik Johnston2019-07-181-2/+6
| |/
* | Merge pull request #5706 from matrix-org/erikj/add_memberships_to_current_stateErik Johnston2019-07-197-41/+194
|\ \ | |/ |/|
| * LoggingTransaction accepts None for callback lists.Erik Johnston2019-07-193-6/+16
| * Update comment for new columnErik Johnston2019-07-191-0/+3
| * Use the current_state_events.membership columnErik Johnston2019-07-181-17/+37
| * Track if current_state_events.membership is up to dateErik Johnston2019-07-181-0/+45
| * Add background update for current_state_events.membership columnErik Johnston2019-07-182-0/+54
| * Add membership column to current_state_events table.Erik Johnston2019-07-185-20/+41
* | Ignore redactions of m.room.create events (#5701)Richard van der Hoff2019-07-171-0/+12
* | More refactoring in `get_events_as_list` (#5707)Richard van der Hoff2019-07-171-27/+37
* | Fix redaction authentication (#5700)Richard van der Hoff2019-07-171-85/+129
* | Refactor `get_events_as_list` (#5699)Richard van der Hoff2019-07-171-48/+74
|/
* Merge pull request #5589 from matrix-org/erikj/admin_exfiltrate_dataErik Johnston2019-07-152-6/+28
|\
| * Fixup docstringsErik Johnston2019-07-121-7/+5
| * Merge branch 'develop' of github.com:matrix-org/synapse into erikj/admin_exfi...Erik Johnston2019-07-056-39/+25
| |\
| * | Assume key existence. Update docstringsErik Johnston2019-07-051-6/+10
| * | Add basic function to get all data for a user out of synapseErik Johnston2019-07-021-0/+20
* | | Implement access token expiry (#5660)Richard van der Hoff2019-07-122-5/+32
* | | fix typo: backgroud -> backgroundAndrew Morgan2019-07-121-4/+4
* | | small typo fix (#5655)Andrew Morgan2019-07-111-1/+1
* | | Remove access-token support from RegistrationStore.register (#5642)Richard van der Hoff2019-07-101-20/+4
* | | Include the original event in /relations (#5626)Andrew Morgan2019-07-091-1/+1
* | | Remove support for invite_3pid_guest. (#5625)Richard van der Hoff2019-07-051-47/+0
| |/ |/|
* | remove dead transaction persist code (#5622)Richard van der Hoff2019-07-051-28/+0
* | Move logging utilities out of the side drawer of util/ and into logging/ (#5606)Amber Brown2019-07-044-7/+7
* | Fix a number of "Starting txn from sentinel context" warnings (#5605)Richard van der Hoff2019-07-032-4/+18
|/
* Review commentsErik Johnston2019-06-271-3/+1
* Use batch_iter and correct docstringErik Johnston2019-06-261-15/+12
* Rename get_users_whose_devices_changedErik Johnston2019-06-261-3/+3
* Refactor get_user_ids_changed to pull less from DBErik Johnston2019-06-261-10/+41
* Merge pull request #5499 from matrix-org/rav/cleanup_metricsRichard van der Hoff2019-06-241-22/+13
|\
| * blackRichard van der Hoff2019-06-241-6/+2
| * Merge branch 'develop' into rav/cleanup_metricsRichard van der Hoff2019-06-2433-254/+306
| |\
| * | Simplify PerformanceCounters.update interfaceRichard van der Hoff2019-06-191-11/+12
| * | Remove unused _get_event_countersRichard van der Hoff2019-06-191-7/+1
* | | Merge pull request #5498 from matrix-org/rav/fix_clock_reversalRichard van der Hoff2019-06-241-6/+14
|\ \ \ | |_|/ |/| |
| * | Use monotonic clock where possible for metricsRichard van der Hoff2019-06-191-6/+14
* | | Fix "Unexpected entry in 'full_schemas'" log warning (#5509)Richard van der Hoff2019-06-211-1/+1
* | | BlackErik Johnston2019-06-201-2/+2
* | | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/histogram_...Erik Johnston2019-06-2034-276/+286
|\ \ \
| * | | Run Black. (#5482)Amber Brown2019-06-2033-253/+252
| * | | Merge pull request #5480 from matrix-org/erikj/extremities_dummy_eventsErik Johnston2019-06-191-0/+29
| |\ \ \
| | * | | Add experimental option to reduce extremities.Erik Johnston2019-06-181-0/+29
| * | | | Fix typo in deactivation background jobBrendan Abolivier2019-06-191-1/+1
| | |_|/ | |/| |
| * | | Remove Postgres 9.4 support (#5448)Amber Brown2019-06-182-24/+6
| |/ /
* | | Add descriptions and remove redundant set(..)Erik Johnston2019-06-191-3/+5
* | | Add metrics for len of new extremities persisted.Erik Johnston2019-06-171-1/+23
|/ /
* | Merge pull request #5461 from matrix-org/erikj/histograms_are_cumalitiveErik Johnston2019-06-141-1/+2
|\ \
| * | Prometheus histograms are cumalativeErik Johnston2019-06-141-1/+2
* | | Fix background job for deactivated flagBrendan Abolivier2019-06-141-2/+4
* | | Don't send renewal emails to deactivated usersBrendan Abolivier2019-06-142-2/+16
|/ /
* | Track deactivated accounts in the database (#5378)Brendan Abolivier2019-06-142-0/+133
* | Expose statistics on extrems to prometheus (#5384)Amber Brown2019-06-131-13/+31
* | Merge branch 'release-v1.0.0' of github.com:matrix-org/synapse into developErik Johnston2019-06-112-1/+5
|\|
| * Fix defaults on checking threepidsErik Johnston2019-06-101-1/+1
| * Fix bug sending federation transactions with lots of EDUsErik Johnston2019-06-101-0/+4
* | add monthly active users to phonehome stats (#5252)Neil Johnson2019-06-101-15/+29
|/
* Fix key verification when key stored with null valid_until_msErik Johnston2019-06-101-0/+8
* Prevent multiple device list updates from breaking a batch send (#5156)Andrew Morgan2019-06-061-29/+123
* Merge pull request #5320 from matrix-org/hawkowl/full-schema-v1Erik Johnston2019-06-065-2/+2352
|\
| * fix maybeAmber H. Brown2019-06-071-20/+2
| * just user dir?Amber H. Brown2019-06-071-1/+19
| * remove background updates that arent neededAmber H. Brown2019-06-071-33/+1
| * add more commentsAmber Brown2019-06-061-0/+5
| * add stuff in bg updatesAmber Brown2019-06-041-10/+62
| * WHY IS THIS CALLED A SLIGHTLY DIFFERENT THINGAmber Brown2019-06-031-0/+1
| * more fixAmber Brown2019-06-031-0/+38
| * fix schemasAmber Brown2019-06-034-61/+20
| * full schemaAmber Brown2019-06-033-0/+2315
| * prepareAmber Brown2019-06-031-2/+14
* | Add ability to perform password reset via email without trusting the identity...Andrew Morgan2019-06-064-5/+324
* | Merge pull request #5221 from matrix-org/erikj/fix_worker_sytestErik Johnston2019-06-061-1/+11
|\ \
| * | Better wordsErik Johnston2019-06-061-1/+1
| * | Fix get_max_topological_token to never return NoneErik Johnston2019-05-211-1/+11
* | | Fix background updates to handle redactions/rejections (#5352)Erik Johnston2019-06-061-0/+37
* | | FixErik Johnston2019-06-031-1/+2
* | | Ignore room state with null bytes in for room statsErik Johnston2019-06-031-0/+15
| |/ |/|
* | Merge pull request #5276 from matrix-org/babolivier/account_validity_job_deltaErik Johnston2019-05-311-2/+20
|\ \
| * | Move delta from +10% to -10%Brendan Abolivier2019-05-311-2/+2
| * | Make max_delta equal to period * 10%Brendan Abolivier2019-05-311-4/+3
| * | Allow configuring a range for the account validity startup jobBrendan Abolivier2019-05-281-2/+21
* | | Merge pull request #5294 from matrix-org/erikj/speed_up_room_statsErik Johnston2019-05-314-87/+111
|\ \ \
| * | | Add indices. Remove room_ids accidentally addedErik Johnston2019-05-312-13/+56
| * | | Join against events to use its room_id indexErik Johnston2019-05-301-1/+6
| * | | Move deletion from table inside txnErik Johnston2019-05-301-2/+5
| * | | Fetch membership counts all at onceErik Johnston2019-05-302-38/+18
| * | | Get events all at onceErik Johnston2019-05-301-33/+26
* | | | Add index to temp tableErik Johnston2019-05-301-0/+1
|/ / /
* | | Merge pull request #5278 from matrix-org/erikj/cleanup_bad_extremitiesErik Johnston2019-05-305-181/+436
|\ \ \
| * | | Update synapse/storage/events_bg_updates.pyErik Johnston2019-05-301-1/+1
| * | | Rename constantErik Johnston2019-05-301-3/+3
| * | | Move event background updates to a separate fileErik Johnston2019-05-303-369/+405
| * | | Fixup comments and loggingErik Johnston2019-05-302-9/+15
| * | | Log actual number of entries deletedErik Johnston2019-05-292-5/+13
| * | | Add DB bg update to cleanup extremities.Erik Johnston2019-05-292-0/+205
* | | | Implement the SHHS complexity API (#5216)Amber Brown2019-05-301-1/+49
|/ / /
* | | Correctly filter out extremities with soft failed prevs (#5274)Erik Johnston2019-05-291-3/+79
* | | Merge pull request #5268 from matrix-org/babolivier/account_validity_fix_schemaBrendan Abolivier2019-05-281-0/+3
|\| |
| * | Fix schema update for account validityBrendan Abolivier2019-05-281-0/+3
* | | Fix logging for room stats background updateTravis Ralston2019-05-251-1/+1
* | | Store key validity time in the storage layerRichard van der Hoff2019-05-232-10/+44
* | | Rewrite store_server_verify_key to store several keys at once (#5234)Richard van der Hoff2019-05-231-26/+39
* | | Simplifications and comments in do_auth (#5227)Richard van der Hoff2019-05-231-1/+1
* | | Room Statistics (#4338)Amber Brown2019-05-216-3/+597
* | | Merge pull request #5203 from matrix-org/erikj/aggregate_by_senderErik Johnston2019-05-211-1/+1
|\ \ \
| * | | Only count aggregations from distinct sendersErik Johnston2019-05-171-1/+1
* | | | Merge pull request #5212 from matrix-org/erikj/deny_multiple_reactionsErik Johnston2019-05-211-3/+45
|\ \ \ \
| * | | | Block attempts to annotate the same event twiceErik Johnston2019-05-201-3/+45
| | |_|/ | |/| |
* | | | Exclude soft-failed events from fwd-extremity candidates. (#5146)Richard van der Hoff2019-05-211-2/+7
* | | | Merge pull request #5204 from matrix-org/babolivier/account_validity_expirati...Brendan Abolivier2019-05-212-12/+62
|\ \ \ \ | |/ / / |/| | / | | |/ | |/|
| * | Do the select and insert in a single transactionBrendan Abolivier2019-05-211-10/+6
| * | Add startup background job for account validityBrendan Abolivier2019-05-172-12/+66
* | | Rename relation types to match MSCErik Johnston2019-05-201-4/+4
* | | Merge pull request #5209 from matrix-org/erikj/reactions_baseErik Johnston2019-05-204-4/+476
|\ \ \
| * | | Correctly update aggregation counts after redactionErik Johnston2019-05-202-0/+20
| | |/ | |/|
| * | Fixup bsaed on review commentsErik Johnston2019-05-171-15/+17
| * | Add basic editing supportErik Johnston2019-05-161-2/+58
| * | Move parsing of tokens out of storage layerErik Johnston2019-05-161-14/+2
| * | Indirect tuple conversionErik Johnston2019-05-161-0/+6
| * | Fix relations in worker modeErik Johnston2019-05-162-5/+11
| * | Add cache to relationsErik Johnston2019-05-161-0/+8
| * | Add aggregations APIErik Johnston2019-05-161-6/+219
| * | Actually check for None rather falseyErik Johnston2019-05-151-2/+2
| * | Add simple pagination APIErik Johnston2019-05-151-0/+80
| * | Add simple send_relation API and track in DBErik Johnston2019-05-154-0/+93
* | | Spelling and clarificationsErik Johnston2019-05-171-5/+9
* | | Update docstringErik Johnston2019-05-161-1/+12
|/ /
* / Make generating SQL bounds for pagination genericErik Johnston2019-05-151-61/+118
|/
* Update docstring with correct typeErik Johnston2019-05-151-1/+1
* Expose DataStore._get_events as get_events_as_listErik Johnston2019-05-145-29/+53
* Limit the number of EDUs in transactions to 100 as expected by receiver (#5138)Quentin Dufour2019-05-091-1/+1
* Fix infinite loop in presence handlerRichard van der Hoff2019-04-261-0/+18
* Merge branch 'develop' of github.com:matrix-org/synapse into babolivier/accou...Erik Johnston2019-04-1769-3786/+2805
|\
| * Merge pull request #5047 from matrix-org/babolivier/account_expirationBrendan Abolivier2019-04-172-18/+159
| |\
| * \ Merge pull request #5033 from matrix-org/erikj/fix_schema_deltaErik Johnston2019-04-101-1/+3
| |\ \
| | * | Fix schema upgrade when dropping tablesErik Johnston2019-04-091-1/+3
| * | | Merge pull request #5027 from matrix-org/babolivier/account_expirationBrendan Abolivier2019-04-092-0/+54
| |\ \ \ | | |/ / | |/| |
| * | | Rewrite Datastore.get_server_verify_keysRichard van der Hoff2019-04-091-28/+46
| * | | Remove unused server_tls_certificates functions (#5028)Richard van der Hoff2019-04-083-59/+5
| * | | drop tables listed in #1830 (#4992)Neil Johnson2019-04-0824-752/+42
| * | | Merge pull request #5001 from matrix-org/rav/keyring_cleanupsRichard van der Hoff2019-04-081-2/+2
| |\ \ \
| | * | | Fix docstring on get_server_keys_jsonRichard van der Hoff2019-04-041-2/+2
| * | | | Clean up the database pagination code (#5007)Amber Brown2019-04-052-67/+63
| * | | | Add functions to delete a groupErik Johnston2019-04-031-0/+37
| * | | | Fix grammar and document get_current_users_in_room (#4998)Andrew Morgan2019-04-031-1/+1
| |/ / /
| * | | Remove presence lists (#4989)Neil Johnson2019-04-034-96/+20
| * | | Merge pull request #4982 from matrix-org/erikj/msc1915Erik Johnston2019-04-032-0/+141
| |\ \ \
| | * | | Fixup docstringsErik Johnston2019-04-022-5/+5
| | * | | Grandfather in existing user threepidsErik Johnston2019-04-012-0/+37
| | * | | Track IS used to bind 3PIDsErik Johnston2019-04-012-0/+104
| * | | | Run black on the rest of the storage module (#4996)Amber Brown2019-04-0341-2455/+2130
| * | | | Make starting pushers faster during start upErik Johnston2019-04-021-0/+30
| * | | | Fix sync bug when accepting invites (#4956)Richard van der Hoff2019-04-022-11/+18
| * | | | Collect room-version variations into one place (#4969)Richard van der Hoff2019-04-011-1/+2
| |/ / /
| * | | Merge pull request #4955 from matrix-org/rav/merge_state_into_eventsRichard van der Hoff2019-03-281-3/+0
| |\ \ \
| | * | | Combine the CurrentStateDeltaStream into the EventStreamRichard van der Hoff2019-03-271-3/+0
| * | | | Run `black` on some storage modules that the stats branch touches (#4959)Amber Brown2019-03-292-380/+335
| |/ / /
* | | / Add management endpoints for account validityBrendan Abolivier2019-04-171-12/+17
| |_|/ |/| |
* | | Send out emails with links to extend an account's validity periodBrendan Abolivier2019-04-172-18/+159
| |/ |/|
* | Add account expiration featureBrendan Abolivier2019-04-093-1/+55
|/
* Use the state event amount for userdir import batching, not room count (#4944)Amber Brown2019-03-271-8/+20
* Fix bug where read-receipts lost their timestamps (#4927)Richard van der Hoff2019-03-251-1/+3
* Refactor out state delta handling into its own class (#4917)Amber Brown2019-03-252-64/+76
* Fix upsertErik Johnston2019-03-211-0/+1
* comment block_roomErik Johnston2019-03-201-0/+9
* Allow blocking a room multiple timesErik Johnston2019-03-201-2/+4
* Batching in the user directory import (#4900)Amber Brown2019-03-211-0/+13
* Fix user directory background update (#4887)Erik Johnston2019-03-191-1/+1
* Migrate the user directory initial population to a background task (#4864)Amber Brown2019-03-193-96/+312
* Merge pull request #4846 from matrix-org/hawkowl/userdir-searchErik Johnston2019-03-144-75/+92
|\
| * fixupAmber Brown2019-03-131-1/+1
| * fixupAmber Brown2019-03-132-55/+11
| * fixupAmber Brown2019-03-121-1/+1
| * fixupAmber Brown2019-03-121-1/+2
| * fixupAmber Brown2019-03-122-113/+69
| * fixupAmber Brown2019-03-121-1/+1
| * use the old methodAmber Brown2019-03-121-3/+2