chore: upgrade to sqlx 0.7.1 (#8266)

There are a bunch of dependencies in `Cargo.lock` that are related to
mysql. These are NOT compiled at all, and are also not part of `cargo
tree`. The reason for the inclusion is a bug in cargo:

https://github.com/rust-lang/cargo/issues/10801

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
pull/24376/head
Marco Neumann 2023-07-19 14:18:57 +02:00 committed by GitHub
parent d3b3805e5f
commit 004b401a05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 414 additions and 271 deletions

540
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -17,7 +17,7 @@ once_cell = "1"
ordered-float = "3"
schema = { path = "../schema" }
sha2 = "0.10"
sqlx = { version = "0.6", features = ["runtime-tokio-rustls", "postgres", "uuid"] }
sqlx = { version = "0.7.1", features = ["runtime-tokio-rustls", "postgres", "uuid"] }
thiserror = "1.0.43"
uuid = { version = "1", features = ["v4"] }
workspace-hack = { version = "0.1", path = "../workspace-hack" }

View File

@ -4,7 +4,6 @@ use super::TableId;
use generated_types::influxdata::iox::schema::v1 as proto;
use influxdb_line_protocol::FieldValue;
use schema::{builder::SchemaBuilder, InfluxColumnType, InfluxFieldType, Schema};
use sqlx::postgres::PgHasArrayType;
use std::{
collections::{BTreeMap, BTreeSet, HashMap},
convert::TryFrom,
@ -26,12 +25,6 @@ impl ColumnId {
}
}
impl PgHasArrayType for ColumnId {
fn array_type_info() -> sqlx::postgres::PgTypeInfo {
<i64 as PgHasArrayType>::array_type_info()
}
}
/// Column definitions for a table indexed by their name
#[derive(Debug, Clone, Eq, PartialEq)]
pub struct ColumnsByName(BTreeMap<String, ColumnSchema>);
@ -328,7 +321,7 @@ impl TryFrom<proto::column_schema::ColumnType> for ColumnType {
/// Set of columns.
#[derive(Debug, Clone, PartialEq, Eq, sqlx::Type)]
#[sqlx(transparent)]
#[sqlx(transparent, no_pg_array)]
pub struct ColumnSet(Vec<ColumnId>);
impl ColumnSet {

View File

@ -244,7 +244,7 @@ pub static PARTITION_BY_DAY_PROTO: Lazy<Arc<proto::PartitionTemplate>> = Lazy::n
/// A partition template specified by a namespace record.
#[derive(Debug, PartialEq, Clone, Default, sqlx::Type)]
#[sqlx(transparent)]
#[sqlx(transparent, no_pg_array)]
pub struct NamespacePartitionTemplateOverride(Option<serialization::Wrapper>);
impl TryFrom<proto::PartitionTemplate> for NamespacePartitionTemplateOverride {
@ -259,7 +259,7 @@ impl TryFrom<proto::PartitionTemplate> for NamespacePartitionTemplateOverride {
/// A partition template specified by a table record.
#[derive(Debug, PartialEq, Eq, Clone, Default, sqlx::Type)]
#[sqlx(transparent)]
#[sqlx(transparent, no_pg_array)]
pub struct TablePartitionTemplateOverride(Option<serialization::Wrapper>);
impl TablePartitionTemplateOverride {

View File

@ -7,14 +7,6 @@ yanked = "deny"
unmaintained = "warn"
notice = "warn"
ignore = [
# "It was sometimes possible for SQLite versions >= 1.0.12, < 3.39.2 to allow an array-bounds overflow when large
# string were input into SQLite's printf function."
#
# We are not using `printf` with untrusted inputs.
#
# This is currently blocked by upstream:
# https://github.com/launchbadge/sqlx/issues/2346
"RUSTSEC-2022-0090",
]
git-fetch-with-cli = true

View File

@ -32,5 +32,5 @@ metric = { path = "../metric" }
once_cell = { version = "1.18", features = ["parking_lot"] }
parquet_file = { path = "../parquet_file" }
tempfile = "3"
sqlx = { version = "0.6", features = [ "runtime-tokio-rustls" ] }
sqlx = { version = "0.7.1", features = [ "runtime-tokio-rustls" ] }

View File

@ -18,7 +18,7 @@ parking_lot = { version = "0.12" }
serde = { version = "1.0", features = ["derive"] }
siphasher = "0.3"
snafu = "0.7"
sqlx = { version = "0.6", features = [ "runtime-tokio-rustls" , "postgres", "uuid", "sqlite" ] }
sqlx = { version = "0.7.1", features = [ "runtime-tokio-rustls" , "postgres", "uuid", "sqlite" ] }
sqlx-hotswap-pool = { path = "../sqlx-hotswap-pool" }
thiserror = "1.0.43"
tokio = { version = "1.29", features = ["io-util", "macros", "parking_lot", "rt-multi-thread", "time"] }

View File

@ -329,9 +329,9 @@ async fn new_raw_pool(
parsed_dsn: &str,
) -> Result<sqlx::Pool<Postgres>, sqlx::Error> {
// sqlx exposes some options as pool options, while other options are available as connection options.
let mut connect_options = PgConnectOptions::from_str(parsed_dsn)?;
// the default is INFO, which is frankly surprising.
connect_options.log_statements(log::LevelFilter::Trace);
let connect_options = PgConnectOptions::from_str(parsed_dsn)?
// the default is INFO, which is frankly surprising.
.log_statements(log::LevelFilter::Trace);
let app_name = options.app_name.clone();
let app_name2 = options.app_name.clone(); // just to log below
@ -816,7 +816,7 @@ RETURNING *;
.bind(name) // $1
.bind(partition_template) // $2
.bind(namespace_id) // $3
.fetch_one(&mut tx)
.fetch_one(&mut *tx)
.await
.map_err(|e| match e {
sqlx::Error::RowNotFound => Error::TableCreateLimitError {
@ -843,7 +843,8 @@ RETURNING *;
// columns with an unsupported type.
for template_part in table.partition_template.parts() {
if let TemplatePart::TagValue(tag_name) = template_part {
insert_column_with_connection(&mut tx, tag_name, table.id, ColumnType::Tag).await?;
insert_column_with_connection(&mut *tx, tag_name, table.id, ColumnType::Tag)
.await?;
}
}
@ -1538,15 +1539,14 @@ WHERE object_store_id = $1;
) -> Result<Vec<Uuid>> {
sqlx::query(
// sqlx's readme suggests using PG's ANY operator instead of IN; see link below.
// https://github.com/launchbadge/sqlx/blob/main/FAQ.md#how-can-i-do-a-select--where-foo-in--query
r#"
SELECT object_store_id
FROM parquet_file
WHERE object_store_id = ANY($1);
"#,
)
// from https://github.com/launchbadge/sqlx/blob/main/FAQ.md#how-can-i-do-a-select--where-foo-in--query
// a bug of the parameter typechecking code requires all array parameters to be slices
.bind(&object_store_ids[..]) // $1
.bind(object_store_ids) // $1
.map(|pgr| pgr.get::<Uuid, _>("object_store_id"))
.fetch_all(&mut self.inner)
.await
@ -1576,13 +1576,13 @@ WHERE object_store_id = ANY($1);
.map_err(|e| Error::StartTransaction { source: e })?;
let marked_at = Timestamp::from(self.time_provider.now());
flag_for_delete(&mut tx, delete, marked_at).await?;
flag_for_delete(&mut *tx, delete, marked_at).await?;
update_compaction_level(&mut tx, upgrade, target_level).await?;
update_compaction_level(&mut *tx, upgrade, target_level).await?;
let mut ids = Vec::with_capacity(create.len());
for file in create {
let id = create_parquet_file(&mut tx, file).await?;
let id = create_parquet_file(&mut *tx, file).await?;
ids.push(id);
}
@ -1667,12 +1667,9 @@ async fn flag_for_delete<'q, E>(
where
E: Executor<'q, Database = Postgres>,
{
// If I try to do `.bind(parquet_file_ids)` directly, I get a compile error from sqlx.
// See https://github.com/launchbadge/sqlx/issues/1744
let ids: Vec<_> = ids.iter().map(|p| p.get()).collect();
let query = sqlx::query(r#"UPDATE parquet_file SET to_delete = $1 WHERE id = ANY($2);"#)
.bind(marked_at) // $1
.bind(&ids[..]); // $2
.bind(ids); // $2
query
.execute(executor)
.await
@ -1689,9 +1686,6 @@ async fn update_compaction_level<'q, E>(
where
E: Executor<'q, Database = Postgres>,
{
// If I try to do `.bind(parquet_file_ids)` directly, I get a compile error from sqlx.
// See https://github.com/launchbadge/sqlx/issues/1744
let ids: Vec<_> = parquet_file_ids.iter().map(|p| p.get()).collect();
let query = sqlx::query(
r#"
UPDATE parquet_file
@ -1700,7 +1694,7 @@ WHERE id = ANY($2);
"#,
)
.bind(compaction_level) // $1
.bind(&ids[..]); // $2
.bind(parquet_file_ids); // $2
query
.execute(executor)
.await

View File

@ -577,7 +577,7 @@ RETURNING *;
.bind(name) // $1
.bind(partition_template) // $2
.bind(namespace_id) // $3
.fetch_one(&mut tx)
.fetch_one(&mut *tx)
.await
.map_err(|e| match e {
sqlx::Error::RowNotFound => Error::TableCreateLimitError {
@ -604,7 +604,8 @@ RETURNING *;
// columns with an unsupported type.
for template_part in table.partition_template.parts() {
if let TemplatePart::TagValue(tag_name) = template_part {
insert_column_with_connection(&mut tx, tag_name, table.id, ColumnType::Tag).await?;
insert_column_with_connection(&mut *tx, tag_name, table.id, ColumnType::Tag)
.await?;
}
}
@ -1451,14 +1452,14 @@ WHERE object_store_id IN ({v});",
for id in delete {
let marked_at = Timestamp::from(self.time_provider.now());
flag_for_delete(&mut tx, *id, marked_at).await?;
flag_for_delete(&mut *tx, *id, marked_at).await?;
}
update_compaction_level(&mut tx, upgrade, target_level).await?;
update_compaction_level(&mut *tx, upgrade, target_level).await?;
let mut ids = Vec::with_capacity(create.len());
for file in create {
let res = create_parquet_file(&mut tx, file.clone()).await?;
let res = create_parquet_file(&mut *tx, file.clone()).await?;
ids.push(res.id);
}
tx.commit()
@ -1562,8 +1563,7 @@ async fn update_compaction_level<'q, E>(
where
E: Executor<'q, Database = Sqlite>,
{
// If I try to do `.bind(parquet_file_ids)` directly, I get a compile error from sqlx.
// See https://github.com/launchbadge/sqlx/issues/1744
// We use a JSON-based "IS IN" check.
let ids: Vec<_> = parquet_file_ids.iter().map(|p| p.get()).collect();
let query = sqlx::query(
r#"

View File

@ -10,7 +10,7 @@ license.workspace = true
publish = false
[dependencies]
sqlx = { version = "0.6.3", features = ["runtime-tokio-rustls", "postgres", "json", "tls"] }
sqlx = { version = "0.7.1", features = ["runtime-tokio-rustls", "postgres", "json", "tls-rustls"] }
either = "1.8.1"
futures = "0.3"
workspace-hack = { version = "0.1", path = "../workspace-hack" }

View File

@ -31,7 +31,7 @@ rand = "0.8.3"
regex = "1.9"
reqwest = { version = "0.11", default-features = false, features = ["json", "rustls-tls"] }
snafu = "0.7"
sqlx = { version = "0.6", features = [ "runtime-tokio-rustls" , "postgres", "uuid" ] }
sqlx = { version = "0.7.1", features = [ "runtime-tokio-rustls" , "postgres", "uuid" ] }
tempfile = "3.6.0"
test_helpers = { path = "../test_helpers", features = ["future_timeout"] }
tokio = { version = "1.29", features = ["macros", "net", "parking_lot", "rt-multi-thread", "signal", "sync", "time"] }

View File

@ -16,15 +16,13 @@ license.workspace = true
### BEGIN HAKARI SECTION
[dependencies]
ahash = { version = "0.8", default-features = false, features = ["runtime-rng"] }
ahash = { version = "0.8" }
arrow = { version = "43", features = ["dyn_cmp_dict", "prettyprint"] }
arrow-array = { version = "43", default-features = false, features = ["chrono-tz"] }
arrow-flight = { version = "43", features = ["flight-sql-experimental"] }
arrow-ord = { version = "43", default-features = false, features = ["dyn_cmp_dict"] }
arrow-string = { version = "43", default-features = false, features = ["dyn_cmp_dict"] }
base64-594e8ee84c453af0 = { package = "base64", version = "0.13" }
base64-647d43efb71741da = { package = "base64", version = "0.21" }
bitflags = { version = "1" }
base64 = { version = "0.21" }
byteorder = { version = "1" }
bytes = { version = "1" }
chrono = { version = "0.4", default-features = false, features = ["alloc", "clock", "serde"] }
@ -34,7 +32,7 @@ datafusion = { git = "https://github.com/apache/arrow-datafusion.git", rev = "46
datafusion-optimizer = { git = "https://github.com/apache/arrow-datafusion.git", rev = "46182c894e5106adba7fb53e9848ce666fb6129b", default-features = false, features = ["crypto_expressions", "regex_expressions", "unicode_expressions"] }
datafusion-physical-expr = { git = "https://github.com/apache/arrow-datafusion.git", rev = "46182c894e5106adba7fb53e9848ce666fb6129b", default-features = false, features = ["crypto_expressions", "encoding_expressions", "regex_expressions", "unicode_expressions"] }
digest = { version = "0.10", features = ["mac", "std"] }
either = { version = "1" }
either = { version = "1", features = ["serde"] }
fixedbitset = { version = "0.4" }
flatbuffers = { version = "23" }
flate2 = { version = "1" }
@ -47,8 +45,7 @@ futures-task = { version = "0.3", default-features = false, features = ["std"] }
futures-util = { version = "0.3", features = ["channel", "io", "sink"] }
getrandom = { version = "0.2", default-features = false, features = ["std"] }
hashbrown = { version = "0.14", features = ["raw"] }
indexmap-dff4ba8e3ae991db = { package = "indexmap", version = "1", default-features = false, features = ["std"] }
indexmap-f595c2ba2a3f28df = { package = "indexmap", version = "2" }
indexmap = { version = "2" }
itertools = { version = "0.10" }
libc = { version = "0.2", features = ["extra_traits"] }
lock_api = { version = "0.4", features = ["arc_lock"] }
@ -74,14 +71,17 @@ regex-automata = { version = "0.3", default-features = false, features = ["dfa-o
regex-syntax = { version = "0.7" }
reqwest = { version = "0.11", default-features = false, features = ["json", "rustls-tls", "stream"] }
ring = { version = "0.16", features = ["std"] }
rustls = { version = "0.21", default-features = false, features = ["dangerous_configuration", "logging", "tls12"] }
serde = { version = "1", features = ["derive", "rc"] }
serde_json = { version = "1", features = ["raw_value"] }
sha2 = { version = "0.10" }
similar = { version = "2", features = ["inline"] }
smallvec = { version = "1", default-features = false, features = ["union"] }
sqlparser = { version = "0.35", features = ["visitor"] }
sqlx = { version = "0.6", features = ["json", "postgres", "runtime-tokio-rustls", "sqlite", "tls", "uuid"] }
sqlx-core = { version = "0.6", default-features = false, features = ["any", "migrate", "postgres", "runtime-tokio-rustls", "sqlite", "uuid"] }
sqlx = { version = "0.7", features = ["postgres", "runtime-tokio-rustls", "sqlite", "uuid"] }
sqlx-core = { version = "0.7", features = ["_rt-tokio", "_tls-rustls", "any", "json", "migrate", "offline", "uuid"] }
sqlx-postgres = { version = "0.7", default-features = false, features = ["any", "json", "migrate", "offline", "uuid"] }
sqlx-sqlite = { version = "0.7", default-features = false, features = ["any", "json", "migrate", "offline", "uuid"] }
thrift = { version = "0.17" }
tokio = { version = "1", features = ["full", "test-util", "tracing"] }
tokio-stream = { version = "0.1", features = ["fs", "net"] }
@ -101,17 +101,15 @@ zstd-safe = { version = "6", default-features = false, features = ["arrays", "le
zstd-sys = { version = "2", default-features = false, features = ["legacy", "std", "zdict_builder"] }
[build-dependencies]
ahash = { version = "0.8", default-features = false, features = ["runtime-rng"] }
base64-594e8ee84c453af0 = { package = "base64", version = "0.13" }
base64-647d43efb71741da = { package = "base64", version = "0.21" }
bitflags = { version = "1" }
ahash = { version = "0.8" }
base64 = { version = "0.21" }
byteorder = { version = "1" }
bytes = { version = "1" }
cc = { version = "1", default-features = false, features = ["parallel"] }
crossbeam-utils = { version = "0.8" }
crypto-common = { version = "0.1", default-features = false, features = ["std"] }
digest = { version = "0.10", features = ["mac", "std"] }
either = { version = "1" }
either = { version = "1", features = ["serde"] }
fixedbitset = { version = "0.4" }
futures-channel = { version = "0.3", features = ["sink"] }
futures-core = { version = "0.3" }
@ -123,7 +121,7 @@ futures-util = { version = "0.3", features = ["channel", "io", "sink"] }
getrandom = { version = "0.2", default-features = false, features = ["std"] }
hashbrown = { version = "0.14", features = ["raw"] }
heck = { version = "0.4", features = ["unicode"] }
indexmap-dff4ba8e3ae991db = { package = "indexmap", version = "1", default-features = false, features = ["std"] }
indexmap = { version = "2" }
itertools = { version = "0.10" }
libc = { version = "0.2", features = ["extra_traits"] }
lock_api = { version = "0.4", features = ["arc_lock"] }
@ -144,67 +142,75 @@ regex = { version = "1" }
regex-automata = { version = "0.3", default-features = false, features = ["dfa-onepass", "hybrid", "meta", "nfa-backtrack", "perf-inline", "perf-literal", "unicode"] }
regex-syntax = { version = "0.7" }
ring = { version = "0.16", features = ["std"] }
rustls = { version = "0.21", default-features = false, features = ["dangerous_configuration", "logging", "tls12"] }
serde = { version = "1", features = ["derive", "rc"] }
serde_json = { version = "1", features = ["raw_value"] }
sha2 = { version = "0.10" }
smallvec = { version = "1", default-features = false, features = ["union"] }
sqlx-core = { version = "0.6", default-features = false, features = ["any", "migrate", "postgres", "runtime-tokio-rustls", "sqlite", "uuid"] }
sqlx-macros = { version = "0.6", default-features = false, features = ["json", "migrate", "postgres", "runtime-tokio-rustls", "sqlite", "uuid"] }
sqlx-core = { version = "0.7", features = ["_rt-tokio", "_tls-rustls", "any", "json", "migrate", "offline", "uuid"] }
sqlx-macros = { version = "0.7", features = ["_rt-tokio", "_tls-rustls", "json", "migrate", "postgres", "sqlite", "uuid"] }
sqlx-macros-core = { version = "0.7", features = ["_rt-tokio", "_tls-rustls", "json", "migrate", "postgres", "sqlite", "uuid"] }
sqlx-postgres = { version = "0.7", default-features = false, features = ["any", "json", "migrate", "offline", "uuid"] }
sqlx-sqlite = { version = "0.7", default-features = false, features = ["any", "json", "migrate", "offline", "uuid"] }
syn-dff4ba8e3ae991db = { package = "syn", version = "1", features = ["extra-traits", "full"] }
syn-f595c2ba2a3f28df = { package = "syn", version = "2", features = ["extra-traits", "full", "visit-mut"] }
tokio = { version = "1", features = ["full", "test-util", "tracing"] }
tokio-stream = { version = "0.1", features = ["fs", "net"] }
tracing = { version = "0.1", features = ["log", "max_level_trace", "release_max_level_trace"] }
tracing-core = { version = "0.1" }
unicode-bidi = { version = "0.3" }
unicode-normalization = { version = "0.1" }
url = { version = "2" }
uuid = { version = "1", features = ["v4"] }
[target.x86_64-unknown-linux-gnu.dependencies]
bitflags = { version = "2", default-features = false, features = ["std"] }
nix = { version = "0.26" }
once_cell = { version = "1", default-features = false, features = ["unstable"] }
rustix = { version = "0.38", features = ["fs", "termios"] }
rustls = { version = "0.21", features = ["dangerous_configuration"] }
webpki = { version = "0.22", default-features = false, features = ["std"] }
rustls = { version = "0.21" }
[target.x86_64-unknown-linux-gnu.build-dependencies]
bitflags = { version = "2", default-features = false, features = ["std"] }
once_cell = { version = "1", default-features = false, features = ["unstable"] }
webpki = { version = "0.22", default-features = false, features = ["std"] }
rustls = { version = "0.21" }
[target.x86_64-apple-darwin.dependencies]
bitflags = { version = "2", default-features = false, features = ["std"] }
nix = { version = "0.26" }
once_cell = { version = "1", default-features = false, features = ["unstable"] }
rustix = { version = "0.38", features = ["fs", "termios"] }
rustls = { version = "0.21", features = ["dangerous_configuration"] }
webpki = { version = "0.22", default-features = false, features = ["std"] }
rustls = { version = "0.21" }
[target.x86_64-apple-darwin.build-dependencies]
bitflags = { version = "2", default-features = false, features = ["std"] }
once_cell = { version = "1", default-features = false, features = ["unstable"] }
webpki = { version = "0.22", default-features = false, features = ["std"] }
rustls = { version = "0.21" }
[target.aarch64-apple-darwin.dependencies]
bitflags = { version = "2", default-features = false, features = ["std"] }
nix = { version = "0.26" }
once_cell = { version = "1", default-features = false, features = ["unstable"] }
rustix = { version = "0.38", features = ["fs", "termios"] }
rustls = { version = "0.21", features = ["dangerous_configuration"] }
webpki = { version = "0.22", default-features = false, features = ["std"] }
rustls = { version = "0.21" }
[target.aarch64-apple-darwin.build-dependencies]
bitflags = { version = "2", default-features = false, features = ["std"] }
once_cell = { version = "1", default-features = false, features = ["unstable"] }
webpki = { version = "0.22", default-features = false, features = ["std"] }
rustls = { version = "0.21" }
[target.x86_64-pc-windows-msvc.dependencies]
once_cell = { version = "1", default-features = false, features = ["unstable"] }
rustls = { version = "0.21", features = ["dangerous_configuration"] }
rustls = { version = "0.21" }
scopeguard = { version = "1" }
webpki = { version = "0.22", default-features = false, features = ["std"] }
winapi = { version = "0.3", default-features = false, features = ["basetsd", "cfg", "combaseapi", "consoleapi", "errhandlingapi", "evntrace", "fileapi", "handleapi", "heapapi", "ifdef", "impl-debug", "impl-default", "in6addr", "inaddr", "ioapiset", "iphlpapi", "knownfolders", "lmaccess", "lmapibuf", "lmcons", "memoryapi", "minwinbase", "minwindef", "netioapi", "ntlsa", "ntsecapi", "ntstatus", "objbase", "objidl", "oleauto", "pdh", "powerbase", "processenv", "psapi", "rpcdce", "sddl", "securitybaseapi", "shellapi", "shlobj", "std", "stringapiset", "synchapi", "sysinfoapi", "timezoneapi", "wbemcli", "winbase", "wincon", "windef", "winerror", "winioctl", "winnt", "winreg", "winsock2", "winuser", "ws2ipdef", "ws2tcpip", "wtypesbase"] }
winapi = { version = "0.3", default-features = false, features = ["basetsd", "cfg", "combaseapi", "consoleapi", "errhandlingapi", "evntrace", "fileapi", "handleapi", "heapapi", "ifdef", "impl-debug", "impl-default", "in6addr", "inaddr", "ioapiset", "iphlpapi", "lmaccess", "lmapibuf", "lmcons", "memoryapi", "minwinbase", "minwindef", "netioapi", "ntlsa", "ntsecapi", "objidl", "oleauto", "pdh", "powerbase", "processenv", "psapi", "rpcdce", "sddl", "securitybaseapi", "shellapi", "std", "stringapiset", "synchapi", "sysinfoapi", "timezoneapi", "wbemcli", "winbase", "wincon", "windef", "winerror", "winioctl", "winnt", "winreg", "winsock2", "winuser", "ws2ipdef", "ws2tcpip", "wtypesbase"] }
windows-sys = { version = "0.48", features = ["Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming", "Win32_UI_Shell"] }
[target.x86_64-pc-windows-msvc.build-dependencies]
once_cell = { version = "1", default-features = false, features = ["unstable"] }
rustls = { version = "0.21" }
scopeguard = { version = "1" }
webpki = { version = "0.22", default-features = false, features = ["std"] }
winapi = { version = "0.3", default-features = false, features = ["basetsd", "cfg", "combaseapi", "consoleapi", "errhandlingapi", "evntrace", "fileapi", "handleapi", "heapapi", "ifdef", "impl-debug", "impl-default", "in6addr", "inaddr", "ioapiset", "iphlpapi", "knownfolders", "lmaccess", "lmapibuf", "lmcons", "memoryapi", "minwinbase", "minwindef", "netioapi", "ntlsa", "ntsecapi", "ntstatus", "objbase", "objidl", "oleauto", "pdh", "powerbase", "processenv", "psapi", "rpcdce", "sddl", "securitybaseapi", "shellapi", "shlobj", "std", "stringapiset", "synchapi", "sysinfoapi", "timezoneapi", "wbemcli", "winbase", "wincon", "windef", "winerror", "winioctl", "winnt", "winreg", "winsock2", "winuser", "ws2ipdef", "ws2tcpip", "wtypesbase"] }
winapi = { version = "0.3", default-features = false, features = ["basetsd", "cfg", "combaseapi", "consoleapi", "errhandlingapi", "evntrace", "fileapi", "handleapi", "heapapi", "ifdef", "impl-debug", "impl-default", "in6addr", "inaddr", "ioapiset", "iphlpapi", "lmaccess", "lmapibuf", "lmcons", "memoryapi", "minwinbase", "minwindef", "netioapi", "ntlsa", "ntsecapi", "objidl", "oleauto", "pdh", "powerbase", "processenv", "psapi", "rpcdce", "sddl", "securitybaseapi", "shellapi", "std", "stringapiset", "synchapi", "sysinfoapi", "timezoneapi", "wbemcli", "winbase", "wincon", "windef", "winerror", "winioctl", "winnt", "winreg", "winsock2", "winuser", "ws2ipdef", "ws2tcpip", "wtypesbase"] }
windows-sys = { version = "0.48", features = ["Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming", "Win32_UI_Shell"] }
### END HAKARI SECTION