You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
362 lines
8.9 KiB
362 lines
8.9 KiB
|
|
cleanup src/tests+t2, include sqlcipher as well
|
|
|
|
lib package for xamarin mac
|
|
|
|
clean up top level readme
|
|
|
|
clean up blog release notes page
|
|
|
|
finish writing v2 changes page
|
|
|
|
test with zetetic
|
|
|
|
--
|
|
|
|
for the sake of code coverage it would be nice to test
|
|
attempting to create an a utf8z with a span that does
|
|
not have a zero terminator and Assert.Throws(). but
|
|
that constructor is not public and probably should not be.
|
|
|
|
UWP test runner has problems with win32_set_dir and the
|
|
sqlite3_config tests
|
|
|
|
when trying to build on Mac, why isn't t4 in the path?
|
|
|
|
there are a couple of providers we may not need
|
|
anymore. ifdefs in gen_nuspec. like sqlite3 dllimport
|
|
for example.
|
|
|
|
how to pass null to the tail for sqlite3_prepare_?
|
|
chg the pinvoke signature from out byte* to byte**
|
|
and pass null.
|
|
|
|
understand why Span seems nullable when it is not
|
|
|
|
might want bind_blob to allow specifying something
|
|
other than transient. in the current implementation,
|
|
sqlite makes a copy of the blob every time. same for
|
|
bind_text as well.
|
|
|
|
--
|
|
|
|
need higher level typed delegate overloads for
|
|
sqlite3_trace_v2(). but problem with mapping
|
|
IntPtr (in the callback) to the actual safehandle.
|
|
or remove trace_v2 for now.
|
|
|
|
for a ReadOnlySpan<byte> without a null terminator:
|
|
empty "string" is indistinguishable from null string.
|
|
|
|
sqlite3_create_window_function
|
|
|
|
sqlite3_normalized_sql
|
|
|
|
sqlite3_value_frombind
|
|
|
|
sqlite3_keyword_count/name/check
|
|
|
|
need 3 ways of doing dynamic load:
|
|
plain name, used for winsqlite3
|
|
look for runtimes/rid
|
|
look for x86/x64
|
|
do these by chance map nicely on to the flags
|
|
for S.R.I.NativeLibrary ?
|
|
|
|
need tests for bundle_green ?
|
|
|
|
winsqlite3 xunit with net461 test aborted. works
|
|
fine with fake_xunit.
|
|
|
|
verify versions of libtomcrypt. submodule?
|
|
|
|
xDelete fails on UWP. but the call that fails comes
|
|
from the result of db_filename? probably not related.
|
|
wrong directory? needs a path?
|
|
|
|
instead of GetExecutingAssembly, should use
|
|
typeof(TODO).Assembly ?
|
|
|
|
android: 70 pass, 2 fail
|
|
create_table_file
|
|
wal
|
|
|
|
can ios use provider dynamic with null for
|
|
the dlopen argument? seems like I tried this
|
|
and it didn't work, but I don't remember for sure.
|
|
|
|
need a test that actually uses the prepare flags
|
|
for sqlite3_prepare_v3, like persistent
|
|
|
|
restore those win32 set directory calls somewhere?
|
|
but we don't want ifdef down in raw or provider.
|
|
maybe in batteries? problem is they prevent a
|
|
sqlite3_config() call.
|
|
|
|
NativeMethods.sqlite3_win32_set_directory(/*data directory type*/1, Windows.Storage.ApplicationData.Current.LocalFolder.Path);
|
|
NativeMethods.sqlite3_win32_set_directory(/*temp directory type*/2, Windows.Storage.ApplicationData.Current.TemporaryFolder.Path);
|
|
|
|
--
|
|
|
|
investigate GC.AddMemoryPressure()
|
|
|
|
investigate new utf8 things in System.Memory pkg
|
|
|
|
multi-target to avoid dep on System.Memory for netcore2.1+ ?
|
|
|
|
need some tests for sqlite-ish case insensitivity of
|
|
collation names
|
|
|
|
--
|
|
|
|
revisit passing 'object' as user data round trip
|
|
through a callback
|
|
|
|
--
|
|
|
|
instead of just IGetFunctionPointer, should
|
|
we have IResolveLibrary? how should we wrap the
|
|
Load part of NativeLibrary? or maybe the resulting
|
|
IGetFunctionPointer is all that matters, since that's
|
|
all provider.dynamic needs?
|
|
|
|
but who owns the dll handle, and therefore has the
|
|
obligation to free it?
|
|
|
|
explore bundle native code in embedded resource,
|
|
extract to known location and use provider dynamic.
|
|
would allow builds to be done entirely without
|
|
xamarin sdks. but the location to write the dll
|
|
would need to be injected from platform code?
|
|
|
|
to be even more ridiculous, we could bundle the
|
|
native code in C# as a binary array. :-) at
|
|
least then we would eliminate all involvement
|
|
from msbuild.
|
|
|
|
problem with embed is that it won't work for all
|
|
platforms, still prefer runtimes folder for .net core.
|
|
which means we need two copies?
|
|
|
|
use embed for ios and android, like now? but
|
|
for ios, better than static. and both avoid the
|
|
need for platform-specific build sdk stuff?
|
|
|
|
or maybe just emulate the runtimes folder on all
|
|
platforms? ios and android included?
|
|
|
|
hmph. xam android says normal content item is
|
|
not supported. and xam ios also.
|
|
|
|
but does plain embedded resource work on both
|
|
android and ios?
|
|
|
|
might need to go back to separating the nuget
|
|
packages for e_sqlite3 and e_sqlcipher by
|
|
platform? still don't need v120 and v110 and
|
|
so on. but maybe windows, mac, linux separate
|
|
again. but ms ships libuv with all platforms
|
|
in one package...
|
|
|
|
resolver should probably check File.Exists
|
|
(on things that are an absolute path) before trying
|
|
LoadLibrary/dlopen.
|
|
|
|
--
|
|
|
|
gen_nuspec should write the same EOL convention
|
|
on all platforms. using XmlWriterSettings. NewLineChars
|
|
doesn't seem to do what it should. actually, that
|
|
seems fine. now the problem is the slash-vs-backslash
|
|
issue in the nuspec paths.
|
|
|
|
whether in embedded resource or just a content
|
|
file, test using the dylib for ios. or perhaps not.
|
|
|
|
review EntryPoint attribute
|
|
|
|
fix build script to do clean
|
|
|
|
NuspecProperties doesn't work for PackageTags
|
|
because of the semicolon inside it. how to escape
|
|
that?
|
|
|
|
use new t4 local cli tool package
|
|
PlatformNotSupportedException
|
|
logged, mono/t4 #42, fix pending
|
|
|
|
need push script. reads the xml file to get
|
|
the version
|
|
|
|
.editorconfig
|
|
|
|
should the other batteries also build on a placeholder
|
|
instead of the actual ios lib assembly? allows
|
|
dotnet cli instead of desktop msbuild.
|
|
|
|
with an SDK-style net461 project, how to control
|
|
the cpu target of the build? msbuild prop Platform?
|
|
|
|
I wonder if there are any other ways that v2 breaks
|
|
the existing zetetic package.
|
|
|
|
nuspec should show SQLitePCLRaw org account as
|
|
owner?
|
|
|
|
DONE: consider default enable_next_stmt() to false
|
|
|
|
msbuild props to omit native builds in targets?
|
|
|
|
concern about dictionary<intptr, T> because it's
|
|
a value type? ios AOT. ToString() instead?
|
|
it would seem that the latest versions of mono
|
|
now support this case.
|
|
|
|
DONE: maybe v2 should use the v141 builds and include arm64
|
|
|
|
--
|
|
|
|
the top half of the provider class is the
|
|
same for dynamic vs dllimport. use a partial
|
|
class and share it?
|
|
|
|
new sn key for lib.e_sqlcipher. hmmm.
|
|
or should we just use the same one as before?
|
|
and why do we have the same key for
|
|
the android and ios versions of this?
|
|
same goes for e_sqlite3.
|
|
|
|
--
|
|
|
|
in general, only one of the following is true:
|
|
win, LoadLibrary, dll suffix
|
|
everything else, dlopen
|
|
macos, dylib suffix
|
|
everything else, so suffix
|
|
|
|
ios: either system or internal
|
|
|
|
android: std places
|
|
just load e_sqlite3?
|
|
|
|
.net core: should find from rid, just
|
|
load "e_sqlite3" ?
|
|
|
|
mono on mac
|
|
Xamarin.Mac
|
|
mono on linux
|
|
.net framework on windows
|
|
subdirs from the targets file
|
|
|
|
cdecl vs stdcall?
|
|
|
|
maybe everything which needs a targets file should
|
|
also need to pass more info (a path) to Setup
|
|
|
|
--
|
|
|
|
constructing the string:
|
|
basename
|
|
e_sqlite3
|
|
e_sqlcipher
|
|
sqlite3
|
|
sqlcipher
|
|
add dll/dylib/so suffix
|
|
path
|
|
starting
|
|
cwd
|
|
executingassembly.location
|
|
other?
|
|
subdir
|
|
nothing?
|
|
native/rid (targets)
|
|
|
|
--
|
|
|
|
review the weird stuff agg functions do
|
|
with the context pointer
|
|
|
|
--
|
|
|
|
need to setup some x86 stdcall builds for testing?
|
|
or just use winsqlite3 itself. irritating that
|
|
the test suite passes using winsqlite3 and either
|
|
calling convention. why?
|
|
|
|
goal is to have no ifdefs in core
|
|
|
|
--
|
|
|
|
in the readme, explain why iOS lib has static in name.
|
|
and why internal. and why SQLitePCL.lib.embedded.Init()
|
|
|
|
need the ability to disconnect:
|
|
1. the env used to compile an assembly
|
|
2. the lib/env dir in nuget
|
|
|
|
for bundle_e_sqlite3, we want to build two things for netstandard11:
|
|
1. e_sqlite3, into netcoreapp
|
|
2. none, into netstandard11
|
|
|
|
enable_shared_cache. is this present? does akavache need it?
|
|
|
|
change the targets files
|
|
to not do the copy when packages.config is present?
|
|
|
|
understand runtime.json and rid-specific deps, even
|
|
if they are not officially supported
|
|
|
|
--------
|
|
|
|
is CopyNuGetImplementations causing trouble?
|
|
with project.json : runtimes?
|
|
|
|
need to go to nuget.org and mark some of the older
|
|
packages deprecated
|
|
|
|
maybe the "first pinvoke set that works" code should
|
|
go somewhere else, higher up?
|
|
|
|
--------
|
|
|
|
can we do a dylib ios version?
|
|
|
|
----
|
|
|
|
docs on all the methods in raw, especially where the params
|
|
differ from the C API
|
|
|
|
----------------
|
|
|
|
sqlite API issues:
|
|
|
|
should sqlite3_commit_hook() return something? the C function returns the
|
|
user pointer, which has no useful parallel for us to return. I sort of hate
|
|
the fact that it returns void, since we can't check errors on it. but
|
|
the underlying C function doesn't really return any useful info for error
|
|
checking either.
|
|
|
|
should maybe use the value from commit_hook (and rollback_hook) internally
|
|
to verify/dispose the hook_handle?
|
|
|
|
unprotected sqlite3_value: sqlite3_column_value, sqlite3_bind_value, sqlite3_result_value
|
|
|
|
sqlite3_create_module
|
|
|
|
sqlite3_db_mutex
|
|
|
|
sqlite3_get_auxdata
|
|
sqlite3_set_auxdata
|
|
|
|
sqlite3_randomness
|
|
|
|
sqlite3_wal_autocheckpoint
|
|
sqlite3_wal_checkpoint
|
|
sqlite3_wal_checkpoint_v2
|
|
sqlite3_wal_hook
|
|
|
|
sqlite3_busy_handler
|
|
|
|
sqlite3_collation_needed -- difficult because of the be handle passed
|
|
to the callback
|
|
|