sequel-duckdb 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.beads/.beads-credential-key +1 -0
  3. data/.beads/.gitignore +66 -0
  4. data/.beads/README.md +85 -0
  5. data/.beads/config.yaml +56 -0
  6. data/.beads/hooks/post-checkout +24 -0
  7. data/.beads/hooks/post-merge +24 -0
  8. data/.beads/hooks/pre-commit +24 -0
  9. data/.beads/hooks/pre-push +24 -0
  10. data/.beads/hooks/prepare-commit-msg +24 -0
  11. data/.beads/metadata.json +7 -0
  12. data/.kiro/specs/advanced-sql-features-implementation/design.md +3 -1
  13. data/.kiro/specs/advanced-sql-features-implementation/requirements.md +1 -1
  14. data/.kiro/specs/advanced-sql-features-implementation/tasks.md +5 -1
  15. data/.kiro/specs/duckdb-sql-syntax-compatibility/design.md +15 -1
  16. data/.kiro/specs/duckdb-sql-syntax-compatibility/requirements.md +1 -1
  17. data/.kiro/specs/duckdb-sql-syntax-compatibility/tasks.md +13 -0
  18. data/.kiro/specs/edge-cases-and-validation-fixes/requirements.md +1 -1
  19. data/.kiro/specs/integration-test-database-setup/requirements.md +1 -1
  20. data/.kiro/specs/sequel-duckdb-adapter/design.md +8 -1
  21. data/.kiro/specs/sequel-duckdb-adapter/requirements.md +10 -10
  22. data/.kiro/specs/sequel-duckdb-adapter/tasks.md +48 -3
  23. data/.kiro/specs/sql-expression-handling-fix/design.md +34 -1
  24. data/.kiro/specs/sql-expression-handling-fix/requirements.md +1 -1
  25. data/.kiro/specs/sql-expression-handling-fix/tasks.md +3 -0
  26. data/.kiro/specs/test-infrastructure-improvements/requirements.md +1 -1
  27. data/.kiro/steering/product.md +5 -1
  28. data/.kiro/steering/structure.md +1 -1
  29. data/.kiro/steering/tech.md +14 -1
  30. data/.kiro/steering/testing.md +22 -1
  31. data/.mdformat.toml +2 -0
  32. data/.release-please-manifest.json +3 -0
  33. data/.rubocop.yml +116 -58
  34. data/.rubocop_todo.yml +323 -0
  35. data/AGENTS.md +154 -0
  36. data/API_DOCUMENTATION.md +73 -49
  37. data/CHANGELOG.md +46 -10
  38. data/FINAL_STATUS.md +99 -0
  39. data/LICENSE +1 -1
  40. data/MIGRATION_EXAMPLES.md +1 -1
  41. data/PERFORMANCE_OPTIMIZATIONS.md +4 -1
  42. data/README.md +90 -1
  43. data/REFACTORING_SUMMARY.md +264 -0
  44. data/Rakefile +21 -5
  45. data/TASK_10.2_IMPLEMENTATION_SUMMARY.md +19 -1
  46. data/docs/DUCKDB_SQL_PATTERNS.md +39 -1
  47. data/docs/TASK_12_VERIFICATION_SUMMARY.md +14 -1
  48. data/justfile +52 -0
  49. data/lib/sequel/adapters/duckdb.rb +137 -108
  50. data/lib/sequel/adapters/shared/duckdb.rb +292 -1490
  51. data/lib/sequel/duckdb/helpers/copier.rb +50 -0
  52. data/lib/sequel/duckdb/helpers/pathifier.rb +141 -0
  53. data/lib/sequel/duckdb/version.rb +5 -2
  54. data/plans/date_arithmetic.md +420 -0
  55. data/plans/engineering/Sequel.md +471 -0
  56. data/plans/engineering/duckdb.md +712 -0
  57. data/plans/engineering/sqlite.md +453 -0
  58. data/plans/mock_connection_bug.md +333 -0
  59. data/plans/mock_without_driver_gem.md +371 -0
  60. data/plans/over_engineering_analysis.md +122 -0
  61. data/plans/schema_management.md +383 -0
  62. data/release-please-config.json +14 -0
  63. metadata +49 -27
@@ -0,0 +1,383 @@
1
+ # Schema Management Implementation Plan
2
+
3
+ ## Overview
4
+
5
+ Implement DuckDB schema management functionality in the sequel-duckdb adapter to support creating, dropping, and managing schemas. This plan addresses schema operations that are natively supported by DuckDB.
6
+
7
+ ## Background Research
8
+
9
+ ### DuckDB Schema Support
10
+
11
+ DuckDB supports SQL schema management with the following capabilities:
12
+
13
+ 1. **CREATE SCHEMA**
14
+
15
+ - Basic: `CREATE SCHEMA s1;`
16
+ - Conditional: `CREATE SCHEMA IF NOT EXISTS s2;`
17
+ - Replace: `CREATE OR REPLACE SCHEMA s2;`
18
+ - Default schema is `main`
19
+
20
+ 2. **DROP SCHEMA**
21
+
22
+ - Basic: `DROP SCHEMA sch;`
23
+ - Conditional: `DROP SCHEMA IF EXISTS sch;`
24
+ - With cascade: `DROP SCHEMA sch CASCADE;`
25
+ - Dependency tracking for tables, views, functions, indexes, sequences, types, macros
26
+ - Note: Dependencies are NOT tracked for views (limitation)
27
+
28
+ 3. **Schema Usage**
29
+
30
+ - Tables can be created in schemas: `CREATE TABLE s1.t (id INTEGER);`
31
+ - Cross-schema queries are supported
32
+ - Schemas provide logical namespaces for organizing database objects
33
+
34
+ ### DuckDB Database Support
35
+
36
+ **Important Finding**: DuckDB does NOT support traditional `CREATE DATABASE` or `DROP DATABASE` commands.
37
+
38
+ Instead, DuckDB uses:
39
+
40
+ - **ATTACH DATABASE**: Attach existing database files to current session
41
+ - `ATTACH 'file.db' AS alias;`
42
+ - `ATTACH 'file.db' (READ_ONLY);`
43
+ - Not persisted between sessions
44
+ - **DETACH DATABASE**: Detach database files from current session
45
+ - Database creation happens implicitly when opening a connection to a file path
46
+
47
+ ### Sequel Schema Support
48
+
49
+ Sequel provides schema management methods (primarily in PostgreSQL adapter):
50
+
51
+ 1. **create_schema(name, opts={})**
52
+
53
+ - Creates a schema
54
+ - Options: `:if_not_exists`, `:owner` (PostgreSQL-specific)
55
+
56
+ 2. **create_schema_sql(name, opts={})**
57
+
58
+ - Generates CREATE SCHEMA SQL
59
+
60
+ 3. **drop_schema(name, opts={})**
61
+
62
+ - Drops a schema
63
+ - Calls `remove_all_cached_schemas` to clear caches
64
+ - Options: `:if_exists`, `:cascade`
65
+
66
+ 4. **drop_schema_sql(name, opts={})**
67
+
68
+ - Generates DROP SCHEMA SQL
69
+
70
+ 5. **rename_schema(name, new_name)** (PostgreSQL-specific)
71
+
72
+ - Renames a schema
73
+
74
+ 6. **remove_all_cached_schemas**
75
+
76
+ - Clears cached schema information
77
+ - Resets `@primary_keys`, `@primary_key_sequences`, `@schemas`
78
+
79
+ ## Implementation Plan
80
+
81
+ ### Phase 1: Core Schema Operations
82
+
83
+ Implement basic schema creation and deletion in `DatabaseMethods` module:
84
+
85
+ #### 1.1 `create_schema(name, opts={})`
86
+
87
+ ```ruby
88
+ def create_schema(name, opts=OPTS)
89
+ self << create_schema_sql(name, opts)
90
+ end
91
+ ```
92
+
93
+ **Supported options:**
94
+
95
+ - `:if_not_exists` - Add IF NOT EXISTS clause
96
+
97
+ **Not supported (PostgreSQL-specific):**
98
+
99
+ - `:owner` - DuckDB doesn't support AUTHORIZATION/OWNER syntax
100
+
101
+ #### 1.2 `create_schema_sql(name, opts={})`
102
+
103
+ ```ruby
104
+ def create_schema_sql(name, opts=OPTS)
105
+ sql = "CREATE"
106
+ sql += " OR REPLACE" if opts[:or_replace]
107
+ sql += " SCHEMA"
108
+ sql += " IF NOT EXISTS" if opts[:if_not_exists]
109
+ sql += " #{quote_identifier(name)}"
110
+ sql
111
+ end
112
+ ```
113
+
114
+ **DuckDB-specific considerations:**
115
+
116
+ - Support both `IF NOT EXISTS` and `OR REPLACE`
117
+ - Cannot use both simultaneously (mutually exclusive)
118
+
119
+ #### 1.3 `drop_schema(name, opts={})`
120
+
121
+ ```ruby
122
+ def drop_schema(name, opts=OPTS)
123
+ self << drop_schema_sql(name, opts)
124
+ remove_all_cached_schemas
125
+ end
126
+ ```
127
+
128
+ **Supported options:**
129
+
130
+ - `:if_exists` - Add IF EXISTS clause
131
+ - `:cascade` - Add CASCADE clause to drop dependent objects
132
+
133
+ #### 1.4 `drop_schema_sql(name, opts={})`
134
+
135
+ ```ruby
136
+ def drop_schema_sql(name, opts=OPTS)
137
+ sql = "DROP SCHEMA"
138
+ sql += " IF EXISTS" if opts[:if_exists]
139
+ sql += " #{quote_identifier(name)}"
140
+ sql += " CASCADE" if opts[:cascade]
141
+ sql
142
+ end
143
+ ```
144
+
145
+ #### 1.5 `remove_all_cached_schemas`
146
+
147
+ ```ruby
148
+ def remove_all_cached_schemas
149
+ @schema_cache = {}
150
+ @schemas = {}
151
+ @primary_keys = {}
152
+ @primary_key_sequences = {}
153
+ end
154
+ ```
155
+
156
+ **Important**: All cache variables MUST be initialized as empty hashes (`{}`), not `nil`. Sequel's internal `remove_cached_schema` method expects `@schemas` to be a Hash and will call `.delete()` on it. Setting it to `nil` will cause a `NoMethodError` when `create_view` or other methods call `remove_cached_schema` internally.
157
+
158
+ **Note**: DuckDB adapter uses `@schema_cache` for caching schema information (see line 505-510 in shared/duckdb.rb). Need to clear this when schemas are modified.
159
+
160
+ ### Phase 2: Schema Introspection
161
+
162
+ Implement methods to list and inspect schemas:
163
+
164
+ #### 2.1 `schemas(opts={})`
165
+
166
+ ```ruby
167
+ def schemas(opts=OPTS)
168
+ sql = "SELECT schema_name FROM information_schema.schemata"
169
+ sql += " WHERE catalog_name = ?" if opts[:catalog]
170
+
171
+ schemas = []
172
+ execute(sql, opts[:catalog] ? [opts[:catalog]] : []) do |row|
173
+ schemas << row[:schema_name].to_sym
174
+ end
175
+
176
+ schemas
177
+ end
178
+ ```
179
+
180
+ #### 2.2 `schema_exists?(name, opts={})`
181
+
182
+ ```ruby
183
+ def schema_exists?(name, opts=OPTS)
184
+ sql = "SELECT 1 FROM information_schema.schemata WHERE schema_name = ? LIMIT 1"
185
+
186
+ result = nil
187
+ execute(sql, [name.to_s]) do |_row|
188
+ result = true
189
+ end
190
+
191
+ !!result
192
+ end
193
+ ```
194
+
195
+ ### Phase 3: Database File Operations (ATTACH/DETACH)
196
+
197
+ **Decision**: Do NOT implement `create_database` / `drop_database` because:
198
+
199
+ 1. DuckDB doesn't support these SQL commands
200
+ 2. Database creation is implicit (happens when connecting to a file path)
201
+ 3. ATTACH/DETACH are session-specific, not DDL operations
202
+ 4. These operations are outside the scope of typical Sequel adapter functionality
203
+
204
+ Instead, document that users should:
205
+
206
+ - Use connection strings to create/open database files
207
+ - Use ATTACH/DETACH via raw SQL if needed: `db.run("ATTACH 'other.db' AS other")`
208
+
209
+ ### Phase 4: Testing
210
+
211
+ Create comprehensive tests for schema operations:
212
+
213
+ #### 4.1 Schema Creation Tests
214
+
215
+ - Test basic CREATE SCHEMA
216
+ - Test CREATE SCHEMA IF NOT EXISTS
217
+ - Test CREATE OR REPLACE SCHEMA
218
+ - Test error handling for duplicate schemas (without IF NOT EXISTS)
219
+
220
+ #### 4.2 Schema Deletion Tests
221
+
222
+ - Test basic DROP SCHEMA (empty schema)
223
+ - Test DROP SCHEMA IF EXISTS
224
+ - Test DROP SCHEMA CASCADE (with dependent objects)
225
+ - Test error handling for non-existent schemas (without IF EXISTS)
226
+ - Test dependency error (dropping schema with objects, without CASCADE)
227
+
228
+ #### 4.3 Schema Introspection Tests
229
+
230
+ - Test listing all schemas
231
+ - Test schema_exists? for existing and non-existing schemas
232
+ - Test that default 'main' schema exists
233
+
234
+ #### 4.4 Schema Usage Tests
235
+
236
+ - Test creating tables in custom schemas
237
+ - Test cross-schema queries
238
+ - Test that schema cache is properly cleared after drop
239
+
240
+ #### 4.5 Edge Cases
241
+
242
+ - Test schema names that require quoting (with special characters)
243
+ - Test schema names that are reserved words
244
+ - Test mutually exclusive options (:if_not_exists vs :or_replace)
245
+
246
+ ### Phase 5: Documentation
247
+
248
+ #### 5.1 Update README
249
+
250
+ Add section on schema management:
251
+
252
+ ```markdown
253
+ ## Schema Management
254
+
255
+ sequel-duckdb supports DuckDB's schema functionality:
256
+
257
+ ### Creating Schemas
258
+ db.create_schema(:analytics)
259
+ db.create_schema(:staging, if_not_exists: true)
260
+ db.create_schema(:temp, or_replace: true)
261
+
262
+ ### Dropping Schemas
263
+ db.drop_schema(:analytics)
264
+ db.drop_schema(:staging, if_exists: true)
265
+ db.drop_schema(:temp, cascade: true) # Drops all objects in schema
266
+
267
+ ### Listing Schemas
268
+ db.schemas # => [:main, :analytics, :staging]
269
+
270
+ ### Using Schemas
271
+ db.create_table(Sequel[:analytics][:sales]) do
272
+ primary_key :id
273
+ String :product
274
+ Numeric :amount
275
+ end
276
+
277
+ db[:analytics__sales].insert(product: 'Widget', amount: 99.99)
278
+ ```
279
+
280
+ #### 5.2 Document Limitations
281
+
282
+ - DuckDB does not support schema ownership/authorization
283
+ - DuckDB does not support renaming schemas (no ALTER SCHEMA RENAME)
284
+ - View dependencies are not tracked by DuckDB
285
+
286
+ ## Implementation Checklist
287
+
288
+ - [x] Phase 1: Core schema operations
289
+
290
+ - [x] Implement `create_schema(name, opts={})`
291
+ - [x] Implement `create_schema_sql(name, opts={})`
292
+ - [x] Implement `drop_schema(name, opts={})`
293
+ - [x] Implement `drop_schema_sql(name, opts={})`
294
+ - [x] Implement `remove_all_cached_schemas`
295
+ - [x] Add validation for mutually exclusive options
296
+
297
+ - [x] Phase 2: Schema introspection
298
+
299
+ - [x] Implement `schemas(opts={})`
300
+ - [x] Implement `schema_exists?(name, opts={})`
301
+
302
+ - [x] Phase 3: Document ATTACH/DETACH approach
303
+
304
+ - [x] Add documentation for database file operations
305
+ - [x] Explain why create_database/drop_database are not implemented
306
+
307
+ - [x] Phase 4: Testing
308
+
309
+ - [x] Write schema creation tests (6 tests)
310
+ - [x] Write schema deletion tests (6 tests)
311
+ - [x] Write schema introspection tests (5 tests)
312
+ - [x] Write schema usage tests (4 tests)
313
+ - [x] Write edge case tests (3 tests)
314
+ - [x] Write cache clearing tests (3 tests)
315
+ - [x] Add regression test for `remove_cached_schema` compatibility
316
+
317
+ - [x] Phase 5: Documentation
318
+
319
+ - [x] Update README with schema management section
320
+ - [x] Document limitations
321
+ - [x] Add examples for common use cases
322
+ - [x] Document ATTACH/DETACH for multiple database files
323
+
324
+ ## Implementation Summary
325
+
326
+ ### Completed Features
327
+
328
+ All planned features have been implemented and tested:
329
+
330
+ 1. **Core Schema Operations** (`lib/sequel/adapters/shared/duckdb.rb`)
331
+
332
+ - `create_schema(name, opts={})` - Lines 1191-1193
333
+ - `create_schema_sql(name, opts={})` - Lines 1202-1214
334
+ - `drop_schema(name, opts={})` - Lines 1227-1230
335
+ - `drop_schema_sql(name, opts={})` - Lines 1239-1245
336
+ - `remove_all_cached_schemas` - Lines 1257-1262
337
+
338
+ 2. **Schema Introspection** (`lib/sequel/adapters/shared/duckdb.rb`)
339
+
340
+ - `schemas(opts={})` - Lines 1270-1280
341
+ - `schema_exists?(name, opts={})` - Lines 1291-1300
342
+
343
+ 3. **Comprehensive Test Suite** (`test/schema_management_test.rb`)
344
+
345
+ - 38 tests covering all functionality
346
+ - All tests passing
347
+ - Regression tests to prevent cache-related bugs
348
+
349
+ 4. **Documentation** (`README.md`)
350
+
351
+ - Complete schema management section
352
+ - Usage examples
353
+ - Limitations documented
354
+ - ATTACH/DETACH examples
355
+
356
+ ### Bug Fixes
357
+
358
+ - **Cache initialization bug**: Fixed `remove_all_cached_schemas` to initialize cache variables as empty hashes instead of `nil`. This prevents `NoMethodError` when Sequel's `remove_cached_schema` is called internally by methods like `create_view`.
359
+
360
+ ### Test Results
361
+
362
+ - **Schema management tests**: 38 tests, 73 assertions, 0 failures
363
+ - **Full test suite**: 539 tests, 2362 assertions, 0 failures
364
+
365
+ ### Files Modified
366
+
367
+ - `lib/sequel/adapters/shared/duckdb.rb` - Added schema management methods
368
+ - `test/schema_management_test.rb` - New comprehensive test file
369
+ - `README.md` - Added schema management documentation section
370
+
371
+ ## Related Files
372
+
373
+ - Implementation: `lib/sequel/adapters/shared/duckdb.rb` (DatabaseMethods module)
374
+ - Tests: `spec/sequel/adapters/duckdb_spec.rb` or new `spec/schema_management_spec.rb`
375
+ - Documentation: `README.md`
376
+
377
+ ## References
378
+
379
+ - [DuckDB CREATE SCHEMA](https://duckdb.org/docs/stable/sql/statements/create_schema.html)
380
+ - [DuckDB DROP Statement](https://duckdb.org/docs/stable/sql/statements/drop.html)
381
+ - [DuckDB ATTACH/DETACH](https://duckdb.org/docs/stable/sql/statements/attach.html)
382
+ - [Sequel PostgreSQL Adapter](https://github.com/jeremyevans/sequel/blob/master/lib/sequel/adapters/shared/postgres.rb)
383
+ - [Sequel Schema Modification Docs](https://github.com/jeremyevans/sequel/blob/master/doc/schema_modification.rdoc)
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3
+ "release-type": "ruby",
4
+ "include-component-in-tag": false,
5
+ "bump-minor-pre-major": true,
6
+ "bump-patch-for-minor-pre-major": true,
7
+ "bootstrap-sha": "8c6792de032d5ba5f54fcd8e3672b59c250039e2",
8
+ "packages": {
9
+ ".": {
10
+ "package-name": "sequel-duckdb",
11
+ "version-file": "lib/sequel/duckdb/version.rb"
12
+ }
13
+ }
14
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel-duckdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Duryea
@@ -9,26 +9,6 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
- - !ruby/object:Gem::Dependency
13
- name: duckdb
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - "~>"
17
- - !ruby/object:Gem::Version
18
- version: '1.0'
19
- - - ">="
20
- - !ruby/object:Gem::Version
21
- version: 1.0.0
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- requirements:
26
- - - "~>"
27
- - !ruby/object:Gem::Version
28
- version: '1.0'
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- version: 1.0.0
32
12
  - !ruby/object:Gem::Dependency
33
13
  name: sequel
34
14
  requirement: !ruby/object:Gem::Requirement
@@ -83,14 +63,14 @@ dependencies:
83
63
  requirements:
84
64
  - - "~>"
85
65
  - !ruby/object:Gem::Version
86
- version: '5.0'
66
+ version: '6.0'
87
67
  type: :development
88
68
  prerelease: false
89
69
  version_requirements: !ruby/object:Gem::Requirement
90
70
  requirements:
91
71
  - - "~>"
92
72
  - !ruby/object:Gem::Version
93
- version: '5.0'
73
+ version: '6.0'
94
74
  - !ruby/object:Gem::Dependency
95
75
  name: rake
96
76
  requirement: !ruby/object:Gem::Requirement
@@ -125,14 +105,14 @@ dependencies:
125
105
  requirements:
126
106
  - - "~>"
127
107
  - !ruby/object:Gem::Version
128
- version: 0.38.2
108
+ version: 0.40.0
129
109
  type: :development
130
110
  prerelease: false
131
111
  version_requirements: !ruby/object:Gem::Requirement
132
112
  requirements:
133
113
  - - "~>"
134
114
  - !ruby/object:Gem::Version
135
- version: 0.38.2
115
+ version: 0.40.0
136
116
  - !ruby/object:Gem::Dependency
137
117
  name: rubocop-rake
138
118
  requirement: !ruby/object:Gem::Requirement
@@ -161,6 +141,20 @@ dependencies:
161
141
  - - "~>"
162
142
  - !ruby/object:Gem::Version
163
143
  version: 0.4.1
144
+ - !ruby/object:Gem::Dependency
145
+ name: simplecov
146
+ requirement: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '1.0'
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '1.0'
164
158
  description: A Ruby gem that provides a complete database adapter for the Sequel toolkit
165
159
  to work with DuckDB, enabling Ruby applications to connect to and interact with
166
160
  DuckDB databases through Sequel's comprehensive ORM and database abstraction interface.
@@ -170,6 +164,16 @@ executables: []
170
164
  extensions: []
171
165
  extra_rdoc_files: []
172
166
  files:
167
+ - ".beads/.beads-credential-key"
168
+ - ".beads/.gitignore"
169
+ - ".beads/README.md"
170
+ - ".beads/config.yaml"
171
+ - ".beads/hooks/post-checkout"
172
+ - ".beads/hooks/post-merge"
173
+ - ".beads/hooks/pre-commit"
174
+ - ".beads/hooks/pre-push"
175
+ - ".beads/hooks/prepare-commit-msg"
176
+ - ".beads/metadata.json"
173
177
  - ".kiro/specs/advanced-sql-features-implementation/design.md"
174
178
  - ".kiro/specs/advanced-sql-features-implementation/requirements.md"
175
179
  - ".kiro/specs/advanced-sql-features-implementation/tasks.md"
@@ -190,22 +194,40 @@ files:
190
194
  - ".kiro/steering/structure.md"
191
195
  - ".kiro/steering/tech.md"
192
196
  - ".kiro/steering/testing.md"
197
+ - ".mdformat.toml"
198
+ - ".release-please-manifest.json"
193
199
  - ".rubocop.yml"
200
+ - ".rubocop_todo.yml"
194
201
  - ".yardopts"
202
+ - AGENTS.md
195
203
  - API_DOCUMENTATION.md
196
204
  - CHANGELOG.md
205
+ - FINAL_STATUS.md
197
206
  - LICENSE
198
207
  - MIGRATION_EXAMPLES.md
199
208
  - PERFORMANCE_OPTIMIZATIONS.md
200
209
  - README.md
210
+ - REFACTORING_SUMMARY.md
201
211
  - Rakefile
202
212
  - TASK_10.2_IMPLEMENTATION_SUMMARY.md
203
213
  - docs/DUCKDB_SQL_PATTERNS.md
204
214
  - docs/TASK_12_VERIFICATION_SUMMARY.md
215
+ - justfile
205
216
  - lib/sequel/adapters/duckdb.rb
206
217
  - lib/sequel/adapters/shared/duckdb.rb
207
218
  - lib/sequel/duckdb.rb
219
+ - lib/sequel/duckdb/helpers/copier.rb
220
+ - lib/sequel/duckdb/helpers/pathifier.rb
208
221
  - lib/sequel/duckdb/version.rb
222
+ - plans/date_arithmetic.md
223
+ - plans/engineering/Sequel.md
224
+ - plans/engineering/duckdb.md
225
+ - plans/engineering/sqlite.md
226
+ - plans/mock_connection_bug.md
227
+ - plans/mock_without_driver_gem.md
228
+ - plans/over_engineering_analysis.md
229
+ - plans/schema_management.md
230
+ - release-please-config.json
209
231
  - sig/sequel/duckdb.rbs
210
232
  homepage: https://github.com/sequel/sequel-duckdb
211
233
  licenses:
@@ -222,14 +244,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
222
244
  requirements:
223
245
  - - ">="
224
246
  - !ruby/object:Gem::Version
225
- version: 3.1.0
247
+ version: 3.2.0
226
248
  required_rubygems_version: !ruby/object:Gem::Requirement
227
249
  requirements:
228
250
  - - ">="
229
251
  - !ruby/object:Gem::Version
230
252
  version: '0'
231
253
  requirements: []
232
- rubygems_version: 3.6.7
254
+ rubygems_version: 4.0.20
233
255
  specification_version: 4
234
256
  summary: Sequel database adapter for DuckDB
235
257
  test_files: []