)]}'
{
  "log": [
    {
      "commit": "f3a0fe3bcca2770d9b0c830f988d18374bb5e10e",
      "tree": "3f8796d80c755df14d1812505b0f5dc32b30b39b",
      "parents": [
        "0541572d7c56a992fc93902291fd57b23f2ebad4"
      ],
      "author": {
        "name": "ZIHAN DAI",
        "email": "99155080+PDGGK@users.noreply.github.com",
        "time": "Fri Jul 24 19:21:44 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 17:21:44 2026 +0800"
      },
      "message": "Add date_bin aggregation and telemetry key discovery to the Table Mode DAOs (#115)\n\n* Add date_bin aggregation and telemetry key discovery to the Table Mode DAOs\n\nImplements the aggregation and key-discovery parts of the ThingsBoard\nTable Mode integration on top of the merged BaseDao / TimeseriesDao /\nLatestDao:\n\n- IoTDBTableTimeseriesDao: date_bin bucketed aggregation for the\n  aggregated read path, covering fixed-width (millisecond) buckets and\n  calendar buckets (WEEK / MONTH / QUARTER) with time-zone-aware\n  boundaries computed on the Java side to avoid time-zone drift.\n- IoTDBTableLatestDao: telemetry key discovery\n  (findAllKeysByEntityIds / findAllKeysByTenant) now unions the telemetry\n  and telemetry_latest sources so latest-only keys are also discovered.\n\nAdds unit tests and container integration tests.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n* Re-sum long-only SUM buckets on a separate pooled session\n\nexactLongSum re-queried the bucket\u0027s raw long_v values on the same\nITableSession that was iterating the outer aggregate result set. IoTDB\nTable Mode does not guarantee two concurrently open result sets on one\nsession, so the re-sum fallback now checks out its own pooled session\nand SumReSumContext no longer carries the session.\n\nAddresses review feedback on #115.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n---------\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e"
    },
    {
      "commit": "0541572d7c56a992fc93902291fd57b23f2ebad4",
      "tree": "ec82ee7bdf9996bbf63414f0b86e942c3c7de0e4",
      "parents": [
        "85c87a4d5e3747541808b5759d50602e41c44809"
      ],
      "author": {
        "name": "The Apache Software Foundation",
        "email": "root-asf-gitbox-commits@apache.org",
        "time": "Fri Jul 24 05:20:03 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 11:20:03 2026 +0800"
      },
      "message": "Set up default protection ruleset for default and release branches (#107)"
    },
    {
      "commit": "85c87a4d5e3747541808b5759d50602e41c44809",
      "tree": "b864957f061be76633e8b2a052852b8604842411",
      "parents": [
        "b478305d072bf7cb4b9a0f3f4e1b5cc86c1bd23e"
      ],
      "author": {
        "name": "ZIHAN DAI",
        "email": "99155080+PDGGK@users.noreply.github.com",
        "time": "Thu Jul 23 16:17:33 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 14:17:33 2026 +0800"
      },
      "message": "Add table-model query support to the Grafana data source plugin (#114)\n\n* Add table-model query support to the Grafana data source plugin\n\nThe Grafana data source plugin only understood the tree model: both\nQueryEditor modes build root.* paths and the backend calls\n/grafana/v1/query/expression, which has no table-model equivalent, so\ntable-model users could not visualize their data through the plugin.\n\nThis adds a third QueryEditor mode, \"SQL: Table Model\", that runs standard\nSQL against a database and renders the result. It reuses IoTDB\u0027s existing\ntable REST endpoint (POST /rest/table/v1/query) rather than adding a new\nserver API: the backend sends {database, sql} and turns the row-major\nQueryDataSet into a Grafana frame with one typed, nullable field per\ncolumn, driven by the response\u0027s data_types so column types are exact\ninstead of guessed. The body is decoded with UseNumber so INT64 values\nbeyond 2^53 keep their precision.\n\nIn the default Time series format, rows are sorted by the first TIMESTAMP\ncolumn and a long-shaped result (time + tag columns + value columns) is\npivoted into one labeled series per tag combination, so a multi-device\nquery renders as separate lines; the Table format preserves the server\u0027s\nrow order. A $__timeFilter(col) / $__timeFrom / $__timeTo macro set\nexpands to the panel\u0027s range, accepting the $__timeFrom() / $__timeTo()\nfunction forms as well. Because the table REST endpoint returns TIMESTAMP\nvalues (and compares integer time literals) in the server\u0027s configured\ntimestamp_precision -- unlike the tree-model /grafana/v1 endpoints, which\nnormalize to milliseconds server-side -- a new data source \"time\nprecision\" option (ms default / us / ns) scales both the macro bounds and\nthe TIMESTAMP rendering, so the mode also works on us/ns servers.\n\nFollow-up work for the same issue: a database -\u003e table -\u003e column browser,\na visual query builder, a default row limit to bound large SELECTs, and\nthe Grafana plugin SDK / Go backend modernization.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n* Switch the table-model backend from REST to the native Go client\n\nPer review: query table-model data through apache/iotdb-client-go\n(v2.0.8, TableSession) on the RPC port instead of POST\n/rest/table/v1/query.\n\n- A lazily created, per-datasource TableSessionPool serves the queries;\n  a new \"rpc address\" datasource option sets the endpoint, defaulting to\n  the URL\u0027s host with the default RPC port 6667. Tree-model queries and\n  the health check keep using the REST service for now.\n- Values arrive as typed Go values instead of JSON, removing the\n  UseNumber/json.Number coercion layer; INT64 precision is inherent, and\n  the client converts TIMESTAMP/DATE values with the server-reported\n  timestamp precision, so the short-lived \"time precision\" datasource\n  option is removed again.\n- The time macros now expand to ISO 8601 UTC timestamp literals\n  (e.g. 2020-09-13T12:26:40.000+00:00) rather than epoch-ms integers,\n  which the server parses correctly under any configured\n  timestamp_precision.\n- The per-query database is applied with USE on the pooled session;\n  DATE renders as yyyy-MM-dd and BLOB as 0x-prefixed hex, matching the\n  REST transport\u0027s output.\n- The server-side REST row cap (rest_query_default_row_size_limit) no\n  longer applies; the README now recommends a LIMIT clause for wide\n  scans.\n- Frame building, the Time series/Table formats, the long-to-wide pivot\n  and the row sorting are unchanged; the fetch path sits behind a narrow\n  result-set interface so it stays unit-testable. 13 unit tests, go vet\n  and tsc --noEmit pass.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n* Require the database field in table-model mode\n\nPer review: queryTableModel runs USE \u003cdatabase\u003e on a pooled session, and\nPooledTableSession.Close() only restores the database when the pool has\none configured — which this pool does not — so a session\u0027s USE state\nsurvived release. A query with an empty database field could then\nnondeterministically inherit whichever database a previous panel had\nselected on that session.\n\nMake the database required for the table-model mode: verifyQuery rejects\nan empty database, the editor marks the field required, and the README\ndocuments it. Every query therefore always runs USE for its own database\non the session it checked out, so leftover session state can never\ninfluence a result regardless of pool scheduling. Fully-qualified\ndatabase.table references keep working and take precedence over the\nsession database.\n\nVerified against a live IoTDB 2.0.8: alternating panels on two databases\nsharing one session pool each saw exactly their own data across\nrepeated rounds.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n---------\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e"
    },
    {
      "commit": "b478305d072bf7cb4b9a0f3f4e1b5cc86c1bd23e",
      "tree": "f6d3d50093708203e12513240d9ade40ba15d09b",
      "parents": [
        "80adb01aa1bb3878c39025166c4bc8e39d0e449f"
      ],
      "author": {
        "name": "Haonan",
        "email": "hhaonan@outlook.com",
        "time": "Wed Jul 22 09:25:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 09:25:24 2026 +0800"
      },
      "message": "Add metric scrape module (#111)"
    },
    {
      "commit": "80adb01aa1bb3878c39025166c4bc8e39d0e449f",
      "tree": "ba68d69afb543da72446e68a67ddf9558c7339aa",
      "parents": [
        "5108d2840a2df8902862faa8ab64bead4bb854ce"
      ],
      "author": {
        "name": "ZIHAN DAI",
        "email": "99155080+PDGGK@users.noreply.github.com",
        "time": "Mon Jul 20 12:46:59 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 10:46:59 2026 +0800"
      },
      "message": "Add ThingsBoard latest-telemetry and attributes DAOs on IoTDB Table Mode (#113)\n\n* Add IoTDBTableAttributesDao for ThingsBoard attributes on IoTDB Table Mode (GSOC-304 Wk 5)\n\nImplements the ThingsBoard AttributesDao SPI (v4.3.1.2, 14 methods) on IoTDB\nTable Mode against the entity_attributes table, as a Path-3 stretch artifact\nthat stays inert by default.\n\n- 13/14 methods implemented; findNextBatch is a relational keyset-pagination\n  migration helper with no IoTDB equivalent, so it throws\n  UnsupportedOperationException. The three v4.3.1.2 additions\n  (findAllKeysByEntityIdsAndScopeAsync, findLatestByEntityIdsAndScope and its\n  async form) are implemented.\n- save is a tag-only delete-then-insert under an entity read lock plus a\n  per-identity lock; find takes the same identity lock so the gap is invisible.\n- Inert by default: no @Repository on the DAO; an independent\n  database.attributes.type selector decoupled from the timeseries selectors; an\n  AttributesDaoConflictGuard fail-fast; and a constructor cluster-mode\n  acknowledgement gate (iotdb.attributes.cluster_mode).\n- Strategy F: eight compile-only ThingsBoard/commons stubs, excluded from the\n  built jar.\n- Documented Phase-1 limitations: null version (IoTDB has no sequence), empty\n  non-null-profile key lookup, best-effort bulk reads.\n- 114 unit tests and 11 Testcontainers integration tests against\n  apache/iotdb:2.0.8-standalone.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n* Add IoTDBTableLatestDao derived-latest read path to PR-2 base (GSOC-304 Wk 4)\n\nAdapts the Wk4 IoTDBTableLatestDao (single-table derived-latest, no shadow\ntable) onto the merged PR-1 base so it coexists with the timeseries and\nattributes DAOs. No latest overlay yet — that is a follow-up.\n\n- LatestDao: findLatest (ORDER BY time DESC LIMIT 1), findAllLatest\n  (LAST_BY(col,time) + MAX(time) GROUP BY key); saveLatest no-op and\n  removeLatest half-open-window are documented derived-latest gaps.\n- Coherent opt-in activation via IoTDBTableLatestEnabledCondition\n  (database.ts.type\u003diotdb-table AND database.ts_latest.type\u003diotdb-table +\n  experimental flag), reusing the shared named session pool; a\n  TimeseriesLatestDaoConflictGuard fails startup on a conflicting host DAO.\n- v4.3.1.2 TimeseriesLatestDao SPI stub (10 methods incl. findLatestByEntityIds\n  /+Async) verified byte-for-byte against the real ThingsBoard source; pinned by\n  StrategyFContractTest with a getDeclaredMethods length guard.\n- All three DAOs share one session pool via @ConditionalOnMissingBean(name).\n- 131 unit tests + 24 Testcontainers ITs (Latest 4 + Timeseries 9 +\n  Attributes 11) against apache/iotdb:2.0.8-standalone.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n* Add minimal latest-overlay to IoTDBTableLatestDao (GSOC-304 PR-2)\n\nCloses the saveLatest/removeLatest gaps the single-table derived-latest cannot\nsatisfy (mentor-confirmed: add a minimal latest overlay rather than document the\nlatest-only paths as unsupported).\n\n- New telemetry_latest overlay table (telemetry shape, TTL\u003d\u0027INF\u0027), created only\n  under the latest selector via a second schema-bootstrap bean.\n- saveLatest does a tag-only delete-then-insert into the overlay under a\n  per-identity lock; the async batch writer prevents distinguishing latest-only\n  from full-save, so the overlay is written on every saveLatest (it is therefore\n  a per-key latest store, written once per latest update). version stays null.\n- findLatest/findAllLatest merge the derived latest (telemetry) with the overlay\n  by max timestamp per key (overlay wins ties); the merge is max-by-ts, never\n  additive, so latest-only keys surface and stale overlay rows are shadowed.\n- removeLatest snapshots the merged latest under the per-identity lock, deletes\n  the in-window overlay row, and on rewriteLatestIfDeleted resurrects the\n  next-older telemetry value into the overlay.\n- Documented Phase-1 residuals (flagged for review): version always null\n  (Cassandra parity), a telemetry-derived removeLatest race for full-save values,\n  overlay TTL\u003d\u0027INF\u0027 growth, and the same-ts overlay-wins tie-break.\n- 141 unit tests + 31 Testcontainers ITs (Latest 11) against\n  apache/iotdb:2.0.8-standalone.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n* Document the findAllKeysByDeviceProfileId empty-list rationale (GSOC-304 PR-2)\n\nMake the non-null deviceProfileId degradation rationale precise in the DAO\njavadoc + the module README: it mirrors the official non-relational backend\n(CassandraBaseTimeseriesLatestDao.findAllKeysByDeviceProfileId also returns\nCollections.emptyList()), entity_attributes has no device_profile_id tag, and the\nsole upstream caller is DeviceProfileController\nGET /api/deviceProfile/devices/keys/attributes (TENANT_ADMIN, a config-time UI key\nenumeration) which tolerates an empty result. Failing loud would 500 under IoTDB\nwhile Cassandra returns empty -- an avoidable backend inconsistency. A real\ndevice-\u003eprofile lookup remains a Phase-2 optional enhancement.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n* Address latest-DAO review: max-ts-wins overlay, locked point reads, graceful key discovery\n\n- saveLatest skips a backdated write so an out-of-order saveLatest never regresses\n  an overlay-only latest below a newer stored value (max-ts-wins; an exact-ts tie\n  still overwrites, preserving the documented overlay-wins-on-tie behaviour)\n- findLatest/findLatestOpt take the per-identity lock so a concurrent overlay\n  delete-then-insert is never observed mid-window (findAllLatest stays unlocked)\n- findAllKeysByDeviceProfileId returns an empty list instead of throwing, so the\n  TENANT_ADMIN config-UI key endpoint degrades gracefully instead of returning 500\n  (matching the non-relational backends; full tenant-wide discovery is deferred)\n- document the single-JVM overlay convergence limitation\n- add unit + Testcontainers regression tests for the out-of-order saveLatest case\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n* Harden latest + attributes DAOs and key-discovery per review\n\n- Key-discovery / batch SPI methods (findAllKeysByEntityIds / findLatestByEntityIds\n  and their async forms) return an empty result instead of throwing\n  UnsupportedOperationException, matching CassandraBaseTimeseriesLatestDao: they back\n  reachable endpoints (the dashboard telemetry-key lookup and entity-delete\n  housekeeping) where a throw would surface as an HTTP 500 / a failed cleanup task.\n- IoTDBTableAttributesDao.save returns a non-null version (the attribute lastUpdateTs)\n  so BaseAttributesService#doSave never unboxes null; the write is a failure-safe\n  insert-then-delete-older and point reads use ORDER BY time DESC LIMIT 1.\n- removeLatest deletes the overlay row only when the overlay row\u0027s own timestamp is\n  inside the delete window, so an out-of-window overlay value survives as the next\n  latest; the rewrite-resurrect path reads both telemetry and the overlay (max-ts-wins).\n- The saveLatest max-ts guard and the removeLatest snapshot read the derived and\n  overlay latest B1-tolerantly (a same-timestamp two-type row is treated as absent so\n  it never wedges a write or delete and self-heals on the next overwrite); the strict\n  read paths still surface it.\n- Regression tests added for each; 153 unit + 37 Testcontainers IT green (cache off).\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n* Extract shared DAO base and add per-DAO executor config + latest cluster gate\n\nAddresses the five review comments on this PR:\n\n- Lift the bounded read/task executor (init/submit/shutdown-drain, bounded\n  ArrayBlockingQueue + AbortPolicy, task tracking) out of the three DAOs into\n  IoTDBTableBaseDao so a future shutdown-race fix lives in one place; the DAOs\n  now delegate. No behavior change.\n- Lift the small per-DAO utilities into the base too: sqlString (the single\n  SQL single-quote escape point), kvEntry type mapping, requireTelemetryKey /\n  requireKey blank checks, and entityPredicate.\n- Give the attributes DAO its own executor config (iotdb.attributes.executor\n  .threads / .queue-capacity, defaults equal to iotdb.ts.read) instead of\n  borrowing the timeseries read-executor settings, so the attributes path can\n  be tuned independently of the telemetry selector.\n- Document that the latest overlay write path (saveLatest / removeLatest)\n  shares the read-configured executor/queue and enrich the queue-full message\n  so a write-burst rejection of a concurrent findLatest is not mistaken for a\n  read misconfiguration.\n- Add a symmetric cluster-mode acknowledgement (iotdb.ts_latest.cluster_mode)\n  to the latest overlay, mirroring the existing attributes gate, so the\n  in-JVM Striped-lock cluster caveat is opt-in the same way on both paths.\n\n155 unit + 37 Testcontainers IT green (cache off); checkstyle, spotless,\napache-rat, and enforcer clean.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n* Document iotdb.ts_latest.cluster_mode and attributes executor config in README\n\nAdd the README configuration-table rows the review flagged as missing after the\nexecutor / cluster-gate changes: iotdb.ts_latest.cluster_mode (required and\nfail-fast when the latest overlay DAO is active, mirroring\niotdb.attributes.cluster_mode) and the iotdb.attributes.executor.threads /\n.queue-capacity tuning knobs. Also note the ts_latest.cluster_mode requirement in\nthe latest-telemetry activation section, so an operator activating the overlay has\ndocumentation to consult rather than only the exception message and javadoc.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n* Pin ThingsBoard value-object constructors in the Strategy-F contract test\n\nThe Strategy-F guard test pins the ThingsBoard SPI method signatures and the\nvalue-object getters the DAOs consume, but not the value-object constructors\nthey invoke. A compile-only stub whose constructor arg order or shape drifts\nfrom ThingsBoard 4.3.1.2 would still compile against the stub, pass every\nstub-backed unit test and Docker integration test, and only surface as a\nNoSuchMethodError against the real ThingsBoard runtime.\n\nAdd valueObjectConstructorsUsedByDaoExist to reflectively pin the exact\nconstructor parameter types each DAO call site depends on -- BasicTsKvEntry,\nBaseAttributeKvEntry, the five *DataEntry types, the three\nTsKvLatestRemovingResult shapes and ReadTsKvQueryResult -- plus the TbPair.of\nand Pair.of factory signatures, and couple ReadTsKvQueryResult\u0027s int query-id\nparameter to TsKvQuery.getId(). Verified against ThingsBoard v4.3.1.2\n(commit c37fb509).\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n---------\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e"
    },
    {
      "commit": "5108d2840a2df8902862faa8ab64bead4bb854ce",
      "tree": "48e604bb3a0d6fa2b5e25553a1e95c5dbf1e1ff0",
      "parents": [
        "c94db39edfc8fdfd754c5a40481c11642c787e6a"
      ],
      "author": {
        "name": "ZIHAN DAI",
        "email": "99155080+PDGGK@users.noreply.github.com",
        "time": "Fri Jun 26 21:46:16 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 19:46:16 2026 +0800"
      },
      "message": "Add iotdb-thingsboard-table module for ThingsBoard on IoTDB Table Mode (#110)\n\n* Add iotdb-thingsboard-table module for ThingsBoard on IoTDB Table Mode\n\nImplements ThingsBoard\u0027s historical telemetry TimeseriesDao SPI on Apache\nIoTDB 2.0.8 Table Mode (ITableSession SQL + Tablet writes). This first PR\ndelivers the write + raw-read foundation: IoTDBTableBaseDao, an async\nbounded-queue batch writer, and the raw findAllAsync/remove read-delete\npath. Aggregation, latest telemetry and attributes land in later PRs.\n\nThe module is inert by default: the live DAO/pool/writer/schema-bootstrap\nactivate only on an explicit database.ts.type\u003diotdb-table plus\niotdb.ts.experimental-raw-only\u003dtrue opt-in, the auto-configuration is\nclasspath-isolated from a non-ThingsBoard runtime, and ThingsBoard SPI\ntypes are a compile-only source surface excluded from the built jar\n(Strategy F). It is added to the reactor through a JDK-17 profile and\noverrides tsfile only within its own module pom, so the rest of the\nreactor is unaffected.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n* Address review feedback on iotdb-thingsboard-table\n\nResolves the review on #110.\n\n- Version strategy: drop the module-local iotdb / tsfile / guava overrides.\n  The module now inherits the parent reactor\u0027s iotdb-session 2.0.5, tsfile\n  2.1.1 and guava 32.1.2-jre (a single tsfile across the reactor) and uses the\n  2.0.5 enableCompression builder API. jakarta.validation-api stays at 3.0.2\n  (the ThingsBoard 4.3.x Spring Boot 3 / jakarta runtime namespace), now made\n  explicit at the dependency and documented.\n- Reactor wiring: replace the \u003cjdk\u003e[17,)\u003c/jdk\u003e auto-activated profile with a\n  named with-thingsboard opt-in profile; build and test it on the JDK 17+ CI\n  jobs via -P with-thingsboard.\n- Writer: retry only transient StatementExecutionException status codes; fail\n  fast on permanent ones.\n- Schema bootstrap: use CREATE TABLE IF NOT EXISTS and detect already-exists\n  via the structured IoTDB status code (message-substring match as fallback).\n- Auto-configuration: state ThingsBoard\u0027s Spring Boot 3.5.x version in the\n  docs; keep the spring.factories entry only for Boot 2.7 portability.\n- Tests: add a no-ThingsBoard-classpath startup test, retry classification\n  tests, a status-code idempotency test, and a @Validated-through-Spring test.\n- Minor: saturate dataPointDays; clear flushThreads validation message; align\n  the defaultTtlMs log key; remove a useless null check.\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e\n\n---------\n\nSigned-off-by: Zihan Dai \u003c99155080+PDGGK@users.noreply.github.com\u003e"
    },
    {
      "commit": "c94db39edfc8fdfd754c5a40481c11642c787e6a",
      "tree": "d2cb2bf12f6768d895cadbe17ba96bc6c2879d7b",
      "parents": [
        "827cceac0d9f2cfe2ebb752959b8975577a2734d"
      ],
      "author": {
        "name": "HUANG Xiangdong",
        "email": "hxd@apache.org",
        "time": "Mon Jun 01 11:06:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 11:06:49 2026 +0800"
      },
      "message": "Fix: Expand multi-value template variables in prefixPath into multiple paths (#109)\n\n* Expand multi-value template variables in prefixPath into multiple paths\n\nFix two issues with variable expansion in Grafana 11.4 (Scenes architecture):\n\n1. Replace templateSrv.containsTemplate() with regex-based detection.\n   In Grafana 11.4\u0027s Scenes mode, containsTemplate() returns false for\n   ${var} syntax even when the variable exists. Using a regex pattern\n   ensures reliable detection regardless of Grafana version.\n\n2. Process prefixPath expansion for queries without sqlType field.\n   Previously only queries with sqlType \u003d\u003d\u003d \u0027SQL: Full Customized\u0027 were\n   processed. Queries provisioned via JSON (without explicit sqlType)\n   were silently skipped.\n\nThe expansion logic now:\n- Detects variables via regex pattern /\\$\\{(\\w+)(?::[^}]*)?\\}|\\\\b/\n- Resolves values from scopedVars first, then falls back to getVariables()\n- Handles $__all by expanding to all non-$__all options\n- Supports both single-value and multi-value (array) variables\n- Fully backward-compatible: literal paths pass through unchanged\n\nCloses #108\n\n* Address review: handle $__all in scopedVars and safer fallback\n\n- When scopedVars provides $__all, expand using options list instead of\n  treating it as a literal path segment\n- When variable cannot be resolved, fallback to replace() on the whole\n  path (preserving prior behavior) instead of only replacing the token\n- Add tests for both cases\n\n---------\n\nCo-authored-by: xiangdong huang \u003chxd@timecho.com\u003e"
    },
    {
      "commit": "827cceac0d9f2cfe2ebb752959b8975577a2734d",
      "tree": "340db84bc081f694fb94cef59cb627b67da5b26e",
      "parents": [
        "166d75d9afa81edf0bcbfa8a56d1845292ba71b3"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Wed Sep 24 16:26:02 2025 +0800"
      },
      "committer": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Wed Sep 24 16:26:02 2025 +0800"
      },
      "message": "zeppelin defalut jar-with-dependencies\n"
    },
    {
      "commit": "166d75d9afa81edf0bcbfa8a56d1845292ba71b3",
      "tree": "c26b1202666fe974e44b80ce84dbcb76000d4e64",
      "parents": [
        "ccc0aa8dc21ec20ba4902859108a8cc3434e4411"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Tue Sep 23 18:53:28 2025 +0800"
      },
      "committer": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Tue Sep 23 18:53:28 2025 +0800"
      },
      "message": "zeppelin defalut jar-with-dependencies\n"
    },
    {
      "commit": "ccc0aa8dc21ec20ba4902859108a8cc3434e4411",
      "tree": "d06d1659245850465000659f7ec4be21af8b7aa4",
      "parents": [
        "bf06d2e525d3e6e223034dd2898d4f4f11213795"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Tue Sep 23 17:29:13 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 17:29:13 2025 +0800"
      },
      "message": "Bump tsfile version to 2.1.1 (#94)\n\n* Bump tsfile version to 2.1.1\n\n* fix\n\n* fix build\n\n* fix build\n\n* fix build\n\n* fix build\n\n* fix build\n\n* fix build"
    },
    {
      "commit": "bf06d2e525d3e6e223034dd2898d4f4f11213795",
      "tree": "f8e1e6c03cd582506398a185506a423162eccbb5",
      "parents": [
        "b056464a6bff21fb097d93ef21b05c7789108855"
      ],
      "author": {
        "name": "LimJiaWenBrenda",
        "email": "88846228+LJW21-02@users.noreply.github.com",
        "time": "Tue Sep 23 16:09:20 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 16:09:20 2025 +0800"
      },
      "message": "Added Kafka, RocketMQ, RabbitMQ examples for IoTDB-table (#93)\n\n* Added Kafka examples for IoTDB-table\n\n* Added license header\n\n* Added RocketMQ examples for IoTDB-table\n\n* Added RabbitMQ examples for IoTDB-table + Fixed RabbitMQ examples for IoTDB-tree\n\n* Added constants in RabbitMQ Constant.java\n\n* Update package name\n\n* Updated readme documents for Kafka, RocketMQ and RabbitMQ + Upgraded iotdb-session to 2.0.5\n\n* Renew IoTDB quick start link"
    },
    {
      "commit": "b056464a6bff21fb097d93ef21b05c7789108855",
      "tree": "9f9c432bb42ba94c4c889cac178bbd9c1bcad37b",
      "parents": [
        "d859bb6d3de39f23f6a11a6a9a7e0d22b92ed9b5"
      ],
      "author": {
        "name": "Summer",
        "email": "43237967+2b3c511@users.noreply.github.com",
        "time": "Mon Jul 14 11:54:27 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 14 11:54:27 2025 +0800"
      },
      "message": "Remove unnecessary configurations in confignode-cm.yaml (#89)\n\nCo-authored-by: 2b3c511 \u003crong.li@timecho.com\u003e"
    },
    {
      "commit": "d859bb6d3de39f23f6a11a6a9a7e0d22b92ed9b5",
      "tree": "63415ceac0856c1f3053e0a8ee68f61f5757177b",
      "parents": [
        "54ca77d47bad1b0462a59bfe594210a9669a4f52"
      ],
      "author": {
        "name": "ChaoWang",
        "email": "66939405+wangchao316@users.noreply.github.com",
        "time": "Sat Jun 28 10:13:16 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 28 10:13:16 2025 +0800"
      },
      "message": "support nodeurls to multi ip (#84)\n\nsupport nodeurls to multi ip (#84)"
    },
    {
      "commit": "54ca77d47bad1b0462a59bfe594210a9669a4f52",
      "tree": "eb4e4c7459370fbba7b647ef199fd884dfc29b95",
      "parents": [
        "63151511e171fce49e83c68c6fcc90f231083c82"
      ],
      "author": {
        "name": "张正明",
        "email": "876670773@qq.com",
        "time": "Thu Jun 26 12:18:38 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 26 12:18:38 2025 +0800"
      },
      "message": "Fix dependence (#85)\n\n* fix version dependence\n\n* optimized code\n\n* fix readme\n\n* rm .vscode\n\n* Update pom.xml\n\n* Apply suggestions from code review\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* Update pom.xml\n\n---------\n\nCo-authored-by: CritasWang \u003ccritas@outlook.com\u003e\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "63151511e171fce49e83c68c6fcc90f231083c82",
      "tree": "35c7d4d94a6c9a49ef854568c8391d04e9661a7b",
      "parents": [
        "a39eefa95f0de121645db935a932a58413faa1cc"
      ],
      "author": {
        "name": "Haonan",
        "email": "hhaonan@outlook.com",
        "time": "Thu Jun 26 12:06:16 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 26 12:06:16 2025 +0800"
      },
      "message": "Redirect email notifications (#86)\n\n"
    },
    {
      "commit": "a39eefa95f0de121645db935a932a58413faa1cc",
      "tree": "bdc483aed34757a9bb415e8d9d2c0d47739bfbb4",
      "parents": [
        "e0dfd37e1c2dc9e2b56b91e36f8f20aca79edd04"
      ],
      "author": {
        "name": "张正明",
        "email": "876670773@qq.com",
        "time": "Wed Jun 25 11:49:29 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 25 11:49:29 2025 +0800"
      },
      "message": "Update mybatisplus (#83)\n\n* update mybatisplus\n\n* update mybatis-plus\n\n* uncomment parent\n\n* add licenses"
    },
    {
      "commit": "e0dfd37e1c2dc9e2b56b91e36f8f20aca79edd04",
      "tree": "ada19b3eb52e6ce3479b5c541eeb7aad66fcdbcc",
      "parents": [
        "ed45c3f5ffa59c57add0047d34dbb317549779ce"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Fri Jun 20 15:49:44 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 20 15:49:44 2025 +0800"
      },
      "message": "add readme (#82)\n\n"
    },
    {
      "commit": "ed45c3f5ffa59c57add0047d34dbb317549779ce",
      "tree": "4ac420c476d58cacf66be5f4098e25e60f73a727",
      "parents": [
        "f8c9de82538847f8682fda92ff4d98e3580e6787"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Thu Jun 19 19:07:31 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 19 19:07:31 2025 +0800"
      },
      "message": "Bump version to 2.0.4-SNAPSHOT (#80)\n\n"
    },
    {
      "commit": "f8c9de82538847f8682fda92ff4d98e3580e6787",
      "tree": "8b40d45d331b9102546775f7e00dbee6dde38263",
      "parents": [
        "253faa0274c57ab6c536a2e843732ae363bac7ea"
      ],
      "author": {
        "name": "Summer",
        "email": "43237967+2b3c511@users.noreply.github.com",
        "time": "Mon Jun 09 10:04:13 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 09 10:04:13 2025 +0800"
      },
      "message": "format time type to long (#79)\n\nCo-authored-by: 2b3c511 \u003crong.li@timecho.com\u003e"
    },
    {
      "commit": "253faa0274c57ab6c536a2e843732ae363bac7ea",
      "tree": "b1e57a8715e3b03dd4e1c3bb4fcf2a6b7080eee5",
      "parents": [
        "8623a5c44b7b415dd5e194369a716fd35cfc488c"
      ],
      "author": {
        "name": "张正明",
        "email": "876670773@qq.com",
        "time": "Wed Jun 04 18:27:12 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 04 18:27:12 2025 +0800"
      },
      "message": "add a example for mybatis, format markdown (#78)\n\n* add a example for mybatis, format markdown\n\n* add default param (#77)\n\n* add default param\n\n* Update readme.md\n\n---------\n\nCo-authored-by: 2b3c511 \u003crong.li@timecho.com\u003e\nCo-authored-by: CritasWang \u003ccritas@outlook.com\u003e\n\n* add the code generated by mybatis\n\n* add a example for mybatis, format markdown\n\n* add the code generated by mybatis\n\n* fix compile\n\n* Update README.md\n\n---------\n\nCo-authored-by: Summer \u003c43237967+2b3c511@users.noreply.github.com\u003e\nCo-authored-by: 2b3c511 \u003crong.li@timecho.com\u003e\nCo-authored-by: CritasWang \u003ccritas@outlook.com\u003e"
    },
    {
      "commit": "8623a5c44b7b415dd5e194369a716fd35cfc488c",
      "tree": "0ddfc9893f95ae39a324c4a173cc40da6f42e7ef",
      "parents": [
        "0d1a4999db088f0f057a82c1c135553908853bb0"
      ],
      "author": {
        "name": "Summer",
        "email": "43237967+2b3c511@users.noreply.github.com",
        "time": "Wed Jun 04 15:21:23 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 04 15:21:23 2025 +0800"
      },
      "message": "add default param (#77)\n\n* add default param\n\n* Update readme.md\n\n---------\n\nCo-authored-by: 2b3c511 \u003crong.li@timecho.com\u003e\nCo-authored-by: CritasWang \u003ccritas@outlook.com\u003e"
    },
    {
      "commit": "0d1a4999db088f0f057a82c1c135553908853bb0",
      "tree": "bfbb441204f2a02f7ac700b277c85c4738cb8a62",
      "parents": [
        "a2614f7a2ca91a30aa0d0688f910e3839b6454de"
      ],
      "author": {
        "name": "张正明",
        "email": "876670773@qq.com",
        "time": "Thu May 29 17:48:23 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 29 17:48:23 2025 +0800"
      },
      "message": "Update readme.md (#75)\n\n"
    },
    {
      "commit": "a2614f7a2ca91a30aa0d0688f910e3839b6454de",
      "tree": "0b204eaf3f2cb8815189b2965935d199e28dfbfc",
      "parents": [
        "3e48d26f65883c1d147010f11228310bdfa1e512"
      ],
      "author": {
        "name": "0xB",
        "email": "76414902+YC27@users.noreply.github.com",
        "time": "Fri May 16 10:53:06 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 16 10:53:06 2025 +0800"
      },
      "message": "Collector: Add show task api \u0026 Improve the built-in Kafka Source plugin (#71)\n\n"
    },
    {
      "commit": "3e48d26f65883c1d147010f11228310bdfa1e512",
      "tree": "d3f52542f5bc423bd8fcf487a753b867b9a4d957",
      "parents": [
        "45cdf6c8ace6353f2608c968b11561fedbf1b05c"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Fri May 09 10:59:55 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 09 10:59:55 2025 +0800"
      },
      "message": "style: change spotless like iotdb (#70)\n\n"
    },
    {
      "commit": "45cdf6c8ace6353f2608c968b11561fedbf1b05c",
      "tree": "56e5161a8e174f7161acbb4800b1b4e43c087913",
      "parents": [
        "c2c0e83811c4ef1e08e36d6a53d20c357d577040"
      ],
      "author": {
        "name": "Summer",
        "email": "43237967+2b3c511@users.noreply.github.com",
        "time": "Fri May 09 10:32:07 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 09 10:32:07 2025 +0800"
      },
      "message": "Add more params in Session (#67)\n\n* Add more params in Session\n\n* update name\n\n* spotless:apply\n\n---------\n\nCo-authored-by: 2b3c511 \u003crong.li@timecho.com\u003e"
    },
    {
      "commit": "c2c0e83811c4ef1e08e36d6a53d20c357d577040",
      "tree": "dd698cd42e3090ce87a3161a858941e41a6b5311",
      "parents": [
        "ad09ad86dd51e9958051cec2fae8b7717186d0a6"
      ],
      "author": {
        "name": "0xB",
        "email": "76414902+YC27@users.noreply.github.com",
        "time": "Thu May 08 17:11:18 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 08 17:11:18 2025 +0800"
      },
      "message": "Collector: Added task progress saving \u0026 Modified push source pause logic \u0026 Refactored the scheduled task module (#68)\n\n"
    },
    {
      "commit": "ad09ad86dd51e9958051cec2fae8b7717186d0a6",
      "tree": "0694f3dacf2a2b24a9461a7bfeeb6adb4c4808cc",
      "parents": [
        "3ba69342575fe261e53cd2154861b3e3d68936e6"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Sun Apr 27 18:15:18 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 27 18:15:18 2025 +0800"
      },
      "message": "perf: update spring pom (#66)\n\n"
    },
    {
      "commit": "3ba69342575fe261e53cd2154861b3e3d68936e6",
      "tree": "5a0ef339d3fa57762638b5e5188baad132e9e4f8",
      "parents": [
        "0e76f821363ab31c94b73a12ef44d7a49f450861"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Sun Apr 27 16:11:01 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 27 16:11:01 2025 +0800"
      },
      "message": "Update spring pom.xml"
    },
    {
      "commit": "0e76f821363ab31c94b73a12ef44d7a49f450861",
      "tree": "17591199fe3463a98470f422eae98e2d26d23516",
      "parents": [
        "886bb287c85592569df548be3364436464fda4be"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Sun Apr 27 15:49:03 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 27 15:49:03 2025 +0800"
      },
      "message": "Update spring pom.xml"
    },
    {
      "commit": "886bb287c85592569df548be3364436464fda4be",
      "tree": "4b4ba1966f7f0d645f8fc3f481a0fd05ed2d984b",
      "parents": [
        "22de2600ab22272dda23aceec1362940e7adfae4"
      ],
      "author": {
        "name": "0xB",
        "email": "76414902+YC27@users.noreply.github.com",
        "time": "Thu Apr 24 18:40:57 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 24 18:40:57 2025 +0800"
      },
      "message": "Collector: Remove iotdb-tsfile dependence \u0026 Upgrade tsfile version \u0026 Modify compile-check from package to verify. (#65)\n\n"
    },
    {
      "commit": "22de2600ab22272dda23aceec1362940e7adfae4",
      "tree": "005017abb2b163c6b694279487cc85d168a8b814",
      "parents": [
        "4501dbc0597f747080a29a2351885785ad5cf8bf"
      ],
      "author": {
        "name": "shuwenwei",
        "email": "55970239+shuwenwei@users.noreply.github.com",
        "time": "Thu Apr 24 16:30:58 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 24 16:30:58 2025 +0800"
      },
      "message": "fix data type conversion for spark iotdb table connector\n\n"
    },
    {
      "commit": "4501dbc0597f747080a29a2351885785ad5cf8bf",
      "tree": "b8f2941b713a1c09c1c88cde0f8be7df3a5ee8ea",
      "parents": [
        "374b5bc548bf1db243da6477743f38560e2a32c0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 24 16:26:40 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 24 16:26:40 2025 +0800"
      },
      "message": "chore(deps): Bump commons-io:commons-io from 2.13.0 to 2.14.0 (#62)\n\nBumps commons-io:commons-io from 2.13.0 to 2.14.0.\n\n---\nupdated-dependencies:\n- dependency-name: commons-io:commons-io\n  dependency-version: 2.14.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "374b5bc548bf1db243da6477743f38560e2a32c0",
      "tree": "a1981c0fb4bea6df36abc128080b30b5b8dbc76f",
      "parents": [
        "85e8b44e8c0129b2c420b34069cfbff2af83d40f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 24 16:26:06 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 24 16:26:06 2025 +0800"
      },
      "message": "chore(deps): Bump ch.qos.logback:logback-core from 1.3.14 to 1.3.15 (#63)\n\nBumps [ch.qos.logback:logback-core](https://github.com/qos-ch/logback) from 1.3.14 to 1.3.15.\n- [Release notes](https://github.com/qos-ch/logback/releases)\n- [Commits](https://github.com/qos-ch/logback/compare/v_1.3.14...v_1.3.15)\n\n---\nupdated-dependencies:\n- dependency-name: ch.qos.logback:logback-core\n  dependency-version: 1.3.15\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "85e8b44e8c0129b2c420b34069cfbff2af83d40f",
      "tree": "a8895ef4cc01fa68eb727dbc39d784aade0c502a",
      "parents": [
        "939ee61e45e54c8abdd94e57c51e5b543d79838c"
      ],
      "author": {
        "name": "0xB",
        "email": "76414902+YC27@users.noreply.github.com",
        "time": "Thu Apr 24 12:21:11 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 24 12:21:11 2025 +0800"
      },
      "message": "Collector: Add collector-distribution packaging module \u0026 Migrate IoTDBDataRegionSyncConnector \u0026 Add scheduled triggering for batch accumulation operations \u0026 Add subscribe source demo \u0026 Update iotdb dependence version (#61)\n\n"
    },
    {
      "commit": "939ee61e45e54c8abdd94e57c51e5b543d79838c",
      "tree": "86fca3bbc1acf9760ee2a2d11c260b4dfb1f7bef",
      "parents": [
        "e8c86d719706d7a287f0b3f4e8bf3d6ecbea25d1"
      ],
      "author": {
        "name": "Summer",
        "email": "43237967+2b3c511@users.noreply.github.com",
        "time": "Thu Apr 10 12:24:09 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 10 12:24:09 2025 +0800"
      },
      "message": "update README.md (#59)\n\n(cherry picked from commit e22cf118d10aecdc9440be50cfebde93aeaabb6e)\n\nCo-authored-by: 2b3c511 \u003crong.li@timecho.com\u003e"
    },
    {
      "commit": "e8c86d719706d7a287f0b3f4e8bf3d6ecbea25d1",
      "tree": "cadd22251547348b9c5b77f6fa9233e4a6762929",
      "parents": [
        "75aecc9d5fffb8542f0bbe2b04069d68054103cb"
      ],
      "author": {
        "name": "0xB",
        "email": "76414902+YC27@users.noreply.github.com",
        "time": "Mon Apr 07 10:11:49 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 07 10:11:49 2025 +0800"
      },
      "message": "Collector: Fixed task not being able to be dropped when the task is stopped \u0026 Modify PipeParameters \u0026 Supports registration of plugins and reflection usage \u0026 Add SQLite support for persistence of plugin and task meta. (#57)\n\n"
    },
    {
      "commit": "75aecc9d5fffb8542f0bbe2b04069d68054103cb",
      "tree": "4184b3fec3b92da98963ad60cfb2f6db4b475728",
      "parents": [
        "42086d9003b4beb8c2840c6505cb327520c4d4de"
      ],
      "author": {
        "name": "JackieTien97",
        "email": "jackietien97@gmail.com",
        "time": "Wed Apr 02 15:53:24 2025 +0800"
      },
      "committer": {
        "name": "JackieTien97",
        "email": "jackietien97@gmail.com",
        "time": "Wed Apr 02 15:53:24 2025 +0800"
      },
      "message": "remove iotdb-mcp-server\n"
    },
    {
      "commit": "42086d9003b4beb8c2840c6505cb327520c4d4de",
      "tree": "b6ea85f6c61fc5d85d3f7b8d6796c79851ea3de1",
      "parents": [
        "2d96c3cbc7a7601d7e4177f422eeefb4286eb46d"
      ],
      "author": {
        "name": "JackieTien97",
        "email": "jackietien97@gmail.com",
        "time": "Wed Apr 02 15:28:47 2025 +0800"
      },
      "committer": {
        "name": "JackieTien97",
        "email": "jackietien97@gmail.com",
        "time": "Wed Apr 02 15:28:47 2025 +0800"
      },
      "message": "update readme\n"
    },
    {
      "commit": "2d96c3cbc7a7601d7e4177f422eeefb4286eb46d",
      "tree": "e07a823adf0f29c94e8babc4d9ac2331a2f3bbfb",
      "parents": [
        "e00a4cf49871180fd8222ed60999970e6997b61e"
      ],
      "author": {
        "name": "JackieTien97",
        "email": "jackietien97@gmail.com",
        "time": "Wed Apr 02 14:56:49 2025 +0800"
      },
      "committer": {
        "name": "JackieTien97",
        "email": "jackietien97@gmail.com",
        "time": "Wed Apr 02 14:56:49 2025 +0800"
      },
      "message": "update .gitignore\n"
    },
    {
      "commit": "e00a4cf49871180fd8222ed60999970e6997b61e",
      "tree": "d27167d48e9346afa543acfb359a883738a5e73a",
      "parents": [
        "5b4fae10cca21bf01d47ce5e99f08f4ccaac58a4"
      ],
      "author": {
        "name": "JackieTien97",
        "email": "jackietien97@gmail.com",
        "time": "Wed Apr 02 14:56:14 2025 +0800"
      },
      "committer": {
        "name": "JackieTien97",
        "email": "jackietien97@gmail.com",
        "time": "Wed Apr 02 14:56:14 2025 +0800"
      },
      "message": "delete __pycahce__\n"
    },
    {
      "commit": "5b4fae10cca21bf01d47ce5e99f08f4ccaac58a4",
      "tree": "697d92ef505f445d620f537338b043080b9b6872",
      "parents": [
        "700055e1f11347d2419cbc8c79af0d5cb94506a2"
      ],
      "author": {
        "name": "JackieTien97",
        "email": "jackietien97@gmail.com",
        "time": "Wed Apr 02 14:52:52 2025 +0800"
      },
      "committer": {
        "name": "JackieTien97",
        "email": "jackietien97@gmail.com",
        "time": "Wed Apr 02 14:52:52 2025 +0800"
      },
      "message": "Add mcp_server support for IoTDB\n"
    },
    {
      "commit": "700055e1f11347d2419cbc8c79af0d5cb94506a2",
      "tree": "4184b3fec3b92da98963ad60cfb2f6db4b475728",
      "parents": [
        "8c1477da69ee15eaf7c2c1a4ae5ea96abe675a8c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 17 18:44:29 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 17 18:44:29 2025 +0800"
      },
      "message": "chore(deps): Bump nanoid in /connectors/grafana-plugin (#31)\n\nBumps [nanoid](https://github.com/ai/nanoid) from 3.3.6 to 3.3.8.\n- [Release notes](https://github.com/ai/nanoid/releases)\n- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/ai/nanoid/compare/3.3.6...3.3.8)\n\n---\nupdated-dependencies:\n- dependency-name: nanoid\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8c1477da69ee15eaf7c2c1a4ae5ea96abe675a8c",
      "tree": "efc5b7d41811bbaed8b41809eea284c7f70393d7",
      "parents": [
        "065ec4dec83403e4191dde35f021cb95717c6eee"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 17 18:11:45 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 17 18:11:45 2025 +0800"
      },
      "message": "chore(deps): Bump serialize-javascript in /connectors/grafana-plugin (#39)\n\nBumps [serialize-javascript](https://github.com/yahoo/serialize-javascript) from 6.0.1 to 6.0.2.\n- [Release notes](https://github.com/yahoo/serialize-javascript/releases)\n- [Commits](https://github.com/yahoo/serialize-javascript/compare/v6.0.1...v6.0.2)\n\n---\nupdated-dependencies:\n- dependency-name: serialize-javascript\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "065ec4dec83403e4191dde35f021cb95717c6eee",
      "tree": "1708639f46cd5574d2bfe94b5abf1b88667dbf0b",
      "parents": [
        "8cdcabb3afabe5db515282646317078be78269c8"
      ],
      "author": {
        "name": "Summer",
        "email": "43237967+2b3c511@users.noreply.github.com",
        "time": "Mon Mar 17 17:07:02 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 17 17:07:02 2025 +0800"
      },
      "message": "Add mybatis-generator-plugin module (#46)\n\n* Add mybatis-generator-plugin module\n\n* add module in pom\n\n* spotless\n\n* add example\n\n* update version\n\n* iotdb-spring-boot-starter\n\n* rat\n\n* rat +1\n\n* rat +1\n\n* remove chinese comment\n\n* update README.md\n\n* update example table name\n\n* alignment IoTDB\n\n* add package in distribution/\n\n---------\n\nCo-authored-by: 2b3c511 \u003crong.li@timecho.com\u003e"
    },
    {
      "commit": "8cdcabb3afabe5db515282646317078be78269c8",
      "tree": "4ea82a3b18e8872986c3098bc292191d5c238e6b",
      "parents": [
        "39dbd2439449dc637148bff23604f799b4413e61"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 14 10:19:17 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 14 10:19:17 2025 +0800"
      },
      "message": "chore(deps): Bump org.springframework:spring-web from 5.3.33 to 5.3.39 (#1)\n\n* chore(deps): Bump org.springframework:spring-web from 5.3.33 to 5.3.39\n\nBumps [org.springframework:spring-web](https://github.com/spring-projects/spring-framework) from 5.3.33 to 5.3.39.\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v5.3.33...5.3.39)\n\n---\nupdated-dependencies:\n- dependency-name: org.springframework:spring-web\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\n\n* Update pom.xml\n\n---------\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: Haonan \u003chhaonan@outlook.com\u003e"
    },
    {
      "commit": "39dbd2439449dc637148bff23604f799b4413e61",
      "tree": "c9a9111d6df374916325d3971720fa17f5e1fee9",
      "parents": [
        "94d5ace7ce50a6e94a48ca4cad3b179aaf7acc61"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 14 09:33:25 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 14 09:33:25 2025 +0800"
      },
      "message": "chore(deps): Bump golang.org/x/net in /iotdb-operator (#54)\n\nBumps [golang.org/x/net](https://github.com/golang/net) from 0.19.0 to 0.36.0.\n- [Commits](https://github.com/golang/net/compare/v0.19.0...v0.36.0)\n\n---\nupdated-dependencies:\n- dependency-name: golang.org/x/net\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "94d5ace7ce50a6e94a48ca4cad3b179aaf7acc61",
      "tree": "07c10174496616c7a9131aa90c8afd528c7fb493",
      "parents": [
        "a5bba813b475846175b1e5a96196cca79dec6d09"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 14 09:32:02 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 14 09:32:02 2025 +0800"
      },
      "message": "chore(deps): Bump @babel/helpers in /connectors/grafana-plugin (#55)\n\nBumps [@babel/helpers](https://github.com/babel/babel/tree/HEAD/packages/babel-helpers) from 7.20.13 to 7.26.10.\n- [Release notes](https://github.com/babel/babel/releases)\n- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-helpers)\n\n---\nupdated-dependencies:\n- dependency-name: \"@babel/helpers\"\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "a5bba813b475846175b1e5a96196cca79dec6d09",
      "tree": "2b2aa18a39f3f94070770bd54a6b449d26d96c11",
      "parents": [
        "4785b88c37447b54eb5f656bb0fb7fc069e1a864"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 14 09:31:48 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 14 09:31:48 2025 +0800"
      },
      "message": "chore(deps): Bump @babel/runtime in /connectors/grafana-plugin (#56)\n\nBumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.20.13 to 7.26.10.\n- [Release notes](https://github.com/babel/babel/releases)\n- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime)\n\n---\nupdated-dependencies:\n- dependency-name: \"@babel/runtime\"\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "4785b88c37447b54eb5f656bb0fb7fc069e1a864",
      "tree": "a0d02fcc2fcef1b2c22e6c86fdbbc241ea96fd1d",
      "parents": [
        "2d9a3f1f6539df07d2eedb5b1c65a51a01185e98"
      ],
      "author": {
        "name": "shuwenwei",
        "email": "55970239+shuwenwei@users.noreply.github.com",
        "time": "Fri Mar 14 09:24:08 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 14 09:24:08 2025 +0800"
      },
      "message": "IoTDB Table Spark Connector\n\n"
    },
    {
      "commit": "2d9a3f1f6539df07d2eedb5b1c65a51a01185e98",
      "tree": "bc7ab11f4f7a606f82b66911b29b848ef91aaab8",
      "parents": [
        "e1877ab14f6c84fd38d4573f04a515734b093812"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Tue Mar 11 18:09:36 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 11 18:09:36 2025 +0800"
      },
      "message": "Bump version to 2.0.2-SNAPSHOT (#53)\n\nupdate iotdb to 2.0.1-beta\nupdate tsfile to 2.0.1"
    },
    {
      "commit": "e1877ab14f6c84fd38d4573f04a515734b093812",
      "tree": "f00bb689e22910d86342bd6da4a06b08adbf9bac",
      "parents": [
        "541e1f57c6b67c9befd68ca7061a94f40e1eed94"
      ],
      "author": {
        "name": "Steve Yurong Su",
        "email": "rong@apache.org",
        "time": "Fri Mar 07 15:21:41 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 07 15:21:41 2025 +0800"
      },
      "message": "Add compile-check for Java 17"
    },
    {
      "commit": "541e1f57c6b67c9befd68ca7061a94f40e1eed94",
      "tree": "afa33c520c1a3d84941b30ba0aae260c55661daa",
      "parents": [
        "25a88f6aabf806d38ffa36c70c8e8b7b1599cd9f"
      ],
      "author": {
        "name": "Steve Yurong Su",
        "email": "rong@apache.org",
        "time": "Wed Mar 05 17:52:30 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 05 17:52:30 2025 +0800"
      },
      "message": "Collector: Refactor package structure and polish code style (#49)\n\n"
    },
    {
      "commit": "25a88f6aabf806d38ffa36c70c8e8b7b1599cd9f",
      "tree": "2f6ae94a351dd62fc701cb6dc712d56541b22794",
      "parents": [
        "a812c4c819a32a1f248515684da3717ce7b86b30"
      ],
      "author": {
        "name": "0xB",
        "email": "76414902+YC27@users.noreply.github.com",
        "time": "Tue Mar 04 11:12:32 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 04 11:12:32 2025 +0800"
      },
      "message": "Collector: Refactoring the three phases of data collection tasks using disruptor (#48)\n\n"
    },
    {
      "commit": "a812c4c819a32a1f248515684da3717ce7b86b30",
      "tree": "f9c4b85c5d095b24ea01cf663b2c90459855dc29",
      "parents": [
        "55640cc410845c5926e655a53fc2ac916be41d43"
      ],
      "author": {
        "name": "0xB",
        "email": "76414902+YC27@users.noreply.github.com",
        "time": "Fri Feb 21 15:15:13 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 21 15:15:13 2025 +0800"
      },
      "message": "Complete the migration of the collector node project (#43)\n\n* Complete the migration of the collector node project\n\n* fix compile-check fail"
    },
    {
      "commit": "55640cc410845c5926e655a53fc2ac916be41d43",
      "tree": "582ecdc4f294c459027cec709667ba41b55926f3",
      "parents": [
        "eeab6671dbd261a76d71349b6766169eea38e64b"
      ],
      "author": {
        "name": "0xB",
        "email": "76414902+YC27@users.noreply.github.com",
        "time": "Wed Feb 19 18:25:53 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 19 18:25:53 2025 +0800"
      },
      "message": "Add compile-check for java8 \u0026 java11 (#42)\n\n"
    },
    {
      "commit": "eeab6671dbd261a76d71349b6766169eea38e64b",
      "tree": "b85e0e729d3898596279fa983da4e53da4349228",
      "parents": [
        "25ef8c7fcf643d03ea2394d6559e446a7ac7c925"
      ],
      "author": {
        "name": "0xB",
        "email": "76414902+YC27@users.noreply.github.com",
        "time": "Wed Feb 19 14:49:09 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 19 14:49:09 2025 +0800"
      },
      "message": "Add conde analysis \u0026 remove sonar (#41)\n\n"
    },
    {
      "commit": "25ef8c7fcf643d03ea2394d6559e446a7ac7c925",
      "tree": "6c94657eb3756e89ccda53bd0bd8356d0cc490bb",
      "parents": [
        "a11397e94761ad0ed05e17ddfa5fd484d5dfdeee"
      ],
      "author": {
        "name": "0xB",
        "email": "76414902+YC27@users.noreply.github.com",
        "time": "Tue Feb 18 19:36:38 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 18 19:36:38 2025 +0800"
      },
      "message": "Fix sonar could not find project distributions. (#40)\n\n"
    },
    {
      "commit": "a11397e94761ad0ed05e17ddfa5fd484d5dfdeee",
      "tree": "a70a2d3565028d23d1699b12f5042dd564e86bfc",
      "parents": [
        "55c7de7dba60722933ab6c20dc5c3290c86f93a1"
      ],
      "author": {
        "name": "0xB",
        "email": "76414902+YC27@users.noreply.github.com",
        "time": "Tue Feb 18 18:14:53 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 18 18:14:53 2025 +0800"
      },
      "message": "Add sonar \u0026 todos check \u0026 dependency check. (#37)\n\n* Add sonar \u0026 todos check \u0026 dependency check.\r\n\r\n* Add licenses and exclude go.mod \u0026 go.sum submodule\r\n\r\n* Modify version from 1.3.2-SNAPSHOT to 1.3.2"
    },
    {
      "commit": "55c7de7dba60722933ab6c20dc5c3290c86f93a1",
      "tree": "e115a815eb0c68760bf2b4224003179761a0bdc5",
      "parents": [
        "2193e14bad128d0ffd24344f83205f22038a0747"
      ],
      "author": {
        "name": "CloudWise-Lukemiao",
        "email": "282583553@qq.com",
        "time": "Wed Dec 18 15:52:59 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 18 15:52:59 2024 +0800"
      },
      "message": "Fixed the issue of displaying 0 when the number is null (#34)\n\n* Fixed the issue of displaying 0 when the number is null\r\n\r\n* Fixed the issue of displaying 0 when the number is null"
    },
    {
      "commit": "2193e14bad128d0ffd24344f83205f22038a0747",
      "tree": "f5d5055158711333afe7f3920209d4a65d95f4eb",
      "parents": [
        "d5a37e8c790fb8397d0ddd434ad053a8b5ed41f6"
      ],
      "author": {
        "name": "CloudWise-Lukemiao",
        "email": "282583553@qq.com",
        "time": "Tue Dec 10 18:19:08 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 10 18:19:08 2024 +0800"
      },
      "message": "Fixed the issue of displaying 0 when the number is null (#32)\n\n* Fixed the issue of displaying 0 when the number is null\r\n\r\n* Fixed the issue of displaying 0 when the number is null"
    },
    {
      "commit": "d5a37e8c790fb8397d0ddd434ad053a8b5ed41f6",
      "tree": "e52ea6dc6301a10a41323da8b75a38b2f122a8b9",
      "parents": [
        "e000968fa5d3cf0402fecbf00f42c11c2f4e6043"
      ],
      "author": {
        "name": "CloudWise-Lukemiao",
        "email": "282583553@qq.com",
        "time": "Tue Dec 10 16:08:38 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 10 16:08:38 2024 +0800"
      },
      "message": "feature iotdb operator (#23)\n\n* feature add operator\r\n"
    },
    {
      "commit": "e000968fa5d3cf0402fecbf00f42c11c2f4e6043",
      "tree": "3d0f7c20b1496e1cb9893c4688d36d7b1edb83a6",
      "parents": [
        "b792c622312af515a9481dc13bd945df17c1538f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Dec 09 09:40:32 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 09 09:40:32 2024 +0800"
      },
      "message": "chore(deps): Bump cross-spawn in /connectors/grafana-plugin (#29)\n\nBumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.\r\n- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)\r\n- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: cross-spawn\r\n  dependency-type: indirect\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b792c622312af515a9481dc13bd945df17c1538f",
      "tree": "1de3c7ba26d3c48686f408c83e3047e01753e783",
      "parents": [
        "d67cfc582dfca420c76eaab6d70ba4397a5792aa"
      ],
      "author": {
        "name": "Summer",
        "email": "43237967+2b3c511@users.noreply.github.com",
        "time": "Tue Nov 26 10:27:55 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 26 10:27:55 2024 +0800"
      },
      "message": "Helm README.md (#26)\n\n* helm\r\n\r\n* add license\r\n\r\n* helm add readme.md\r\n\r\n---------\r\n\r\nCo-authored-by: 2b3c511 \u003crong.li@timecho.com\u003e"
    },
    {
      "commit": "d67cfc582dfca420c76eaab6d70ba4397a5792aa",
      "tree": "2b14ab10d93cab67ebcfdd17502d3a985e5e260f",
      "parents": [
        "0c0ffc91b3b8ab97b148836a2cd3a83f843d3230"
      ],
      "author": {
        "name": "Summer",
        "email": "43237967+2b3c511@users.noreply.github.com",
        "time": "Fri Nov 22 17:33:47 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 22 17:33:47 2024 +0800"
      },
      "message": "Add helm module (#25)\n\n* helm\r\n\r\n* add license\r\n\r\n* Update helm/templates/_helpers.tpl\r\n\r\nCo-authored-by: CritasWang \u003ccritas@outlook.com\u003e\r\n\r\n---------\r\n\r\nCo-authored-by: 2b3c511 \u003crong.li@timecho.com\u003e\r\nCo-authored-by: CritasWang \u003ccritas@outlook.com\u003e"
    },
    {
      "commit": "0c0ffc91b3b8ab97b148836a2cd3a83f843d3230",
      "tree": "d4da7259e4f271308604e3bac102b5684b99e9eb",
      "parents": [
        "b82ff2666cdd4d77ad4e91f24af532359867a3a8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 09 18:56:32 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 09 18:56:32 2024 +0800"
      },
      "message": "chore(deps): Bump webpack in /connectors/grafana-plugin (#22)\n\nBumps [webpack](https://github.com/webpack/webpack) from 5.76.1 to 5.95.0.\r\n- [Release notes](https://github.com/webpack/webpack/releases)\r\n- [Commits](https://github.com/webpack/webpack/compare/v5.76.1...v5.95.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: webpack\r\n  dependency-type: indirect\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b82ff2666cdd4d77ad4e91f24af532359867a3a8",
      "tree": "dc5685215b009695d72f5e6a309611948fe9aab7",
      "parents": [
        "ce67a8768119c44b586a77daae6834be40518f45"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 09 11:36:16 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 09 11:36:16 2024 +0800"
      },
      "message": "chore(deps): Bump path-to-regexp in /connectors/grafana-plugin (#18)\n\nBumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 1.8.0 to 1.9.0.\r\n- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)\r\n- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)\r\n- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v1.8.0...v1.9.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: path-to-regexp\r\n  dependency-type: indirect\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ce67a8768119c44b586a77daae6834be40518f45",
      "tree": "8760f98cd24229946343c01edf3bcacabcd0a8f2",
      "parents": [
        "ed798633cad0d4e3b640b91b4364c844da4e6e3e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Sep 20 09:57:45 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 20 09:57:45 2024 +0800"
      },
      "message": "chore(deps): Bump micromatch in /connectors/grafana-plugin (#17)\n\nBumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.5 to 4.0.8.\r\n- [Release notes](https://github.com/micromatch/micromatch/releases)\r\n- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md)\r\n- [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: micromatch\r\n  dependency-type: indirect\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ed798633cad0d4e3b640b91b4364c844da4e6e3e",
      "tree": "3328d37f8c12bf3c4a975316d296d54766174433",
      "parents": [
        "b4953d1c6b54110d26f3c4c6acca04d046265c5e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Sep 20 09:39:16 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 20 09:39:16 2024 +0800"
      },
      "message": "chore(deps): Bump github.com/grafana/grafana-plugin-sdk-go from 0.193.0 to 0.250.0 in /connectors/grafana-plugin (#20)\n\n* chore(deps): Bump github.com/grafana/grafana-plugin-sdk-go\r\n\r\nBumps [github.com/grafana/grafana-plugin-sdk-go](https://github.com/grafana/grafana-plugin-sdk-go) from 0.193.0 to 0.250.0.\r\n- [Release notes](https://github.com/grafana/grafana-plugin-sdk-go/releases)\r\n- [Commits](https://github.com/grafana/grafana-plugin-sdk-go/compare/v0.193.0...v0.250.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: github.com/grafana/grafana-plugin-sdk-go\r\n  dependency-type: direct:production\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\n\r\n* Update backend-compile.sh\r\n\r\n* Update backend-compile.bat\r\n\r\n---------\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\r\nCo-authored-by: Haonan \u003chhaonan@outlook.com\u003e"
    },
    {
      "commit": "b4953d1c6b54110d26f3c4c6acca04d046265c5e",
      "tree": "8f4bfaca499a9abb3a4d914fe7e1da86f6fb607b",
      "parents": [
        "d0b71a0330149fc21645041e010f4d74c99fbf25"
      ],
      "author": {
        "name": "CloudWise-Lukemiao",
        "email": "luke.miao@yunzhihui.com",
        "time": "Mon Aug 05 11:34:44 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 05 11:34:44 2024 +0800"
      },
      "message": "Fixed the issue where the Grafana plugin does not display data when there is no time value (#13)\n\nCo-authored-by: luke.miao \u003c282583553@qq.com\u003e"
    },
    {
      "commit": "d0b71a0330149fc21645041e010f4d74c99fbf25",
      "tree": "c5f2bf8f6ce648d272a461ee6a03d3b09686f777",
      "parents": [
        "2b6c6578729bee746eabae60637961039e811a99"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 24 18:32:12 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 24 18:32:12 2024 +0800"
      },
      "message": "chore(deps): Bump braces in /connectors/grafana-plugin (#12)\n\nBumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.\r\n- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)\r\n- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: braces\r\n  dependency-type: indirect\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "2b6c6578729bee746eabae60637961039e811a99",
      "tree": "123ff81fc01f2a145de86bcd38f5f5f2734aaab0",
      "parents": [
        "11d201171086cfc7d28be1a8cf10d60d21903678"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 23 18:17:59 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 23 18:17:59 2024 +0800"
      },
      "message": "chore(deps): Bump golang.org/x/net in /connectors/grafana-plugin (#7)\n\nBumps [golang.org/x/net](https://github.com/golang/net) from 0.17.0 to 0.23.0.\r\n- [Commits](https://github.com/golang/net/compare/v0.17.0...v0.23.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: golang.org/x/net\r\n  dependency-type: indirect\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "11d201171086cfc7d28be1a8cf10d60d21903678",
      "tree": "6b5ff86bf602cf036fdf810cb5df813df7b65929",
      "parents": [
        "bfd24d2f876cff89c7e32f402da127d1731ef4f1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 23 18:17:22 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 23 18:17:22 2024 +0800"
      },
      "message": "chore(deps): Bump ws from 7.5.9 to 7.5.10 in /connectors/grafana-plugin (#9)\n\nBumps [ws](https://github.com/websockets/ws) from 7.5.9 to 7.5.10.\r\n- [Release notes](https://github.com/websockets/ws/releases)\r\n- [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: ws\r\n  dependency-type: indirect\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "bfd24d2f876cff89c7e32f402da127d1731ef4f1",
      "tree": "9f8a410c281038af84fd0cc62469236b45921e25",
      "parents": [
        "71082e3197bf8cb5d0ac81a0da5a20027832937a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 23 18:16:47 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 23 18:16:47 2024 +0800"
      },
      "message": "chore(deps): Bump fast-loops in /connectors/grafana-plugin (#11)\n\nBumps [fast-loops](https://github.com/robinweser/fast-loops) from 1.1.3 to 1.1.4.\r\n- [Commits](https://github.com/robinweser/fast-loops/commits)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: fast-loops\r\n  dependency-type: indirect\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "71082e3197bf8cb5d0ac81a0da5a20027832937a",
      "tree": "84b9627b8716b2e7f013fd0a4d90bb1693e55fd1",
      "parents": [
        "bb248c047e8948d8c1688e6a547e705249f0525e"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 15:00:02 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 15:00:02 2024 +0200"
      },
      "message": "chore: Removed the examples that we decided to stay in the main repo.\n"
    },
    {
      "commit": "bb248c047e8948d8c1688e6a547e705249f0525e",
      "tree": "0e3b2d5fff00283c3d476e1b8189c122916de32f",
      "parents": [
        "face1d41cc06144fb7f74e5b06ddb4ad39c86c85"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 14:27:40 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 14:27:40 2024 +0200"
      },
      "message": "chore: Moved the Docker-related stuff for extras modules to the extras repo\n"
    },
    {
      "commit": "face1d41cc06144fb7f74e5b06ddb4ad39c86c85",
      "tree": "1f66cdc4b24eb7caf20222b77e34b470496a73c7",
      "parents": [
        "5bf93e69c12d25bab775bc909bb79b4b1215ede5"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 13:39:58 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 13:39:58 2024 +0200"
      },
      "message": "chore: Made the examples not get deployed to Nexus.\n"
    },
    {
      "commit": "5bf93e69c12d25bab775bc909bb79b4b1215ede5",
      "tree": "69d40621f7fe022f0e1f5113cd69fbf73a459963",
      "parents": [
        "421940d890b17b5ffa72c0f52722e9b80496fdb4"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 13:39:33 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 13:39:33 2024 +0200"
      },
      "message": "chore: Removed even more non existing profiles from the Jenkinsfile\n"
    },
    {
      "commit": "421940d890b17b5ffa72c0f52722e9b80496fdb4",
      "tree": "a259810daf2577f0f2899e338935b045260ed6de",
      "parents": [
        "2a6a7f78f416cf8197a5aa651fa7cb9bffc3c80f"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 13:29:38 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 13:29:38 2024 +0200"
      },
      "message": "chore: Removed the integrationtest step.\n"
    },
    {
      "commit": "2a6a7f78f416cf8197a5aa651fa7cb9bffc3c80f",
      "tree": "83cb9895d3055d453f1ad24c29e50b36c6a7b883",
      "parents": [
        "e96689e9508f0d8d178d34181efe6bd0641f938a"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 13:17:39 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 13:17:39 2024 +0200"
      },
      "message": "chore: Fixed an error in the Jenkinsfile script\n"
    },
    {
      "commit": "e96689e9508f0d8d178d34181efe6bd0641f938a",
      "tree": "ba9eaad90b1f94ddb43eb351828da48c774d65b2",
      "parents": [
        "3251c7486030aaffe100105c3f020e124f61fa3b"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 13:11:16 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Apr 18 13:11:16 2024 +0200"
      },
      "message": "chore: Added a Jenkinsfile for building on Apache\u0027s Jenkins\n"
    },
    {
      "commit": "3251c7486030aaffe100105c3f020e124f61fa3b",
      "tree": "13dc552b63dc46427897ee2057fed7c91c629c29",
      "parents": [
        "62097ca2e09a4b01f9dc2284eb3c7b760bf4c6f9"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Apr 15 14:03:22 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Apr 15 14:03:22 2024 +0200"
      },
      "message": "chore: Cleaned up the names of the intermediate poms\n"
    },
    {
      "commit": "62097ca2e09a4b01f9dc2284eb3c7b760bf4c6f9",
      "tree": "67d84ce6b2ffeef42e9841906c0daef62ab0e46e",
      "parents": [
        "a17d2509696610c4a33e6985414fac2c3c286b09"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Apr 15 13:29:23 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Apr 15 13:29:23 2024 +0200"
      },
      "message": "chore: Updated the github-action config for the grafana plugin to the new directory name.\n"
    },
    {
      "commit": "a17d2509696610c4a33e6985414fac2c3c286b09",
      "tree": "e25b5a76b69ffbd498f099d152b6fd1b4e1a0213",
      "parents": [
        "91891aebdc12eac1ae5f0f164106ee473e6f612f"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Apr 15 13:25:55 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Apr 15 13:25:55 2024 +0200"
      },
      "message": "chore: Modev the github actions build for the grafana plugin to the new repository.\n"
    },
    {
      "commit": "91891aebdc12eac1ae5f0f164106ee473e6f612f",
      "tree": "132a953799c8f26e6cb7229624aeb4c375bddd40",
      "parents": [
        "99f1ffddba1e5a06d62337cf4a03eb6c7024c425"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Apr 15 11:52:25 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Apr 15 11:52:25 2024 +0200"
      },
      "message": "chore: Ported the distributions for the connectors to the new repository.\n"
    },
    {
      "commit": "99f1ffddba1e5a06d62337cf4a03eb6c7024c425",
      "tree": "7dc5a58d9217181b77a2a441e90e0f970a0eef7e",
      "parents": [
        "0e2197f39b517a7df1fa488f5ded35599ed7f57f"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Apr 15 10:49:17 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Apr 15 10:49:17 2024 +0200"
      },
      "message": "chore: Simplified the root pom of the extras repository, also adjusted some parts to the new repository url.\n"
    },
    {
      "commit": "0e2197f39b517a7df1fa488f5ded35599ed7f57f",
      "tree": "c4622febc67838dcdb5a86a59d30556ba8ea97fe",
      "parents": [],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Apr 15 10:23:55 2024 +0200"
      },
      "committer": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Apr 15 10:23:55 2024 +0200"
      },
      "message": "Initial commit based on the content of the tag \"before-moving-extras\" from the main repository (https://github.com/apache/iotdb/releases/tag/before-moving-extras)\n"
    }
  ]
}
