Skip to content

Commit

Permalink
⬆️ Update to SQLitePCLRaw 2.1.2
Browse files Browse the repository at this point in the history
  • Loading branch information
bricelam committed Nov 17, 2022
1 parent 4bd499b commit ab84183
Show file tree
Hide file tree
Showing 11 changed files with 52 additions and 31 deletions.
6 changes: 3 additions & 3 deletions build/dependencies.props
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@
<NewtonsoftJsonPackageVersion>11.0.2</NewtonsoftJsonPackageVersion>
<OracleManagedDataAccessPackageVersion>12.2.1100</OracleManagedDataAccessPackageVersion>
<RemotionLinqPackageVersion>2.2.0</RemotionLinqPackageVersion>
<SQLitePCLRawBundleGreenPackageVersion>1.1.12</SQLitePCLRawBundleGreenPackageVersion>
<SQLitePCLRawBundleSqlcipherPackageVersion>1.1.12</SQLitePCLRawBundleSqlcipherPackageVersion>
<SQLitePCLRawCorePackageVersion>1.1.12</SQLitePCLRawCorePackageVersion>
<SQLitePCLRawBundleGreenPackageVersion>2.1.2</SQLitePCLRawBundleGreenPackageVersion>
<SQLitePCLRawBundleSqlcipherPackageVersion>2.1.2</SQLitePCLRawBundleSqlcipherPackageVersion>
<SQLitePCLRawCorePackageVersion>2.1.2</SQLitePCLRawCorePackageVersion>
<StyleCopAnalyzersPackageVersion>1.0.0</StyleCopAnalyzersPackageVersion>
<SystemCollectionsImmutablePackageVersion>1.5.0</SystemCollectionsImmutablePackageVersion>
<SystemComponentModelAnnotationsPackageVersion>4.5.0</SystemComponentModelAnnotationsPackageVersion>
Expand Down
4 changes: 2 additions & 2 deletions src/Microsoft.Data.Sqlite.Core/SqliteCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@ public override void Prepare()
var unboundParams = new List<string>();
for (var i = 1; i <= expectedParams; i++)
{
var name = raw.sqlite3_bind_parameter_name(stmt, i);
var name = raw.sqlite3_bind_parameter_name(stmt, i).utf8_to_string();

if (_parameters.IsValueCreated
|| !_parameters.Value.Cast<SqliteParameter>().Any(p => p.ParameterName == name))
Expand Down Expand Up @@ -542,7 +542,7 @@ private IEnumerable<sqlite3_stmt> PrepareAndEnumerateStatements(Stopwatch timer)
SqliteException.ThrowExceptionForRC(rc, _connection.Handle);

// Statement was empty, white space, or a comment
if (stmt.ptr == IntPtr.Zero)
if (stmt.IsInvalid)
{
if (!string.IsNullOrEmpty(tail))
{
Expand Down
14 changes: 7 additions & 7 deletions src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public override string DataSource
string dataSource = null;
if (State == ConnectionState.Open)
{
dataSource = raw.sqlite3_db_filename(_db, MainDatabaseName);
dataSource = raw.sqlite3_db_filename(_db, MainDatabaseName).utf8_to_string();
}

return dataSource ?? ConnectionStringBuilder.DataSource;
Expand All @@ -112,7 +112,7 @@ public override string DataSource
/// </summary>
/// <value>The version of SQLite used by the connection.</value>
public override string ServerVersion
=> raw.sqlite3_libversion();
=> raw.sqlite3_libversion().utf8_to_string();

/// <summary>
/// Gets the current state of the connection.
Expand Down Expand Up @@ -233,7 +233,7 @@ public override void Open()
public override void Close()
{
if (_db == null
|| _db.ptr == IntPtr.Zero)
|| _db.IsInvalid)
{
return;
}
Expand Down Expand Up @@ -331,7 +331,7 @@ public virtual void CreateCollation<T>(string name, T state, Func<T, string, str
throw new InvalidOperationException(Resources.CallRequiresOpenConnection(nameof(CreateCollation)));
}

var collation = comparison != null ? (v, s1, s2) => comparison((T)v, s1, s2) : (delegate_collation)null;
var collation = comparison != null ? (v, s1, s2) => comparison((T)v, s1, s2) : (strdelegate_collation)null;
var rc = raw.sqlite3_create_collation(_db, name, state, collation);
SqliteException.ThrowExceptionForRC(rc, _db);
}
Expand Down Expand Up @@ -386,7 +386,7 @@ public override void ChangeDatabase(string databaseName)
public virtual void EnableExtensions(bool enable = true)
{
if (_db == null
|| _db.ptr == IntPtr.Zero)
|| _db.IsInvalid)
{
throw new InvalidOperationException(Resources.CallRequiresOpenConnection(nameof(EnableExtensions)));
}
Expand All @@ -411,7 +411,7 @@ public virtual void BackupDatabase(SqliteConnection destination)
public virtual void BackupDatabase(SqliteConnection destination, string destinationName, string sourceName)
{
if (_db == null
|| _db.ptr == IntPtr.Zero)
|| _db.IsInvalid)
{
throw new InvalidOperationException(Resources.CallRequiresOpenConnection(nameof(BackupDatabase)));
}
Expand All @@ -431,7 +431,7 @@ public virtual void BackupDatabase(SqliteConnection destination, string destinat
using (var backup = raw.sqlite3_backup_init(destination._db, destinationName, _db, sourceName))
{
int rc;
if (backup.ptr == IntPtr.Zero)
if (backup.IsInvalid)
{
rc = raw.sqlite3_errcode(destination._db);
SqliteException.ThrowExceptionForRC(rc, destination._db);
Expand Down
6 changes: 3 additions & 3 deletions src/Microsoft.Data.Sqlite.Core/SqliteDataReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -512,12 +512,12 @@ public override DataTable GetSchemaTable()
schemaRow[NumericPrecision] = DBNull.Value;
schemaRow[NumericScale] = DBNull.Value;
schemaRow[BaseServerName] = _command.Connection.DataSource;
var databaseName = raw.sqlite3_column_database_name(_stmt, i);
var databaseName = raw.sqlite3_column_database_name(_stmt, i).utf8_to_string();
schemaRow[BaseCatalogName] = databaseName;
var columnName = raw.sqlite3_column_origin_name(_stmt, i);
var columnName = raw.sqlite3_column_origin_name(_stmt, i).utf8_to_string();
schemaRow[BaseColumnName] = columnName;
schemaRow[BaseSchemaName] = DBNull.Value;
var tableName = raw.sqlite3_column_table_name(_stmt, i);
var tableName = raw.sqlite3_column_table_name(_stmt, i).utf8_to_string();
schemaRow[BaseTableName] = tableName;
schemaRow[DataType] = GetFieldType(i);
schemaRow[DataTypeName] = GetDataTypeName(i);
Expand Down
8 changes: 4 additions & 4 deletions src/Microsoft.Data.Sqlite.Core/SqliteDataRecord.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ protected override long GetInt64Core(int ordinal)
=> raw.sqlite3_column_int64(_stmt, ordinal);

protected override string GetStringCore(int ordinal)
=> raw.sqlite3_column_text(_stmt, ordinal);
=> raw.sqlite3_column_text(_stmt, ordinal).utf8_to_string();

protected override byte[] GetBlobCore(int ordinal)
=> raw.sqlite3_column_blob(_stmt, ordinal);
=> raw.sqlite3_column_blob(_stmt, ordinal).ToArray();

protected override int GetSqliteType(int ordinal)
{
Expand All @@ -57,7 +57,7 @@ protected override T GetNull<T>(int ordinal)

public virtual string GetName(int ordinal)
{
var name = raw.sqlite3_column_name(_stmt, ordinal);
var name = raw.sqlite3_column_name(_stmt, ordinal).utf8_to_string();
if (name == null
&& (ordinal < 0 || ordinal >= FieldCount))
{
Expand All @@ -84,7 +84,7 @@ public virtual int GetOrdinal(string name)

public virtual string GetDataTypeName(int ordinal)
{
var typeName = raw.sqlite3_column_decltype(_stmt, ordinal);
var typeName = raw.sqlite3_column_decltype(_stmt, ordinal).utf8_to_string();
if (typeName != null)
{
var i = typeName.IndexOf('(');
Expand Down
6 changes: 3 additions & 3 deletions src/Microsoft.Data.Sqlite.Core/SqliteException.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,14 @@ public static void ThrowExceptionForRC(int rc, sqlite3 db)

string message;
int extendedErrorCode;
if (db == null || db.ptr == IntPtr.Zero || rc != raw.sqlite3_errcode(db))
if (db == null || db.IsInvalid || rc != raw.sqlite3_errcode(db))
{
message = raw.sqlite3_errstr(rc) + " " + Resources.DefaultNativeError;
message = raw.sqlite3_errstr(rc).utf8_to_string() + " " + Resources.DefaultNativeError;
extendedErrorCode = rc;
}
else
{
message = raw.sqlite3_errmsg(db);
message = raw.sqlite3_errmsg(db).utf8_to_string();
extendedErrorCode = raw.sqlite3_extended_errcode(db);
}

Expand Down
4 changes: 2 additions & 2 deletions src/Microsoft.Data.Sqlite.Core/SqliteParameterReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ protected override long GetInt64Core(int ordinal)
=> raw.sqlite3_value_int64(_values[ordinal]);

protected override string GetStringCore(int ordinal)
=> raw.sqlite3_value_text(_values[ordinal]);
=> raw.sqlite3_value_text(_values[ordinal]).utf8_to_string();

protected override byte[] GetBlobCore(int ordinal)
=> raw.sqlite3_value_blob(_values[ordinal]);
=> raw.sqlite3_value_blob(_values[ordinal]).ToArray();

protected override int GetSqliteType(int ordinal)
=> raw.sqlite3_value_type(_values[ordinal]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,11 @@
<PackageReference Include="SQLitePCLRaw.bundle_green" Version="$(SQLitePCLRawBundleGreenPackageVersion)" />
</ItemGroup>

<!-- HACK: Work around missing SDK/NuGet features -->
<ItemGroup Condition="'$(TargetFramework)' == 'net461'">
<Content Include="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\$(SQLitePCLRawBundleGreenPackageVersion)\runtimes\win-x86\native\e_sqlite3.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -304,11 +304,11 @@ RandomProperty randomType
{
var columns = dbModel.Tables.Single().Columns;

Assert.Equal("integer", columns.Single(c => c.Name == "IntegerProperty").StoreType);
Assert.Equal("real", columns.Single(c => c.Name == "RealProperty").StoreType);
Assert.Equal("text", columns.Single(c => c.Name == "TextProperty").StoreType);
Assert.Equal("blob", columns.Single(c => c.Name == "BlobProperty").StoreType);
Assert.Equal("randomType", columns.Single(c => c.Name == "RandomProperty").StoreType);
Assert.Equal("integer", columns.Single(c => c.Name == "IntegerProperty").StoreType, ignoreCase: true);
Assert.Equal("real", columns.Single(c => c.Name == "RealProperty").StoreType, ignoreCase: true);
Assert.Equal("text", columns.Single(c => c.Name == "TextProperty").StoreType, ignoreCase: true);
Assert.Equal("blob", columns.Single(c => c.Name == "BlobProperty").StoreType, ignoreCase: true);
Assert.Equal("randomType", columns.Single(c => c.Name == "RandomProperty").StoreType, ignoreCase: true);
},
@"DROP TABLE StoreType;");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
<TargetFrameworks>$(StandardTestTfms)</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
<None Include="..\xunit.runner.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\Microsoft.Data.Sqlite.Core\Microsoft.Data.Sqlite.Core.csproj" />
</ItemGroup>
Expand All @@ -12,4 +18,11 @@
<PackageReference Include="SQLitePCLRaw.bundle_green" Version="$(SQLitePCLRawBundleGreenPackageVersion)" />
</ItemGroup>

<!-- HACK: Work around missing SDK/NuGet features -->
<ItemGroup Condition="'$(TargetFramework)' == 'net461'">
<Content Include="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlite3\$(SQLitePCLRawBundleGreenPackageVersion)\runtimes\win-x86\native\e_sqlite3.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>

</Project>
5 changes: 3 additions & 2 deletions test/Microsoft.Data.Sqlite.Tests/SqliteConnectionTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,8 @@ public void Open_adjusts_relative_path()
{
connection.Open();

Assert.Equal(Path.Combine(AppContext.BaseDirectory, "local.db"), connection.DataSource);
var baseDirectory = Path.GetDirectoryName(new Uri(typeof(SqliteConnectionTest).Assembly.CodeBase).LocalPath);
Assert.Equal(Path.Combine(baseDirectory, "local.db"), connection.DataSource);
}
}

Expand Down Expand Up @@ -308,7 +309,7 @@ public void BackupDatabase_throws_with_correct_message()

var ex = Assert.Throws<SqliteException>(() => source.BackupDatabase(destination));
Assert.Equal(raw.SQLITE_BUSY, ex.SqliteErrorCode);
Assert.Contains(raw.sqlite3_errstr(raw.SQLITE_BUSY), ex.Message);
Assert.Contains(raw.sqlite3_errstr(raw.SQLITE_BUSY).utf8_to_string(), ex.Message);
}
}
}
Expand Down

0 comments on commit ab84183

Please sign in to comment.