{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":63110867,"defaultBranch":"development","name":"typedb","ownerLogin":"vaticle","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-07-11T23:59:57.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/10490615?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1718105797.0","currentOid":""},"activityList":{"items":[{"before":"775e2d38390de2c4a9244de9c62eef5f1d646b11","after":"032ea0807e5a8cb20c7e0b9416792c39c7e2fb9a","ref":"refs/heads/3.0","pushedAt":"2024-06-19T17:02:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"krishnangovindraj","name":"Krishnan Govindraj","path":"/krishnangovindraj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4918770?s=80&v=4"},"commit":{"message":"Implement structs (#7083)\n\n## Usage and product changes\r\nWe implement structs. A struct is a named value-type defined by a number of (possibly optional) named fields, each of which has a specified value-type - including other structs. These structs can be referenced by name when used as the value-type of an attribute. \r\n\r\n## Implementation\r\n* Implement StructDefinition.\r\n* Implement StructValue, & moves StructValue to the encoding package, where all other custom value types are also defined.\r\n* Introduce StructIndexEntry - For looking up structs given the value of a field. These were encoded as follows:","shortMessageHtmlLink":"Implement structs (#7083)"}},{"before":"474050ad1beb4e2c7616c7d067c75460e6b6ffc7","after":"cdd9f4e85cf78c04af3f57d88cc76e237a8e6347","ref":"refs/heads/development","pushedAt":"2024-06-19T14:26:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"flyingsilverfin","name":"Joshua Send","path":"/flyingsilverfin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1386526?s=80&v=4"},"commit":{"message":"Fix large queries freezing server with new thread-pool for transaction requests (#7088)\n\n## Usage and product changes\r\nWe introduce a separate thread-pool for servicing transaction requests.\r\nThis avoids the case where multiple long running queries can occupy all\r\nthe threads in the pool, and causing the server to be unable to process\r\nother requests. Critically, this allows session close calls to terminate\r\nany such transactions.\r\n\r\n## Implementation\r\n* Adds a `typedb-transaction-service` thread-pool in `Executors`\r\n* Introduces a GRPC `ServerCallExecutorSupplier` allowing us to choose\r\nwhich thread-pool to execute individual GRPC calls on.\r\n**`ServerCallExecutorSupplier` [is an experimental\r\nAPI](https://github.com/grpc/grpc-java/issues/8274)**\r\n- `transaction()` calls are now executed on\r\n`typedb-transaction-service`, whereas all other calls are executed on\r\n`typedb-service`","shortMessageHtmlLink":"Fix large queries freezing server with new thread-pool for transactio…"}},{"before":"c093ac30ab8c2394a1164d3fcc365754de1b2534","after":"474050ad1beb4e2c7616c7d067c75460e6b6ffc7","ref":"refs/heads/development","pushedAt":"2024-06-19T12:02:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"vaticle-bot","name":"TypeDB Bot","path":"/vaticle-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84574929?s=80&v=4"},"commit":{"message":"//tool/sync:dependencies vaticle/typeql@4027bf2","shortMessageHtmlLink":"//tool/sync:dependencies vaticle/typeql@4027bf2"}},{"before":"3a59bb5d7df68668f1293444400535a3cae1716b","after":"c093ac30ab8c2394a1164d3fcc365754de1b2534","ref":"refs/heads/development","pushedAt":"2024-06-13T12:46:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"vaticle-bot","name":"TypeDB Bot","path":"/vaticle-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84574929?s=80&v=4"},"commit":{"message":"//tool/sync:dependencies vaticle/dependencies@294ef72","shortMessageHtmlLink":"//tool/sync:dependencies vaticle/dependencies@294ef72"}},{"before":"1548db92519a4ee7700e2e9e87e6babe7e3e46ba","after":"3a59bb5d7df68668f1293444400535a3cae1716b","ref":"refs/heads/development","pushedAt":"2024-06-13T12:04:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"vaticle-bot","name":"TypeDB Bot","path":"/vaticle-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84574929?s=80&v=4"},"commit":{"message":"//tool/sync:dependencies vaticle/typedb-protocol@2.28.4","shortMessageHtmlLink":"//tool/sync:dependencies vaticle/typedb-protocol@2.28.4"}},{"before":"433b241bd91436835bb18fe62a8fb78ecfd616b3","after":"1548db92519a4ee7700e2e9e87e6babe7e3e46ba","ref":"refs/heads/development","pushedAt":"2024-06-13T11:37:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"vaticle-bot","name":"TypeDB Bot","path":"/vaticle-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84574929?s=80&v=4"},"commit":{"message":"//tool/sync:dependencies vaticle/typedb-protocol@f09d868","shortMessageHtmlLink":"//tool/sync:dependencies vaticle/typedb-protocol@f09d868"}},{"before":"4a3f24fc7e2763c2989b2c6677e9d162a250671c","after":"433b241bd91436835bb18fe62a8fb78ecfd616b3","ref":"refs/heads/development","pushedAt":"2024-06-13T10:59:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"vaticle-bot","name":"TypeDB Bot","path":"/vaticle-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84574929?s=80&v=4"},"commit":{"message":"//tool/sync:dependencies vaticle/typedb-protocol@59318bd","shortMessageHtmlLink":"//tool/sync:dependencies vaticle/typedb-protocol@59318bd"}},{"before":"731473f5225f2c29f54c14c077b180feceda58e9","after":"4a3f24fc7e2763c2989b2c6677e9d162a250671c","ref":"refs/heads/development","pushedAt":"2024-06-12T14:21:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"vaticle-bot","name":"TypeDB Bot","path":"/vaticle-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84574929?s=80&v=4"},"commit":{"message":"//tool/sync:dependencies vaticle/typedb-protocol@24f9e9d","shortMessageHtmlLink":"//tool/sync:dependencies vaticle/typedb-protocol@24f9e9d"}},{"before":"28a9f3522185f97fde9d61408a39f708363c6cbc","after":"c13b85255980f3c66e8807ea0fbbb1e182274101","ref":"refs/heads/master","pushedAt":"2024-06-11T10:30:44.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"vaticle-bot","name":"TypeDB Bot","path":"/vaticle-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84574929?s=80&v=4"},"commit":{"message":"Merge for 2.28.3 release (#7085)\n\n## Usage and product changes\r\nWe merge development into master for 2.28.3 release.","shortMessageHtmlLink":"Merge for 2.28.3 release (#7085)"}},{"before":"14deadc36d6833ca693ddb2df6096c7d3123d884","after":"731473f5225f2c29f54c14c077b180feceda58e9","ref":"refs/heads/development","pushedAt":"2024-06-11T09:32:30.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"vaticle-bot","name":"TypeDB Bot","path":"/vaticle-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84574929?s=80&v=4"},"commit":{"message":"Update VERSION to 2.28.3 and create release notes (#7084)\n\n## Usage and product changes\r\nUpdate VERSION to 2.28.3-rc0 and create release notes","shortMessageHtmlLink":"Update VERSION to 2.28.3 and create release notes (#7084)"}},{"before":"8ced9268b3f36bb4b58f1bd16f1012a88719e837","after":"775e2d38390de2c4a9244de9c62eef5f1d646b11","ref":"refs/heads/3.0","pushedAt":"2024-06-05T10:28:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"krishnangovindraj","name":"Krishnan Govindraj","path":"/krishnangovindraj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4918770?s=80&v=4"},"commit":{"message":"Update comment again, based on post stand-up analysis","shortMessageHtmlLink":"Update comment again, based on post stand-up analysis"}},{"before":"1b2ba9a3ac88a1fa2ed8c94b09e2a5c1300f59fb","after":"8ced9268b3f36bb4b58f1bd16f1012a88719e837","ref":"refs/heads/3.0","pushedAt":"2024-06-05T00:16:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"krishnangovindraj","name":"Krishnan Govindraj","path":"/krishnangovindraj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4918770?s=80&v=4"},"commit":{"message":"Add comment on hash collision analysis","shortMessageHtmlLink":"Add comment on hash collision analysis"}},{"before":"676a416e1f25f1161bc33fbc143225bf367d0bef","after":"1b2ba9a3ac88a1fa2ed8c94b09e2a5c1300f59fb","ref":"refs/heads/3.0","pushedAt":"2024-06-04T12:08:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dmitrii-ubskii","name":"Dmitrii Ubskii","path":"/dmitrii-ubskii","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18616863?s=80&v=4"},"commit":{"message":"Unit tests for value types + ordered has and role players (#7081)","shortMessageHtmlLink":"Unit tests for value types + ordered has and role players (#7081)"}},{"before":"d1c66baf02f3de59ce8ae77bbf61fe37e81b6569","after":"676a416e1f25f1161bc33fbc143225bf367d0bef","ref":"refs/heads/3.0","pushedAt":"2024-06-03T15:04:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"flyingsilverfin","name":"Joshua Send","path":"/flyingsilverfin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1386526?s=80&v=4"},"commit":{"message":"Fix checkstyle","shortMessageHtmlLink":"Fix checkstyle"}},{"before":"5a0989a9666abb5790e8f64baefc9bfbe97d6125","after":"d1c66baf02f3de59ce8ae77bbf61fe37e81b6569","ref":"refs/heads/3.0","pushedAt":"2024-06-03T14:49:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"flyingsilverfin","name":"Joshua Send","path":"/flyingsilverfin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1386526?s=80&v=4"},"commit":{"message":"Set up code paths for type inference, IR optimiser passes, traversal","shortMessageHtmlLink":"Set up code paths for type inference, IR optimiser passes, traversal"}},{"before":"cd9aa580ffa06e4f2c7c743b6ccd79eb6fb115a8","after":"28a9f3522185f97fde9d61408a39f708363c6cbc","ref":"refs/heads/master","pushedAt":"2024-06-03T13:27:31.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"vaticle-bot","name":"TypeDB Bot","path":"/vaticle-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84574929?s=80&v=4"},"commit":{"message":"Merge for 2.28.3-rc0 release (#7080)\n\n## Usage and product changes\r\nWe merge development into master for 2.28.3-rc0 release.","shortMessageHtmlLink":"Merge for 2.28.3-rc0 release (#7080)"}},{"before":"03215e4b558214d864d55abc679ee8ab8cd6446d","after":"14deadc36d6833ca693ddb2df6096c7d3123d884","ref":"refs/heads/development","pushedAt":"2024-06-03T10:29:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"vaticle-bot","name":"TypeDB Bot","path":"/vaticle-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84574929?s=80&v=4"},"commit":{"message":"Update VERSION to 2.28.3-rc0 and create release notes (#7079)\n\n## Usage and product changes\r\nUpdate VERSION to 2.28.3-rc0 and create release notes","shortMessageHtmlLink":"Update VERSION to 2.28.3-rc0 and create release notes (#7079)"}},{"before":null,"after":"126f44c45cd6e14c2a0bdd9844b66462993dafb7","ref":"refs/heads/test-dev-mode","pushedAt":"2024-05-31T15:08:11.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"farost","name":"Georgii Novoselov","path":"/farost","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22564079?s=80&v=4"},"commit":{"message":"Add circleci jobs for the test run","shortMessageHtmlLink":"Add circleci jobs for the test run"}},{"before":"a51a08ed74cd3db5fc29d0de71029f0310abdeb2","after":"03215e4b558214d864d55abc679ee8ab8cd6446d","ref":"refs/heads/development","pushedAt":"2024-05-31T14:26:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"flyingsilverfin","name":"Joshua Send","path":"/flyingsilverfin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1386526?s=80&v=4"},"commit":{"message":"Add development-mode for local and CI set ups (#7074)\n\n## Usage and product changes\r\n### development-mode\r\nWe add a new server's config parameter called `development-mode.enable`.\r\nThis parameter can be used to separate real \"release\" application runs\r\nfrom our testing.\r\n\r\nIn the future, this parameter can influence many different sides of the\r\nserver (logging settings, networking behavior?.., anything we want), but\r\nthe only current purpose of this field is to **completely** turn off\r\ndiagnostics and error reporting:\r\n* sentry;\r\n* diagnostics.\r\n\r\n`development-mode.enable` is an optional parameter, and the absence of\r\nit in the config is equivalent to `development-mode.enable=false`. It is\r\nexpected to be set to `true` for all the `config.yml` files used by\r\nlocal environments, tests, and snapshots.\r\n\r\n### --//server:config=[development/release] Bazel flag\r\nWe add a new Bazel build flag that helps choose the server configuration\r\nfor all the build jobs, addressing the newly added\r\n`development-mode.enable` option.\r\n \r\nExample of a release configuration build:\r\n```\r\nbazel build --//server:config=release //server:assemble-mac-x86_64-zip\r\n```\r\nExample of a development configuration build:\r\n```\r\nbazel build //server:assemble-mac-x86_64-zip\r\nbazel build --//server:config=development //server:assemble-mac-x86_64-zip\r\n```\r\n\r\n### deployment-id\r\nWe remove `deployment-id` from the `typedb` config as it makes sense\r\nonly for `Cloud` servers. Suppose it was set in anyone's config before.\r\nIn that case, the `deployment-id` value will be forcefully set to\r\n`server-id`, changing its previous manually set value.\r\n\r\nIt means that all the previous versions of `TypeDB Core` diagnostics\r\nsubmissions with different `server-id` and `deployment-id` (not expected\r\nto be higher than 0 - 10 servers) will possibly want to change the\r\n`deployment-id` in the database to avoid misleading query results.\r\n\r\n## Implementation\r\n### development-mode\r\nWe add new `Optional` `KeyValue`s for `YAMLParser`, acting exactly like\r\n`Predefined` config options, but letting the configuration miss the key\r\ncompletely, setting its values to defaults inside the code. This way,\r\ndeclaring\r\n```\r\nKeyValue.Optional developmentMode = optional(...);\r\n``` \r\nlets us set `development-mode.enable` to `true` this way:\r\n```\r\nvaticle-factory: # any other option\r\n enable: false # any value\r\n\r\ndevelopment-mode:\r\n enable: true \r\n# end of config\r\n```\r\nand set `development-mode.enable` to `false` in these two ways:\r\n```\r\nvaticle-factory: # any other option\r\n enable: false # any value\r\n\r\ndevelopment-mode:\r\n enable: false \r\n# end of config\r\n```\r\n```\r\nvaticle-factory: # any other option\r\n enable: false # any value\r\n\r\n# end of config\r\n```\r\n\r\nThis flag is still available for CLI manual overrides. \r\n\r\nFor `TypeDBCoreRunner` uses, this flag is forcefully set to `true`, not\r\nrespecting the provided `config.yml`. However, it's possible to override\r\nthis flag by passing it in the constructor if the runner user really\r\nwants to do it.\r\n\r\n### --//server:config=[development/release] Bazel flag\r\nThis flag affects all the targets that depend on the configuration file,\r\nincluding transitive dependencies (e.g. creating an archive of the\r\nserver's library).\r\nIt only accepts two values. Providing a wrong value leads to an explicit\r\nand specific build error.\r\n\r\n**NOTE: This is a Bazel flag, so it needs to be specified before the\r\n`--` for application flags!**\r\nFor example, this works:\r\n```\r\nbazel run --//server:config=release --define version=$(cat VERSION) //:deploy-linux-x86_64-targz -- release\r\n```\r\nThis does not:\r\n```\r\nbazel run --define version=$(cat VERSION) //:deploy-linux-x86_64-targz -- release --//server:config=release\r\n```","shortMessageHtmlLink":"Add development-mode for local and CI set ups (#7074)"}},{"before":"52f3874d683a7bcc061872c0b105510f10d0b810","after":"5a0989a9666abb5790e8f64baefc9bfbe97d6125","ref":"refs/heads/3.0","pushedAt":"2024-05-31T13:38:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"flyingsilverfin","name":"Joshua Send","path":"/flyingsilverfin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1386526?s=80&v=4"},"commit":{"message":"Patterns (#7078)\n\n## Usage and product changes\r\n\r\nWe introduce the `//ir` package, which contains the initial design for\r\nthe new intermediate-representation (IR) for patterns and functions. We\r\nalso introduce the idea of intermediate representation of `Program`,\r\nwhich will hold the entry point pattern and all required functions -\r\nthese can all have type inference and optimisation passes applied\r\ntogether.\r\n\r\nVariable categorisation, type inference, and \"compiler\" optimisation\r\npasses will live in the `//ir` package.\r\n\r\nWe also place packages and mostly empty modules for `//query`,\r\n`//answer` and `//function`.\r\nWe aim to have the following dependency graph:\r\n\r\n```\r\nQuery -> Function, IR, Answer, (Executor - not introduced yet), Concept\r\nFunction -> IR (maybe Answer?)\r\nIR -> Concept\r\n(Executor -> IR, Answer, Concept)\r\n```\r\n\r\nIn other words, a Query Manager will create an IR `Program` for the\r\nquery and invoked functions, and apply type inference and any 'compiler'\r\noptimisation passes. This IR will then be handed over to\r\ntraversal/executor to query plan, and execute (Query plan + IR).\r\n\r\n### IR design\r\n\r\nThe IR is build around the idea of a Functional Blocks. The `Program` is\r\na functional block, as well as each `FunctionIR` it conatins. A\r\nFunctional Block consists of a Pattern along with any Modifiers.\r\n\r\nA Pattern is a destructured IR of TypeQL. We will aim to break down all\r\noperations into their simplest form:\r\n```\r\n$x has name \"john\"\r\n->\r\n$x has $1\r\n$1 isa $2\r\n$2 type name\r\n$1 == \"john\"\r\n```\r\nor\r\n```\r\n$r ($x, $y, friend: $z) isa friendship;\r\n->\r\n$r isa $t\r\n$t type friendship\r\n$r roleplayer $x\r\n$r roleplayer $y\r\n$r roleplayer $z (role: $1)\r\n$1 sub friendship:friend\r\n```\r\n\r\nWe also remove all names from the IR, using a numbering scheme for\r\nvariables, and keeping a mapping from variable to Name in a shared\r\nPatternContext. PatternContext is a hidden construct, but helps with\r\ntracking variable declarations, validation, etc.","shortMessageHtmlLink":"Patterns (#7078)"}},{"before":"70a8f9e6b129764ae00ca1f02fc2b76d3ee952f4","after":null,"ref":"refs/heads/new-readme","pushedAt":"2024-05-31T08:53:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"haikalpribadi","name":"Haikal Pribadi","path":"/haikalpribadi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/567679?s=80&v=4"}},{"before":"dfb01e0eca8407724c52a8d1da2dc789d6142dca","after":"a51a08ed74cd3db5fc29d0de71029f0310abdeb2","ref":"refs/heads/development","pushedAt":"2024-05-31T08:53:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"haikalpribadi","name":"Haikal Pribadi","path":"/haikalpribadi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/567679?s=80&v=4"},"commit":{"message":"Updated readme (#7061)\n\nUpdated readme to align with new messaging.\r\n\r\n---------\r\n\r\nCo-authored-by: Christoph Dorn ","shortMessageHtmlLink":"Updated readme (#7061)"}},{"before":"b002e97e903989a569da4a4cbbaad48e32d09dff","after":"52f3874d683a7bcc061872c0b105510f10d0b810","ref":"refs/heads/3.0","pushedAt":"2024-05-30T15:19:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"krishnangovindraj","name":"Krishnan Govindraj","path":"/krishnangovindraj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4918770?s=80&v=4"},"commit":{"message":"Fix checkstyle coverage","shortMessageHtmlLink":"Fix checkstyle coverage"}},{"before":"273b03210c433da122648cb1d8ec0d066606d804","after":"b002e97e903989a569da4a4cbbaad48e32d09dff","ref":"refs/heads/3.0","pushedAt":"2024-05-30T15:10:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"krishnangovindraj","name":"Krishnan Govindraj","path":"/krishnangovindraj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4918770?s=80&v=4"},"commit":{"message":"Refactors Type concept's interaction with encoding to be through 'EncodableX' traits (#7076)\n\n## Usage and product changes\r\nWe refactor the encoding package to replace the TypeVertex/TypeEdge/TypeVertexProperty/TypeEdgeProperty constructor methods ( build_X_* new_X_* , build_prefix_* etc) with 'TypeXEncoding' traits. \r\n\r\nThe TypeXPropertyEncoding traits include build & decode methods for the value type of the property. This organises scattered encoding/decoding logic across TypeManager & free serialize/deserialize methods.\r\n\r\nThere are also some elements of schema validation introduced.\r\n\r\n## Implementation\r\n\r\n#### The TypeXEncoding traits\r\nThe TypeVertex constructors for EntityType goes from the macro generated methods:\r\n```\r\n\r\ntype_vertex_constructors!(\r\n new_vertex_entity_type,\r\n build_vertex_entity_type,\r\n build_vertex_entity_type_prefix,\r\n is_vertex_entity_type,\r\n Prefix::VertexEntityType\r\n);\r\n```\r\n\r\nto a `TypeVertexEncoding` trait implementation + an implementation for EntityType:\r\n\r\n```\r\n// Trait:\r\n// This had to be split in two to support `ObjectType`s\r\npub trait TypeVertexEncoding<'a> : Sized {\r\n\r\n fn from_vertex(vertex: TypeVertex<'a>) -> Result;\r\n\r\n fn from_bytes(bytes: Bytes<'a, BUFFER_KEY_INLINE>) -> Result {\r\n Self::from_vertex(TypeVertex::new(bytes))\r\n }\r\n\r\n fn into_vertex(self) -> TypeVertex<'a>;\r\n}\r\n\r\npub trait PrefixedTypeVertexEncoding<'a> : TypeVertexEncoding<'a>{\r\n const PREFIX: Prefix;\r\n\r\n fn build_from_type_id(type_id: TypeID) -> Self {\r\n Self::from_vertex(TypeVertex::build(Self::PREFIX.prefix_id(), type_id)).unwrap()\r\n }\r\n\r\n fn prefix_for_kind() -> StorageKey<'static, { TypeVertex::LENGTH_PREFIX }> {\r\n build_type_vertex_prefix_key(Self::PREFIX)\r\n }\r\n\r\n fn is_decodable_from_key(key: StorageKeyReference<'_>) -> bool {\r\n key.keyspace_id() == EncodingKeyspace::Schema.id() &&\r\n Self::is_decodable_from(Bytes::Reference(key.byte_ref()))\r\n }\r\n\r\n fn is_decodable_from(bytes: Bytes<'_, BUFFER_KEY_INLINE>) -> bool {\r\n bytes.length() == TypeVertex::LENGTH\r\n && TypeVertex::new(bytes).prefix() == Self::PREFIX\r\n }\r\n}\r\n\r\n// Implementation:\r\nimpl <'a> PrefixedTypeVertexEncoding<'a> for EntityType<'a> {\r\n const PREFIX: Prefix = VertexEntityType;\r\n}\r\nimpl<'a> TypeVertexEncoding<'a> for EntityType<'a> {\r\n fn from_vertex(vertex: TypeVertex<'a>) -> Result {\r\n debug_assert!(Self::PREFIX == VertexEntityType);\r\n if vertex.prefix() != Prefix::VertexEntityType {\r\n Err(UnexpectedPrefix { expected_prefix: Prefix::VertexEntityType, actual_prefix: vertex.prefix() })\r\n } else {\r\n Ok(EntityType { vertex })\r\n }\r\n }\r\n\r\n fn into_vertex(self) -> TypeVertex<'a> {\r\n self.vertex\r\n }\r\n}\r\n```\r\n\r\n#### Example of the encode/decode methods for a property value:\r\n```\r\nimpl<'a> TypeVertexPropertyEncoding<'a> for Label<'a> {\r\n const INFIX: Infix = Infix::PropertyLabel;\r\n\r\n fn from_value_bytes<'b>(value: ByteReference<'b>) -> Self {\r\n let string_bytes = StringBytes::new(Bytes::::Reference(value));\r\n Label::parse_from(string_bytes)\r\n }\r\n\r\n fn to_value_bytes(self) -> Option> {\r\n Some(Bytes::Array(ByteArray::from(self.scoped_name().bytes())))\r\n }\r\n}\r\n\r\n```","shortMessageHtmlLink":"Refactors Type concept's interaction with encoding to be through 'Enc…"}},{"before":"67149e1f64387c4239050435ada2d9f2c6395f70","after":"273b03210c433da122648cb1d8ec0d066606d804","ref":"refs/heads/3.0","pushedAt":"2024-05-30T13:22:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dmitrii-ubskii","name":"Dmitrii Ubskii","path":"/dmitrii-ubskii","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18616863?s=80&v=4"},"commit":{"message":"Data validation on commit + new value types: duration and date time with TZ (#7077)","shortMessageHtmlLink":"Data validation on commit + new value types: duration and date time w…"}},{"before":"b7e80e9c6c4639e300f002861a49c7f379e769c3","after":"67149e1f64387c4239050435ada2d9f2c6395f70","ref":"refs/heads/3.0","pushedAt":"2024-05-30T10:12:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"flyingsilverfin","name":"Joshua Send","path":"/flyingsilverfin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1386526?s=80&v=4"},"commit":{"message":"Outline of structs as a general 'definition' system (#7069)\n\n## Usage and product changes\r\n\r\nWe introduce the architecture around structs definitions, and\r\ndefinitions in general.\r\n\r\nThe idea of a `definition` is that it is a general schema construct\r\noutside the regular `thing` and `type` system - this will initially be\r\nused for structs and functions.\r\n\r\nDefinitions are interesting because their interesting payload is in the\r\nvalue, not the key. However, the key contains the ID of the definition.\r\nAs a result, you can consider the new `DefinitionKey` to be analogous to\r\n`TypeVertex`, but the interesting data structure is the\r\n`StructDefinition`, which serialises a struct's content.\r\n\r\nIn doing this, we also realise that `ValueType` must encompass the\r\nbuilt-in value type category, plus the ID of the struct definition, and\r\ncreate a new `ValueTypeCategory` which can map to a Prefix and doesn't\r\ncontain the ID of struct definitions. Lastly, we create a the serialised\r\nform of `ValueTypeBytes`, which is used as the property of an attribute\r\ntype's value type, including the definition ID if it exists.\r\n\r\n\r\n### What isn't implemented yet:\r\n\r\n1. The indexing + retrieval by name of value types through the\r\nTypeManager\r\n2. Serialisation of `StructDefinition`\r\n3. The data insertion and deletion pattern of struct instantiations","shortMessageHtmlLink":"Outline of structs as a general 'definition' system (#7069)"}},{"before":"5bc66a8afc8d4a9c85f70ede9e6d77277dc40f71","after":"b7e80e9c6c4639e300f002861a49c7f379e769c3","ref":"refs/heads/3.0","pushedAt":"2024-05-29T17:06:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dmitrii-ubskii","name":"Dmitrii Ubskii","path":"/dmitrii-ubskii","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18616863?s=80&v=4"},"commit":{"message":"Switch from SpeeDB to RocksDB (#7075)","shortMessageHtmlLink":"Switch from SpeeDB to RocksDB (#7075)"}},{"before":"46aa2274fcf2d368b355e5fd9e853f6d10479d0a","after":"5bc66a8afc8d4a9c85f70ede9e6d77277dc40f71","ref":"refs/heads/3.0","pushedAt":"2024-05-24T11:23:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dmitrii-ubskii","name":"Dmitrii Ubskii","path":"/dmitrii-ubskii","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18616863?s=80&v=4"},"commit":{"message":"Lending iterator (#7073)","shortMessageHtmlLink":"Lending iterator (#7073)"}},{"before":"d7aecf46e38a1ce3242d86d4f00532e29aeca7c8","after":"cd9aa580ffa06e4f2c7c743b6ccd79eb6fb115a8","ref":"refs/heads/master","pushedAt":"2024-05-22T10:13:32.000Z","pushType":"pr_merge","commitsCount":9,"pusher":{"login":"vaticle-bot","name":"TypeDB Bot","path":"/vaticle-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84574929?s=80&v=4"},"commit":{"message":"Merge for 2.28.2-rc1 release (#7072)\n\n## Usage and product changes\r\nWe merge development into master for 2.28.2-rc1 release.","shortMessageHtmlLink":"Merge for 2.28.2-rc1 release (#7072)"}},{"before":"7a3cf4163083a75d2abeefd0a9b79c4864c3315d","after":"dfb01e0eca8407724c52a8d1da2dc789d6142dca","ref":"refs/heads/development","pushedAt":"2024-05-21T17:45:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"vaticle-bot","name":"TypeDB Bot","path":"/vaticle-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84574929?s=80&v=4"},"commit":{"message":"Update VERSION to 2.28.2-rc1 and create release notes (#7071)\n\n## Usage and product changes\r\nUpdate VERSION to 2.28.2-rc1 and create release notes","shortMessageHtmlLink":"Update VERSION to 2.28.2-rc1 and create release notes (#7071)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEacbYEwA","startCursor":null,"endCursor":null}},"title":"Activity · vaticle/typedb"}