duckdb 0.4.1-dev2267.0 → 0.4.1-dev2299.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.
package/src/duckdb.hpp CHANGED
@@ -11,8 +11,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
11
11
  #pragma once
12
12
  #define DUCKDB_AMALGAMATION 1
13
13
  #define DUCKDB_AMALGAMATION_EXTENDED 1
14
- #define DUCKDB_SOURCE_ID "22b39efcd"
15
- #define DUCKDB_VERSION "v0.4.1-dev2267"
14
+ #define DUCKDB_SOURCE_ID "3075f4d29"
15
+ #define DUCKDB_VERSION "v0.4.1-dev2299"
16
16
  //===----------------------------------------------------------------------===//
17
17
  // DuckDB
18
18
  //
@@ -165,7 +165,8 @@ typedef idx_t column_t;
165
165
  //! Type used for storage (column) identifiers
166
166
  typedef idx_t storage_t;
167
167
  //! Special value used to signify the ROW ID of a table
168
- extern const column_t COLUMN_IDENTIFIER_ROW_ID;
168
+ DUCKDB_API extern const column_t COLUMN_IDENTIFIER_ROW_ID;
169
+ DUCKDB_API bool IsRowIdColumnId(column_t column_id);
169
170
 
170
171
  //! The maximum row identifier used in tables
171
172
  extern const row_t MAX_ROW_ID;
@@ -753,50 +754,50 @@ public:
753
754
  int64_t upper;
754
755
 
755
756
  public:
756
- hugeint_t() = default;
757
- hugeint_t(int64_t value); // NOLINT: Allow implicit conversion from `int64_t`
758
- hugeint_t(const hugeint_t &rhs) = default;
759
- hugeint_t(hugeint_t &&rhs) = default;
760
- hugeint_t &operator=(const hugeint_t &rhs) = default;
761
- hugeint_t &operator=(hugeint_t &&rhs) = default;
757
+ DUCKDB_API hugeint_t() = default;
758
+ DUCKDB_API hugeint_t(int64_t value); // NOLINT: Allow implicit conversion from `int64_t`
759
+ DUCKDB_API hugeint_t(const hugeint_t &rhs) = default;
760
+ DUCKDB_API hugeint_t(hugeint_t &&rhs) = default;
761
+ DUCKDB_API hugeint_t &operator=(const hugeint_t &rhs) = default;
762
+ DUCKDB_API hugeint_t &operator=(hugeint_t &&rhs) = default;
762
763
 
763
764
  DUCKDB_API string ToString() const;
764
765
 
765
766
  // comparison operators
766
- bool operator==(const hugeint_t &rhs) const;
767
- bool operator!=(const hugeint_t &rhs) const;
768
- bool operator<=(const hugeint_t &rhs) const;
769
- bool operator<(const hugeint_t &rhs) const;
770
- bool operator>(const hugeint_t &rhs) const;
771
- bool operator>=(const hugeint_t &rhs) const;
767
+ DUCKDB_API bool operator==(const hugeint_t &rhs) const;
768
+ DUCKDB_API bool operator!=(const hugeint_t &rhs) const;
769
+ DUCKDB_API bool operator<=(const hugeint_t &rhs) const;
770
+ DUCKDB_API bool operator<(const hugeint_t &rhs) const;
771
+ DUCKDB_API bool operator>(const hugeint_t &rhs) const;
772
+ DUCKDB_API bool operator>=(const hugeint_t &rhs) const;
772
773
 
773
774
  // arithmetic operators
774
- hugeint_t operator+(const hugeint_t &rhs) const;
775
- hugeint_t operator-(const hugeint_t &rhs) const;
776
- hugeint_t operator*(const hugeint_t &rhs) const;
777
- hugeint_t operator/(const hugeint_t &rhs) const;
778
- hugeint_t operator%(const hugeint_t &rhs) const;
779
- hugeint_t operator-() const;
775
+ DUCKDB_API hugeint_t operator+(const hugeint_t &rhs) const;
776
+ DUCKDB_API hugeint_t operator-(const hugeint_t &rhs) const;
777
+ DUCKDB_API hugeint_t operator*(const hugeint_t &rhs) const;
778
+ DUCKDB_API hugeint_t operator/(const hugeint_t &rhs) const;
779
+ DUCKDB_API hugeint_t operator%(const hugeint_t &rhs) const;
780
+ DUCKDB_API hugeint_t operator-() const;
780
781
 
781
782
  // bitwise operators
782
- hugeint_t operator>>(const hugeint_t &rhs) const;
783
- hugeint_t operator<<(const hugeint_t &rhs) const;
784
- hugeint_t operator&(const hugeint_t &rhs) const;
785
- hugeint_t operator|(const hugeint_t &rhs) const;
786
- hugeint_t operator^(const hugeint_t &rhs) const;
787
- hugeint_t operator~() const;
783
+ DUCKDB_API hugeint_t operator>>(const hugeint_t &rhs) const;
784
+ DUCKDB_API hugeint_t operator<<(const hugeint_t &rhs) const;
785
+ DUCKDB_API hugeint_t operator&(const hugeint_t &rhs) const;
786
+ DUCKDB_API hugeint_t operator|(const hugeint_t &rhs) const;
787
+ DUCKDB_API hugeint_t operator^(const hugeint_t &rhs) const;
788
+ DUCKDB_API hugeint_t operator~() const;
788
789
 
789
790
  // in-place operators
790
- hugeint_t &operator+=(const hugeint_t &rhs);
791
- hugeint_t &operator-=(const hugeint_t &rhs);
792
- hugeint_t &operator*=(const hugeint_t &rhs);
793
- hugeint_t &operator/=(const hugeint_t &rhs);
794
- hugeint_t &operator%=(const hugeint_t &rhs);
795
- hugeint_t &operator>>=(const hugeint_t &rhs);
796
- hugeint_t &operator<<=(const hugeint_t &rhs);
797
- hugeint_t &operator&=(const hugeint_t &rhs);
798
- hugeint_t &operator|=(const hugeint_t &rhs);
799
- hugeint_t &operator^=(const hugeint_t &rhs);
791
+ DUCKDB_API hugeint_t &operator+=(const hugeint_t &rhs);
792
+ DUCKDB_API hugeint_t &operator-=(const hugeint_t &rhs);
793
+ DUCKDB_API hugeint_t &operator*=(const hugeint_t &rhs);
794
+ DUCKDB_API hugeint_t &operator/=(const hugeint_t &rhs);
795
+ DUCKDB_API hugeint_t &operator%=(const hugeint_t &rhs);
796
+ DUCKDB_API hugeint_t &operator>>=(const hugeint_t &rhs);
797
+ DUCKDB_API hugeint_t &operator<<=(const hugeint_t &rhs);
798
+ DUCKDB_API hugeint_t &operator&=(const hugeint_t &rhs);
799
+ DUCKDB_API hugeint_t &operator|=(const hugeint_t &rhs);
800
+ DUCKDB_API hugeint_t &operator^=(const hugeint_t &rhs);
800
801
  };
801
802
 
802
803
  struct string_t;
@@ -1793,7 +1794,7 @@ public:
1793
1794
  };
1794
1795
 
1795
1796
  template <>
1796
- string Deserializer::Read();
1797
+ DUCKDB_API string Deserializer::Read();
1797
1798
 
1798
1799
  } // namespace duckdb
1799
1800
 
@@ -2130,8 +2131,8 @@ public:
2130
2131
 
2131
2132
  //! Serializes to a buffer allocated by the serializer, will expand when
2132
2133
  //! writing past the initial threshold
2133
- BufferedFileWriter(FileSystem &fs, const string &path, uint8_t open_flags = DEFAULT_OPEN_FLAGS,
2134
- FileOpener *opener = nullptr);
2134
+ DUCKDB_API BufferedFileWriter(FileSystem &fs, const string &path, uint8_t open_flags = DEFAULT_OPEN_FLAGS,
2135
+ FileOpener *opener = nullptr);
2135
2136
 
2136
2137
  FileSystem &fs;
2137
2138
  string path;
@@ -2141,17 +2142,17 @@ public:
2141
2142
  unique_ptr<FileHandle> handle;
2142
2143
 
2143
2144
  public:
2144
- void WriteData(const_data_ptr_t buffer, uint64_t write_size) override;
2145
+ DUCKDB_API void WriteData(const_data_ptr_t buffer, uint64_t write_size) override;
2145
2146
  //! Flush the buffer to disk and sync the file to ensure writing is completed
2146
- void Sync();
2147
+ DUCKDB_API void Sync();
2147
2148
  //! Flush the buffer to the file (without sync)
2148
- void Flush();
2149
+ DUCKDB_API void Flush();
2149
2150
  //! Returns the current size of the file
2150
- int64_t GetFileSize();
2151
+ DUCKDB_API int64_t GetFileSize();
2151
2152
  //! Truncate the size to a previous size (given that size <= GetFileSize())
2152
- void Truncate(int64_t size);
2153
+ DUCKDB_API void Truncate(int64_t size);
2153
2154
 
2154
- idx_t GetTotalWritten();
2155
+ DUCKDB_API idx_t GetTotalWritten();
2155
2156
  };
2156
2157
 
2157
2158
  } // namespace duckdb
@@ -2285,7 +2286,7 @@ namespace duckdb {
2285
2286
  class VectorBuffer;
2286
2287
 
2287
2288
  struct SelectionData {
2288
- explicit SelectionData(idx_t count);
2289
+ DUCKDB_API explicit SelectionData(idx_t count);
2289
2290
 
2290
2291
  unique_ptr<sel_t[]> owned_data;
2291
2292
  };
@@ -3403,9 +3404,9 @@ public:
3403
3404
  Allocator &operator=(Allocator &&allocator) noexcept = delete;
3404
3405
  DUCKDB_API ~Allocator();
3405
3406
 
3406
- data_ptr_t AllocateData(idx_t size);
3407
- void FreeData(data_ptr_t pointer, idx_t size);
3408
- data_ptr_t ReallocateData(data_ptr_t pointer, idx_t old_size, idx_t new_size);
3407
+ DUCKDB_API data_ptr_t AllocateData(idx_t size);
3408
+ DUCKDB_API void FreeData(data_ptr_t pointer, idx_t size);
3409
+ DUCKDB_API data_ptr_t ReallocateData(data_ptr_t pointer, idx_t old_size, idx_t new_size);
3409
3410
 
3410
3411
  AllocatedData Allocate(idx_t size) {
3411
3412
  return AllocatedData(*this, AllocateData(size), size);
@@ -3444,7 +3445,7 @@ private:
3444
3445
  //! Note that there is a cost to doing so (several atomic operations will be performed on allocation/free).
3445
3446
  //! As such this class should be used primarily for larger allocations.
3446
3447
  struct BufferAllocator {
3447
- static Allocator &Get(ClientContext &context);
3448
+ DUCKDB_API static Allocator &Get(ClientContext &context);
3448
3449
  };
3449
3450
 
3450
3451
  } // namespace duckdb
@@ -4839,7 +4840,7 @@ struct VectorOperations {
4839
4840
  DUCKDB_API static bool TryCast(Vector &source, Vector &result, idx_t count, string *error_message,
4840
4841
  bool strict = false);
4841
4842
  //! Cast the data from the source type to the target type. Throws an exception if the cast fails.
4842
- static void Cast(Vector &source, Vector &result, idx_t count, bool strict = false);
4843
+ DUCKDB_API static void Cast(Vector &source, Vector &result, idx_t count, bool strict = false);
4843
4844
 
4844
4845
  // Copy the data of <source> to the target vector
4845
4846
  static void Copy(const Vector &source, Vector &target, idx_t source_count, idx_t source_offset,
@@ -7113,130 +7114,130 @@ namespace duckdb {
7113
7114
 
7114
7115
  template <class T>
7115
7116
  struct NumericLimits {
7116
- static T Minimum();
7117
- static T Maximum();
7118
- static bool IsSigned();
7119
- static idx_t Digits();
7117
+ DUCKDB_API static T Minimum();
7118
+ DUCKDB_API static T Maximum();
7119
+ DUCKDB_API static bool IsSigned();
7120
+ DUCKDB_API static idx_t Digits();
7120
7121
  };
7121
7122
 
7122
7123
  template <>
7123
7124
  struct NumericLimits<int8_t> {
7124
- static int8_t Minimum();
7125
- static int8_t Maximum();
7126
- static bool IsSigned() {
7125
+ DUCKDB_API static int8_t Minimum();
7126
+ DUCKDB_API static int8_t Maximum();
7127
+ DUCKDB_API static bool IsSigned() {
7127
7128
  return true;
7128
7129
  }
7129
- static idx_t Digits() {
7130
+ DUCKDB_API static idx_t Digits() {
7130
7131
  return 3;
7131
7132
  }
7132
7133
  };
7133
7134
  template <>
7134
7135
  struct NumericLimits<int16_t> {
7135
- static int16_t Minimum();
7136
- static int16_t Maximum();
7137
- static bool IsSigned() {
7136
+ DUCKDB_API static int16_t Minimum();
7137
+ DUCKDB_API static int16_t Maximum();
7138
+ DUCKDB_API static bool IsSigned() {
7138
7139
  return true;
7139
7140
  }
7140
- static idx_t Digits() {
7141
+ DUCKDB_API static idx_t Digits() {
7141
7142
  return 5;
7142
7143
  }
7143
7144
  };
7144
7145
  template <>
7145
7146
  struct NumericLimits<int32_t> {
7146
- static int32_t Minimum();
7147
- static int32_t Maximum();
7148
- static bool IsSigned() {
7147
+ DUCKDB_API static int32_t Minimum();
7148
+ DUCKDB_API static int32_t Maximum();
7149
+ DUCKDB_API static bool IsSigned() {
7149
7150
  return true;
7150
7151
  }
7151
- static idx_t Digits() {
7152
+ DUCKDB_API static idx_t Digits() {
7152
7153
  return 10;
7153
7154
  }
7154
7155
  };
7155
7156
  template <>
7156
7157
  struct NumericLimits<int64_t> {
7157
- static int64_t Minimum();
7158
- static int64_t Maximum();
7159
- static bool IsSigned() {
7158
+ DUCKDB_API static int64_t Minimum();
7159
+ DUCKDB_API static int64_t Maximum();
7160
+ DUCKDB_API static bool IsSigned() {
7160
7161
  return true;
7161
7162
  }
7162
- static idx_t Digits() {
7163
+ DUCKDB_API static idx_t Digits() {
7163
7164
  return 19;
7164
7165
  }
7165
7166
  };
7166
7167
  template <>
7167
7168
  struct NumericLimits<hugeint_t> {
7168
- static hugeint_t Minimum();
7169
- static hugeint_t Maximum();
7170
- static bool IsSigned() {
7169
+ DUCKDB_API static hugeint_t Minimum();
7170
+ DUCKDB_API static hugeint_t Maximum();
7171
+ DUCKDB_API static bool IsSigned() {
7171
7172
  return true;
7172
7173
  }
7173
- static idx_t Digits() {
7174
+ DUCKDB_API static idx_t Digits() {
7174
7175
  return 39;
7175
7176
  }
7176
7177
  };
7177
7178
  template <>
7178
7179
  struct NumericLimits<uint8_t> {
7179
- static uint8_t Minimum();
7180
- static uint8_t Maximum();
7181
- static bool IsSigned() {
7180
+ DUCKDB_API static uint8_t Minimum();
7181
+ DUCKDB_API static uint8_t Maximum();
7182
+ DUCKDB_API static bool IsSigned() {
7182
7183
  return false;
7183
7184
  }
7184
- static idx_t Digits() {
7185
+ DUCKDB_API static idx_t Digits() {
7185
7186
  return 3;
7186
7187
  }
7187
7188
  };
7188
7189
  template <>
7189
7190
  struct NumericLimits<uint16_t> {
7190
- static uint16_t Minimum();
7191
- static uint16_t Maximum();
7192
- static bool IsSigned() {
7191
+ DUCKDB_API static uint16_t Minimum();
7192
+ DUCKDB_API static uint16_t Maximum();
7193
+ DUCKDB_API static bool IsSigned() {
7193
7194
  return false;
7194
7195
  }
7195
- static idx_t Digits() {
7196
+ DUCKDB_API static idx_t Digits() {
7196
7197
  return 5;
7197
7198
  }
7198
7199
  };
7199
7200
  template <>
7200
7201
  struct NumericLimits<uint32_t> {
7201
- static uint32_t Minimum();
7202
- static uint32_t Maximum();
7203
- static bool IsSigned() {
7202
+ DUCKDB_API static uint32_t Minimum();
7203
+ DUCKDB_API static uint32_t Maximum();
7204
+ DUCKDB_API static bool IsSigned() {
7204
7205
  return false;
7205
7206
  }
7206
- static idx_t Digits() {
7207
+ DUCKDB_API static idx_t Digits() {
7207
7208
  return 10;
7208
7209
  }
7209
7210
  };
7210
7211
  template <>
7211
7212
  struct NumericLimits<uint64_t> {
7212
- static uint64_t Minimum();
7213
- static uint64_t Maximum();
7214
- static bool IsSigned() {
7213
+ DUCKDB_API static uint64_t Minimum();
7214
+ DUCKDB_API static uint64_t Maximum();
7215
+ DUCKDB_API static bool IsSigned() {
7215
7216
  return false;
7216
7217
  }
7217
- static idx_t Digits() {
7218
+ DUCKDB_API static idx_t Digits() {
7218
7219
  return 20;
7219
7220
  }
7220
7221
  };
7221
7222
  template <>
7222
7223
  struct NumericLimits<float> {
7223
- static float Minimum();
7224
- static float Maximum();
7225
- static bool IsSigned() {
7224
+ DUCKDB_API static float Minimum();
7225
+ DUCKDB_API static float Maximum();
7226
+ DUCKDB_API static bool IsSigned() {
7226
7227
  return true;
7227
7228
  }
7228
- static idx_t Digits() {
7229
+ DUCKDB_API static idx_t Digits() {
7229
7230
  return 127;
7230
7231
  }
7231
7232
  };
7232
7233
  template <>
7233
7234
  struct NumericLimits<double> {
7234
- static double Minimum();
7235
- static double Maximum();
7236
- static bool IsSigned() {
7235
+ DUCKDB_API static double Minimum();
7236
+ DUCKDB_API static double Maximum();
7237
+ DUCKDB_API static bool IsSigned() {
7237
7238
  return true;
7238
7239
  }
7239
- static idx_t Digits() {
7240
+ DUCKDB_API static idx_t Digits() {
7240
7241
  return 250;
7241
7242
  }
7242
7243
  };
@@ -7254,7 +7255,7 @@ public:
7254
7255
  static string ToString(hugeint_t input);
7255
7256
 
7256
7257
  template <class T>
7257
- static bool TryCast(hugeint_t input, T &result);
7258
+ DUCKDB_API static bool TryCast(hugeint_t input, T &result);
7258
7259
 
7259
7260
  template <class T>
7260
7261
  static T Cast(hugeint_t input) {
@@ -7344,29 +7345,29 @@ public:
7344
7345
  };
7345
7346
 
7346
7347
  template <>
7347
- bool Hugeint::TryCast(hugeint_t input, int8_t &result);
7348
+ DUCKDB_API bool Hugeint::TryCast(hugeint_t input, int8_t &result);
7348
7349
  template <>
7349
- bool Hugeint::TryCast(hugeint_t input, int16_t &result);
7350
+ DUCKDB_API bool Hugeint::TryCast(hugeint_t input, int16_t &result);
7350
7351
  template <>
7351
- bool Hugeint::TryCast(hugeint_t input, int32_t &result);
7352
+ DUCKDB_API bool Hugeint::TryCast(hugeint_t input, int32_t &result);
7352
7353
  template <>
7353
- bool Hugeint::TryCast(hugeint_t input, int64_t &result);
7354
+ DUCKDB_API bool Hugeint::TryCast(hugeint_t input, int64_t &result);
7354
7355
  template <>
7355
- bool Hugeint::TryCast(hugeint_t input, uint8_t &result);
7356
+ DUCKDB_API bool Hugeint::TryCast(hugeint_t input, uint8_t &result);
7356
7357
  template <>
7357
- bool Hugeint::TryCast(hugeint_t input, uint16_t &result);
7358
+ DUCKDB_API bool Hugeint::TryCast(hugeint_t input, uint16_t &result);
7358
7359
  template <>
7359
- bool Hugeint::TryCast(hugeint_t input, uint32_t &result);
7360
+ DUCKDB_API bool Hugeint::TryCast(hugeint_t input, uint32_t &result);
7360
7361
  template <>
7361
- bool Hugeint::TryCast(hugeint_t input, uint64_t &result);
7362
+ DUCKDB_API bool Hugeint::TryCast(hugeint_t input, uint64_t &result);
7362
7363
  template <>
7363
- bool Hugeint::TryCast(hugeint_t input, hugeint_t &result);
7364
+ DUCKDB_API bool Hugeint::TryCast(hugeint_t input, hugeint_t &result);
7364
7365
  template <>
7365
- bool Hugeint::TryCast(hugeint_t input, float &result);
7366
+ DUCKDB_API bool Hugeint::TryCast(hugeint_t input, float &result);
7366
7367
  template <>
7367
- bool Hugeint::TryCast(hugeint_t input, double &result);
7368
+ DUCKDB_API bool Hugeint::TryCast(hugeint_t input, double &result);
7368
7369
  template <>
7369
- bool Hugeint::TryCast(hugeint_t input, long double &result);
7370
+ DUCKDB_API bool Hugeint::TryCast(hugeint_t input, long double &result);
7370
7371
 
7371
7372
  template <>
7372
7373
  bool Hugeint::TryConvert(int8_t value, hugeint_t &result);
@@ -7499,59 +7500,59 @@ namespace duckdb {
7499
7500
  //===--------------------------------------------------------------------===//
7500
7501
  struct Equals {
7501
7502
  template <class T>
7502
- static inline bool Operation(T left, T right) {
7503
+ DUCKDB_API static inline bool Operation(T left, T right) {
7503
7504
  return left == right;
7504
7505
  }
7505
7506
  };
7506
7507
  struct NotEquals {
7507
7508
  template <class T>
7508
- static inline bool Operation(T left, T right) {
7509
+ DUCKDB_API static inline bool Operation(T left, T right) {
7509
7510
  return !Equals::Operation(left, right);
7510
7511
  }
7511
7512
  };
7512
7513
 
7513
7514
  struct GreaterThan {
7514
7515
  template <class T>
7515
- static inline bool Operation(T left, T right) {
7516
+ DUCKDB_API static inline bool Operation(T left, T right) {
7516
7517
  return left > right;
7517
7518
  }
7518
7519
  };
7519
7520
 
7520
7521
  struct GreaterThanEquals {
7521
7522
  template <class T>
7522
- static inline bool Operation(T left, T right) {
7523
+ DUCKDB_API static inline bool Operation(T left, T right) {
7523
7524
  return left >= right;
7524
7525
  }
7525
7526
  };
7526
7527
 
7527
7528
  struct LessThan {
7528
7529
  template <class T>
7529
- static inline bool Operation(T left, T right) {
7530
+ DUCKDB_API static inline bool Operation(T left, T right) {
7530
7531
  return GreaterThan::Operation(right, left);
7531
7532
  }
7532
7533
  };
7533
7534
 
7534
7535
  struct LessThanEquals {
7535
7536
  template <class T>
7536
- static inline bool Operation(T left, T right) {
7537
+ DUCKDB_API static inline bool Operation(T left, T right) {
7537
7538
  return GreaterThanEquals::Operation(right, left);
7538
7539
  }
7539
7540
  };
7540
7541
 
7541
7542
  template <>
7542
- bool Equals::Operation(float left, float right);
7543
+ DUCKDB_API bool Equals::Operation(float left, float right);
7543
7544
  template <>
7544
- bool Equals::Operation(double left, double right);
7545
+ DUCKDB_API bool Equals::Operation(double left, double right);
7545
7546
 
7546
7547
  template <>
7547
- bool GreaterThan::Operation(float left, float right);
7548
+ DUCKDB_API bool GreaterThan::Operation(float left, float right);
7548
7549
  template <>
7549
- bool GreaterThan::Operation(double left, double right);
7550
+ DUCKDB_API bool GreaterThan::Operation(double left, double right);
7550
7551
 
7551
7552
  template <>
7552
- bool GreaterThanEquals::Operation(float left, float right);
7553
+ DUCKDB_API bool GreaterThanEquals::Operation(float left, float right);
7553
7554
  template <>
7554
- bool GreaterThanEquals::Operation(double left, double right);
7555
+ DUCKDB_API bool GreaterThanEquals::Operation(double left, double right);
7555
7556
 
7556
7557
  // Distinct semantics are from Postgres record sorting. NULL = NULL and not-NULL < NULL
7557
7558
  // Deferring to the non-distinct operations removes the need for further specialisation.
@@ -11269,19 +11270,19 @@ class ColumnDataRowCollection;
11269
11270
  class ColumnDataCollection {
11270
11271
  public:
11271
11272
  //! Constructs an in-memory column data collection from an allocator
11272
- ColumnDataCollection(Allocator &allocator, vector<LogicalType> types);
11273
+ DUCKDB_API ColumnDataCollection(Allocator &allocator, vector<LogicalType> types);
11273
11274
  //! Constructs a buffer-managed column data collection
11274
- ColumnDataCollection(BufferManager &buffer_manager, vector<LogicalType> types);
11275
+ DUCKDB_API ColumnDataCollection(BufferManager &buffer_manager, vector<LogicalType> types);
11275
11276
  //! Constructs either an in-memory or a buffer-managed column data collection
11276
- ColumnDataCollection(ClientContext &context, vector<LogicalType> types,
11277
- ColumnDataAllocatorType type = ColumnDataAllocatorType::BUFFER_MANAGER_ALLOCATOR);
11277
+ DUCKDB_API ColumnDataCollection(ClientContext &context, vector<LogicalType> types,
11278
+ ColumnDataAllocatorType type = ColumnDataAllocatorType::BUFFER_MANAGER_ALLOCATOR);
11278
11279
  //! Creates a column data collection that inherits the blocks to write to. This allows blocks to be shared
11279
11280
  //! between multiple column data collections and prevents wasting space.
11280
11281
  //! Note that after one CDC inherits blocks from another, the other
11281
11282
  //! cannot be written to anymore (i.e. we take ownership of the half-written blocks).
11282
- ColumnDataCollection(ColumnDataCollection &parent);
11283
- ColumnDataCollection(shared_ptr<ColumnDataAllocator> allocator, vector<LogicalType> types);
11284
- ~ColumnDataCollection();
11283
+ DUCKDB_API ColumnDataCollection(ColumnDataCollection &parent);
11284
+ DUCKDB_API ColumnDataCollection(shared_ptr<ColumnDataAllocator> allocator, vector<LogicalType> types);
11285
+ DUCKDB_API ~ColumnDataCollection();
11285
11286
 
11286
11287
  public:
11287
11288
  DUCKDB_API vector<LogicalType> &Types() {
@@ -13323,7 +13324,7 @@ class BufferedSerializer : public Serializer {
13323
13324
  public:
13324
13325
  //! Serializes to a buffer allocated by the serializer, will expand when
13325
13326
  //! writing past the initial threshold
13326
- explicit BufferedSerializer(idx_t maximum_size = SERIALIZER_DEFAULT_SIZE);
13327
+ DUCKDB_API explicit BufferedSerializer(idx_t maximum_size = SERIALIZER_DEFAULT_SIZE);
13327
13328
  //! Serializes to a provided (owned) data pointer
13328
13329
  BufferedSerializer(unique_ptr<data_t[]> data, idx_t size);
13329
13330
  BufferedSerializer(data_ptr_t data, idx_t size);
@@ -13464,7 +13465,7 @@ private:
13464
13465
  };
13465
13466
 
13466
13467
  template <>
13467
- void FieldWriter::Write(const string &val);
13468
+ DUCKDB_API void FieldWriter::Write(const string &val);
13468
13469
 
13469
13470
  class FieldDeserializer : public Deserializer {
13470
13471
  public:
@@ -15635,25 +15636,25 @@ inline hash_t CombineHash(hash_t left, hash_t right) {
15635
15636
  }
15636
15637
 
15637
15638
  template <>
15638
- hash_t Hash(uint64_t val);
15639
+ DUCKDB_API hash_t Hash(uint64_t val);
15639
15640
  template <>
15640
- hash_t Hash(int64_t val);
15641
+ DUCKDB_API hash_t Hash(int64_t val);
15641
15642
  template <>
15642
- hash_t Hash(hugeint_t val);
15643
+ DUCKDB_API hash_t Hash(hugeint_t val);
15643
15644
  template <>
15644
- hash_t Hash(float val);
15645
+ DUCKDB_API hash_t Hash(float val);
15645
15646
  template <>
15646
- hash_t Hash(double val);
15647
+ DUCKDB_API hash_t Hash(double val);
15647
15648
  template <>
15648
- hash_t Hash(const char *val);
15649
+ DUCKDB_API hash_t Hash(const char *val);
15649
15650
  template <>
15650
- hash_t Hash(char *val);
15651
+ DUCKDB_API hash_t Hash(char *val);
15651
15652
  template <>
15652
- hash_t Hash(string_t val);
15653
+ DUCKDB_API hash_t Hash(string_t val);
15653
15654
  template <>
15654
- hash_t Hash(interval_t val);
15655
- hash_t Hash(const char *val, size_t size);
15656
- hash_t Hash(uint8_t *val, size_t size);
15655
+ DUCKDB_API hash_t Hash(interval_t val);
15656
+ DUCKDB_API hash_t Hash(const char *val, size_t size);
15657
+ DUCKDB_API hash_t Hash(uint8_t *val, size_t size);
15657
15658
 
15658
15659
  } // namespace duckdb
15659
15660
 
@@ -21587,32 +21588,32 @@ public:
21587
21588
 
21588
21589
  public:
21589
21590
  //! Returns the string size of a blob -> string conversion
21590
- static idx_t GetStringSize(string_t blob);
21591
+ DUCKDB_API static idx_t GetStringSize(string_t blob);
21591
21592
  //! Converts a blob to a string, writing the output to the designated output string.
21592
21593
  //! The string needs to have space for at least GetStringSize(blob) bytes.
21593
- static void ToString(string_t blob, char *output);
21594
+ DUCKDB_API static void ToString(string_t blob, char *output);
21594
21595
  //! Convert a blob object to a string
21595
- static string ToString(string_t blob);
21596
+ DUCKDB_API static string ToString(string_t blob);
21596
21597
 
21597
21598
  //! Returns the blob size of a string -> blob conversion
21598
- static bool TryGetBlobSize(string_t str, idx_t &result_size, string *error_message);
21599
- static idx_t GetBlobSize(string_t str);
21599
+ DUCKDB_API static bool TryGetBlobSize(string_t str, idx_t &result_size, string *error_message);
21600
+ DUCKDB_API static idx_t GetBlobSize(string_t str);
21600
21601
  //! Convert a string to a blob. This function should ONLY be called after calling GetBlobSize, since it does NOT
21601
21602
  //! perform data validation.
21602
- static void ToBlob(string_t str, data_ptr_t output);
21603
+ DUCKDB_API static void ToBlob(string_t str, data_ptr_t output);
21603
21604
  //! Convert a string object to a blob
21604
- static string ToBlob(string_t str);
21605
+ DUCKDB_API static string ToBlob(string_t str);
21605
21606
 
21606
21607
  // base 64 conversion functions
21607
21608
  //! Returns the string size of a blob -> base64 conversion
21608
- static idx_t ToBase64Size(string_t blob);
21609
+ DUCKDB_API static idx_t ToBase64Size(string_t blob);
21609
21610
  //! Converts a blob to a base64 string, output should have space for at least ToBase64Size(blob) bytes
21610
- static void ToBase64(string_t blob, char *output);
21611
+ DUCKDB_API static void ToBase64(string_t blob, char *output);
21611
21612
 
21612
21613
  //! Returns the string size of a base64 string -> blob conversion
21613
- static idx_t FromBase64Size(string_t str);
21614
+ DUCKDB_API static idx_t FromBase64Size(string_t str);
21614
21615
  //! Converts a base64 string to a blob, output should have space for at least FromBase64Size(blob) bytes
21615
- static void FromBase64(string_t str, data_ptr_t output, idx_t output_size);
21616
+ DUCKDB_API static void FromBase64(string_t str, data_ptr_t output, idx_t output_size);
21616
21617
  };
21617
21618
  } // namespace duckdb
21618
21619
  //===----------------------------------------------------------------------===//
@@ -24452,8 +24453,8 @@ public:
24452
24453
  cache[key] = move(value);
24453
24454
  }
24454
24455
 
24455
- static ObjectCache &GetObjectCache(ClientContext &context);
24456
- static bool ObjectCacheEnabled(ClientContext &context);
24456
+ DUCKDB_API static ObjectCache &GetObjectCache(ClientContext &context);
24457
+ DUCKDB_API static bool ObjectCacheEnabled(ClientContext &context);
24457
24458
 
24458
24459
  private:
24459
24460
  //! Object Cache
@@ -24493,7 +24494,7 @@ class Vector;
24493
24494
 
24494
24495
  class ValidityStatistics : public BaseStatistics {
24495
24496
  public:
24496
- explicit ValidityStatistics(bool has_null = false, bool has_no_null = true);
24497
+ DUCKDB_API explicit ValidityStatistics(bool has_null = false, bool has_no_null = true);
24497
24498
 
24498
24499
  //! Whether or not the segment can contain NULL values
24499
24500
  bool has_null;
@@ -24501,9 +24502,9 @@ public:
24501
24502
  bool has_no_null;
24502
24503
 
24503
24504
  public:
24504
- void Merge(const BaseStatistics &other) override;
24505
+ DUCKDB_API void Merge(const BaseStatistics &other) override;
24505
24506
 
24506
- bool IsConstant() const override;
24507
+ DUCKDB_API bool IsConstant() const override;
24507
24508
 
24508
24509
  unique_ptr<BaseStatistics> Copy() const override;
24509
24510
 
@@ -24528,7 +24529,7 @@ public:
24528
24529
  constexpr static uint32_t MAX_STRING_MINMAX_SIZE = 8;
24529
24530
 
24530
24531
  public:
24531
- explicit StringStatistics(LogicalType type, StatisticsType stats_type);
24532
+ DUCKDB_API explicit StringStatistics(LogicalType type, StatisticsType stats_type);
24532
24533
 
24533
24534
  //! The minimum value of the segment, potentially truncated
24534
24535
  data_t min[MAX_STRING_MINMAX_SIZE];
@@ -24542,8 +24543,8 @@ public:
24542
24543
  bool has_overflow_strings;
24543
24544
 
24544
24545
  public:
24545
- void Update(const string_t &value);
24546
- void Merge(const BaseStatistics &other) override;
24546
+ DUCKDB_API void Update(const string_t &value);
24547
+ DUCKDB_API void Merge(const BaseStatistics &other) override;
24547
24548
 
24548
24549
  unique_ptr<BaseStatistics> Copy() const override;
24549
24550
  void Serialize(FieldWriter &writer) const override;
@@ -24622,8 +24623,8 @@ namespace duckdb {
24622
24623
 
24623
24624
  class NumericStatistics : public BaseStatistics {
24624
24625
  public:
24625
- explicit NumericStatistics(LogicalType type, StatisticsType stats_type);
24626
- NumericStatistics(LogicalType type, Value min, Value max, StatisticsType stats_type);
24626
+ DUCKDB_API explicit NumericStatistics(LogicalType type, StatisticsType stats_type);
24627
+ DUCKDB_API NumericStatistics(LogicalType type, Value min, Value max, StatisticsType stats_type);
24627
24628
 
24628
24629
  //! The minimum value of the segment
24629
24630
  Value min;
@@ -24631,11 +24632,11 @@ public:
24631
24632
  Value max;
24632
24633
 
24633
24634
  public:
24634
- void Merge(const BaseStatistics &other) override;
24635
+ DUCKDB_API void Merge(const BaseStatistics &other) override;
24635
24636
 
24636
- bool IsConstant() const override;
24637
+ DUCKDB_API bool IsConstant() const override;
24637
24638
 
24638
- FilterPropagateResult CheckZonemap(ExpressionType comparison_type, const Value &constant) const;
24639
+ DUCKDB_API FilterPropagateResult CheckZonemap(ExpressionType comparison_type, const Value &constant) const;
24639
24640
 
24640
24641
  unique_ptr<BaseStatistics> Copy() const override;
24641
24642
  void Serialize(FieldWriter &writer) const override;
@@ -25240,7 +25241,7 @@ class Vector;
25240
25241
  class VectorCache {
25241
25242
  public:
25242
25243
  //! Instantiate a vector cache with the given type
25243
- explicit VectorCache(Allocator &allocator, const LogicalType &type);
25244
+ DUCKDB_API explicit VectorCache(Allocator &allocator, const LogicalType &type);
25244
25245
 
25245
25246
  buffer_ptr<VectorBuffer> buffer;
25246
25247
 
@@ -26828,13 +26829,13 @@ namespace duckdb {
26828
26829
  class HivePartitioning {
26829
26830
  public:
26830
26831
  //! Parse a filename that follows the hive partitioning scheme
26831
- static std::map<string, string> Parse(string &filename);
26832
+ DUCKDB_API static std::map<string, string> Parse(string &filename);
26832
26833
  //! Prunes a list of filenames based on a set of filters, can be used by TableFunctions in the
26833
26834
  //! pushdown_complex_filter function to skip files with filename-based filters. Also removes the filters that always
26834
26835
  //! evaluate to true.
26835
- static void ApplyFiltersToFileList(vector<string> &files, vector<unique_ptr<Expression>> &filters,
26836
- unordered_map<string, column_t> &column_map, idx_t table_index,
26837
- bool hive_enabled, bool filename_enabled);
26836
+ DUCKDB_API static void ApplyFiltersToFileList(vector<string> &files, vector<unique_ptr<Expression>> &filters,
26837
+ unordered_map<string, column_t> &column_map, idx_t table_index,
26838
+ bool hive_enabled, bool filename_enabled);
26838
26839
  };
26839
26840
 
26840
26841
  } // namespace duckdb