diff --git a/dev/bundle.html b/dev/bundle.html
index ee947c43..8e3a5df6 100644
--- a/dev/bundle.html
+++ b/dev/bundle.html
@@ -38,7 +38,7 @@
setConnector();
const queries = [
- `CREATE TEMP TABLE IF NOT EXISTS flights AS SELECT * FROM read_parquet('data/flights-200k.parquet')`,
+ `CREATE TABLE IF NOT EXISTS flights AS SELECT * FROM read_parquet('data/flights-200k.parquet')`,
`SELECT count(*) FROM "flights"`
]
diff --git a/dev/query/index.html b/dev/query/index.html
index dfe4e642..0e7ffd6b 100644
--- a/dev/query/index.html
+++ b/dev/query/index.html
@@ -59,7 +59,7 @@
} else {
await coordinator().exec(
`DROP TABLE IF EXISTS ${tableName};
- CREATE TEMP TABLE ${tableName} AS ${input.value}`
+ CREATE TABLE ${tableName} AS ${input.value}`
);
coordinator.clear({ catalog: true });
output.replaceChildren(vg.table({ from: tableName, height: 500 }));
diff --git a/docs/api/sql/data-loading.md b/docs/api/sql/data-loading.md
index 141a328f..8f8fe0b6 100644
--- a/docs/api/sql/data-loading.md
+++ b/docs/api/sql/data-loading.md
@@ -27,7 +27,7 @@ The supported _options_ are:
``` js
// Loads file.csv into the table "table1" with default options:
-// CREATE TEMP TABLE IF NOT EXISTS table1 AS
+// CREATE TABLE IF NOT EXISTS table1 AS
// SELECT *
// FROM read_csv('file.csv', auto_detect=true, sample_size=-1)
loadCSV("table1", "file.csv");
@@ -51,7 +51,7 @@ The supported _options_ are:
``` js
// Loads file.json into the table "table1" with default options:
-// CREATE TEMP TABLE IF NOT EXISTS table1 AS
+// CREATE TABLE IF NOT EXISTS table1 AS
// SELECT *
// FROM read_json('file.json', auto_detect=true, json_format='auto')
loadJSON("table1", "file.json");
@@ -75,7 +75,7 @@ The supported _options_ are:
```js
// Load named columns from a parquet file, filtered upon load:
-// CREATE TEMP TABLE IF NOT EXISTS table1 AS
+// CREATE TABLE IF NOT EXISTS table1 AS
// SELECT foo, bar, value
// FROM read_parquet('file.parquet')
// WHERE value > 1
@@ -99,7 +99,7 @@ The supported _options_ are:
- _replace_: A boolean flag (default `false`) indicating that the file contents should replace any existing table or view with the same name. The default behavior is to do nothing if a name conflict exists.
``` js
-// CREATE TEMP TABLE IF NOT EXISTS table3 AS
+// CREATE TABLE IF NOT EXISTS table3 AS
// (SELECT 1 AS "foo", 2 AS "bar") UNION ALL
// (SELECT 3 AS "foo", 4 AS "bar") UNION ALL ...
const q = loadObjects("table3", [
@@ -128,7 +128,7 @@ The supported _options_ are:
``` js
// Loads us-states.json into the table "table1":
-// CREATE TEMP TABLE IF NOT EXISTS table1 AS
+// CREATE TABLE IF NOT EXISTS table1 AS
// SELECT *
// FROM st_read('us-states.json', layer="states")
loadSpatial("table1", "us-states.json", "states");
diff --git a/docs/examples/weather.md b/docs/examples/weather.md
index 427fcbb4..06c80e16 100644
--- a/docs/examples/weather.md
+++ b/docs/examples/weather.md
@@ -5,7 +5,7 @@
# Seattle Weather
-An interactive view of Seattle’s weather, including maximum temperature, amount of precipitation, and type of weather. By dragging on the scatter plot, you can see the proportion of days in that range that have sun, fog, drizzle, rain, or snow.
+An interactive view of Seattle's weather, including maximum temperature, amount of precipitation, and type of weather. By dragging on the scatter plot, you can see the proportion of days in that range that have sun, fog, drizzle, rain, or snow.
diff --git a/docs/public/specs/esm/airline-travelers.js b/docs/public/specs/esm/airline-travelers.js
index de6cd565..170db40a 100644
--- a/docs/public/specs/esm/airline-travelers.js
+++ b/docs/public/specs/esm/airline-travelers.js
@@ -2,7 +2,7 @@ import * as vg from "@uwdata/vgplot";
await vg.coordinator().exec([
vg.loadParquet("travelers", "data/travelers.parquet"),
- `CREATE TEMP TABLE IF NOT EXISTS endpoint AS SELECT * FROM travelers ORDER BY date DESC LIMIT 1`
+ `CREATE TABLE IF NOT EXISTS endpoint AS SELECT * FROM travelers ORDER BY date DESC LIMIT 1`
]);
export default vg.plot(
diff --git a/docs/public/specs/esm/flights-10m.js b/docs/public/specs/esm/flights-10m.js
index e596e3b0..4d1c531c 100644
--- a/docs/public/specs/esm/flights-10m.js
+++ b/docs/public/specs/esm/flights-10m.js
@@ -1,7 +1,7 @@
import * as vg from "@uwdata/vgplot";
await vg.coordinator().exec([
- `CREATE TEMP TABLE IF NOT EXISTS flights10m AS SELECT GREATEST(-60, LEAST(ARR_DELAY, 180))::DOUBLE AS delay, DISTANCE AS distance, DEP_TIME AS time FROM 'https://idl.uw.edu/mosaic-datasets/data/flights-10m.parquet'`
+ `CREATE TABLE IF NOT EXISTS flights10m AS SELECT GREATEST(-60, LEAST(ARR_DELAY, 180))::DOUBLE AS delay, DISTANCE AS distance, DEP_TIME AS time FROM 'https://idl.uw.edu/mosaic-datasets/data/flights-10m.parquet'`
]);
const $brush = vg.Selection.crossfilter();
diff --git a/docs/public/specs/esm/gaia.js b/docs/public/specs/esm/gaia.js
index a08b8852..6e61eb29 100644
--- a/docs/public/specs/esm/gaia.js
+++ b/docs/public/specs/esm/gaia.js
@@ -1,7 +1,7 @@
import * as vg from "@uwdata/vgplot";
await vg.coordinator().exec([
- `CREATE TEMP TABLE IF NOT EXISTS gaia AS -- compute u and v with natural earth projection
+ `CREATE TABLE IF NOT EXISTS gaia AS -- compute u and v with natural earth projection
WITH prep AS (
SELECT
radians((-l + 540) % 360 - 180) AS lambda,
diff --git a/docs/public/specs/esm/linear-regression-10m.js b/docs/public/specs/esm/linear-regression-10m.js
index b4457a0c..2a9f6c70 100644
--- a/docs/public/specs/esm/linear-regression-10m.js
+++ b/docs/public/specs/esm/linear-regression-10m.js
@@ -1,7 +1,7 @@
import * as vg from "@uwdata/vgplot";
await vg.coordinator().exec([
- `CREATE TEMP TABLE IF NOT EXISTS flights10m AS SELECT GREATEST(-60, LEAST(ARR_DELAY, 180))::DOUBLE AS delay, DISTANCE AS distance, DEP_TIME AS time FROM 'https://idl.uw.edu/mosaic-datasets/data/flights-10m.parquet'`
+ `CREATE TABLE IF NOT EXISTS flights10m AS SELECT GREATEST(-60, LEAST(ARR_DELAY, 180))::DOUBLE AS delay, DISTANCE AS distance, DEP_TIME AS time FROM 'https://idl.uw.edu/mosaic-datasets/data/flights-10m.parquet'`
]);
const $query = vg.Selection.intersect();
diff --git a/docs/public/specs/esm/normalize.js b/docs/public/specs/esm/normalize.js
index 59d7f7f3..555953ab 100644
--- a/docs/public/specs/esm/normalize.js
+++ b/docs/public/specs/esm/normalize.js
@@ -2,7 +2,7 @@ import * as vg from "@uwdata/vgplot";
await vg.coordinator().exec([
vg.loadParquet("stocks", "data/stocks.parquet"),
- `CREATE TEMP TABLE IF NOT EXISTS labels AS SELECT MAX(Date) as Date, ARGMAX(Close, Date) AS Close, Symbol FROM stocks GROUP BY Symbol`
+ `CREATE TABLE IF NOT EXISTS labels AS SELECT MAX(Date) as Date, ARGMAX(Close, Date) AS Close, Symbol FROM stocks GROUP BY Symbol`
]);
const $point = vg.Param.value(new Date("2013-05-13"));
diff --git a/docs/public/specs/esm/nyc-taxi-rides.js b/docs/public/specs/esm/nyc-taxi-rides.js
index baf6823a..44f1d45e 100644
--- a/docs/public/specs/esm/nyc-taxi-rides.js
+++ b/docs/public/specs/esm/nyc-taxi-rides.js
@@ -9,7 +9,7 @@ await vg.coordinator().exec([
"ST_Transform(ST_Point(dropoff_latitude, dropoff_longitude), 'EPSG:4326', 'ESRI:102718') AS drop"
]
}),
- `CREATE TEMP TABLE IF NOT EXISTS trips AS SELECT
+ `CREATE TABLE IF NOT EXISTS trips AS SELECT
(HOUR(datetime) + MINUTE(datetime)/60) AS time,
ST_X(pick) AS px, ST_Y(pick) AS py,
ST_X(drop) AS dx, ST_Y(drop) AS dy
diff --git a/docs/public/specs/esm/unemployment.js b/docs/public/specs/esm/unemployment.js
index ffff627a..fb327ead 100644
--- a/docs/public/specs/esm/unemployment.js
+++ b/docs/public/specs/esm/unemployment.js
@@ -4,7 +4,7 @@ await vg.coordinator().exec([
vg.loadExtension("spatial"),
vg.loadSpatial("counties", "data/us-counties-10m.json", {layer: "counties"}),
vg.loadParquet("rates", "data/us-county-unemployment.parquet"),
- `CREATE TEMP TABLE IF NOT EXISTS combined AS SELECT a.geom AS geom, b.rate AS rate FROM counties AS a, rates AS b WHERE a.id = b.id`
+ `CREATE TABLE IF NOT EXISTS combined AS SELECT a.geom AS geom, b.rate AS rate FROM counties AS a, rates AS b WHERE a.id = b.id`
]);
export default vg.vconcat(
diff --git a/docs/public/specs/json/weather.json b/docs/public/specs/json/weather.json
index 1d98df35..65053216 100644
--- a/docs/public/specs/json/weather.json
+++ b/docs/public/specs/json/weather.json
@@ -1,7 +1,7 @@
{
"meta": {
"title": "Seattle Weather",
- "description": "An interactive view of Seattle’s weather, including maximum temperature, amount of precipitation, and type of weather. By dragging on the scatter plot, you can see the proportion of days in that range that have sun, fog, drizzle, rain, or snow.\n",
+ "description": "An interactive view of Seattle's weather, including maximum temperature, amount of precipitation, and type of weather. By dragging on the scatter plot, you can see the proportion of days in that range that have sun, fog, drizzle, rain, or snow.\n",
"credit": "Based on a [Vega-Lite/Altair example](https://vega.github.io/vega-lite/examples/interactive_seattle_weather.html) by Jake Vanderplas."
},
"data": {
diff --git a/docs/public/specs/yaml/weather.yaml b/docs/public/specs/yaml/weather.yaml
index 73321aec..a98f1d58 100644
--- a/docs/public/specs/yaml/weather.yaml
+++ b/docs/public/specs/yaml/weather.yaml
@@ -1,7 +1,7 @@
meta:
title: Seattle Weather
description: >
- An interactive view of Seattle’s weather, including maximum temperature, amount of precipitation, and type of weather.
+ An interactive view of Seattle's weather, including maximum temperature, amount of precipitation, and type of weather.
By dragging on the scatter plot, you can see the proportion of days in that range that have sun, fog, drizzle, rain, or snow.
credit: Based on a [Vega-Lite/Altair example](https://vega.github.io/vega-lite/examples/interactive_seattle_weather.html) by Jake Vanderplas.
data:
diff --git a/docs/sql/index.md b/docs/sql/index.md
index e4240218..07d0dbce 100644
--- a/docs/sql/index.md
+++ b/docs/sql/index.md
@@ -144,13 +144,13 @@ Data loading helpers generate query strings for loading data from external CSV,
import { loadCSV, loadParquet } from "@uwdata/mosaic-sql";
// Loads file.csv into the table "table1" with default options:
-// CREATE TEMP TABLE IF NOT EXISTS table1 AS
+// CREATE TABLE IF NOT EXISTS table1 AS
// SELECT *
// FROM read_csv('file.csv', auto_detect=true, sample_size=-1)
const q1 = loadCSV("table1", "file.csv");
// Load named columns from a parquet file, filtered upon load:
-// CREATE TEMP TABLE IF NOT EXISTS table2 AS
+// CREATE TABLE IF NOT EXISTS table2 AS
// SELECT foo, bar, value
// FROM read_parquet('file.parquet')
// WHERE value > 1
@@ -165,7 +165,7 @@ Meanwhile, the `loadObjects` method takes an array of JavaScript objects and gen
``` js
import { loadObjects } from "@uwdata/mosaic-sql";
-// CREATE TEMP TABLE IF NOT EXISTS table3 AS
+// CREATE TABLE IF NOT EXISTS table3 AS
// (SELECT 1 AS "foo", 2 AS "bar") UNION ALL
// (SELECT 3 AS "foo", 4 AS "bar") UNION ALL ...
const q = loadObjects("table3", [
diff --git a/packages/duckdb-server-rust/src/app.rs b/packages/duckdb-server-rust/src/app.rs
index abad25b5..086b7dbc 100644
--- a/packages/duckdb-server-rust/src/app.rs
+++ b/packages/duckdb-server-rust/src/app.rs
@@ -42,7 +42,7 @@ async fn handle_post(
pub fn app() -> Result {
// Database and state setup
- let db = ConnectionPool::new(":memory:", 1)?; // TODO: we can only use one connection since temp tables are scoped per connection
+ let db = ConnectionPool::new(":memory:", 10)?;
let cache = lru::LruCache::new(1000.try_into()?);
let state = Arc::new(AppState {
diff --git a/packages/duckdb-server-rust/src/bundle.rs b/packages/duckdb-server-rust/src/bundle.rs
index 37aeea2b..16cb11d5 100644
--- a/packages/duckdb-server-rust/src/bundle.rs
+++ b/packages/duckdb-server-rust/src/bundle.rs
@@ -117,11 +117,11 @@ pub async fn load(
}
drop(cache_lock);
- // Load precomputed temp tables into the database
+ // Load precomputed tables into the database
for table in &manifest.tables {
let file = bundle_dir.join(format!("{table}.parquet"));
db.execute(&format!(
- "CREATE TEMP TABLE IF NOT EXISTS {} AS SELECT * FROM '{}'",
+ "CREATE TABLE IF NOT EXISTS {} AS SELECT * FROM '{}'",
table,
file.display()
))
diff --git a/packages/duckdb-server-rust/src/test.rs b/packages/duckdb-server-rust/src/test.rs
index 4cbbb891..99d2b8a9 100644
--- a/packages/duckdb-server-rust/src/test.rs
+++ b/packages/duckdb-server-rust/src/test.rs
@@ -175,7 +175,7 @@ async fn create_and_load_bundle() -> Result<()> {
let cache = &Mutex::new(lru::LruCache::new(10.try_into()?));
let queries = vec![
- Query {sql: r#"CREATE TEMP TABLE IF NOT EXISTS flights AS SELECT * FROM read_parquet("data/flights-200k.parquet")"#.to_string(), alias: None},
+ Query {sql: r#"CREATE TABLE IF NOT EXISTS flights AS SELECT * FROM read_parquet("data/flights-200k.parquet")"#.to_string(), alias: None},
Query {sql: r#"SELECT count(*) FROM "flights""#.to_string(), alias: None},
];
diff --git a/packages/duckdb-server/pkg/bundle.py b/packages/duckdb-server/pkg/bundle.py
index 1f94d635..507a71c9 100644
--- a/packages/duckdb-server/pkg/bundle.py
+++ b/packages/duckdb-server/pkg/bundle.py
@@ -70,7 +70,7 @@ def load_bundle(con, cache, directory):
data = f.read()
cache[key] = ujson.loads(data) if json_file else data
- # Load precomputed temp tables into the database
+ # Load precomputed tables into the database
for table in manifest["tables"]:
file = directory / f"{table}.parquet"
- con.execute(f"CREATE TEMP TABLE IF NOT EXISTS {table} AS SELECT * FROM '{file}'")
+ con.execute(f"CREATE TABLE IF NOT EXISTS {table} AS SELECT * FROM '{file}'")
diff --git a/packages/duckdb-server/pkg/tests/test_bundle.py b/packages/duckdb-server/pkg/tests/test_bundle.py
index 5b762221..27f046b0 100644
--- a/packages/duckdb-server/pkg/tests/test_bundle.py
+++ b/packages/duckdb-server/pkg/tests/test_bundle.py
@@ -15,7 +15,7 @@ def test_bundle(bundle_dir):
con = duckdb.connect()
queries = [
- 'CREATE TEMP TABLE IF NOT EXISTS flights AS SELECT * FROM read_parquet("data/flights-200k.parquet")',
+ 'CREATE TABLE IF NOT EXISTS flights AS SELECT * FROM read_parquet("data/flights-200k.parquet")',
'SELECT count(*) FROM "flights"',
]
diff --git a/packages/duckdb/src/load/bundle.js b/packages/duckdb/src/load/bundle.js
index aff5f7f7..66d9f5dd 100644
--- a/packages/duckdb/src/load/bundle.js
+++ b/packages/duckdb/src/load/bundle.js
@@ -67,9 +67,9 @@ export async function loadBundle(db, cache, dir) {
cache.set(key, json ? JSON.parse(data) : data);
}
- // load precomputed temp tables into the database
+ // load precomputed tables into the database
for (const table of manifest.tables) {
const file = path.resolve(dir, `${table}.parquet`);
- await db.exec(`CREATE TEMP TABLE IF NOT EXISTS ${table} AS SELECT * FROM '${file}'`);
+ await db.exec(`CREATE TABLE IF NOT EXISTS ${table} AS SELECT * FROM '${file}'`);
}
}
diff --git a/packages/duckdb/test/duckdb.test.js b/packages/duckdb/test/duckdb.test.js
index df44ae84..8d108301 100644
--- a/packages/duckdb/test/duckdb.test.js
+++ b/packages/duckdb/test/duckdb.test.js
@@ -6,7 +6,7 @@ import { loadJSON } from '../src/index.js';
describe('DuckDB', () => {
beforeAll(async () => {
const file = path.resolve(__dirname, '../../../data/penguins.csv');
- await db.exec(`CREATE TEMP TABLE penguins AS SELECT * FROM '${file}'`);
+ await db.exec(`CREATE TABLE penguins AS SELECT * FROM '${file}'`);
});
afterAll(async () => {
diff --git a/packages/sql/src/load/create.js b/packages/sql/src/load/create.js
index e00bf696..1478c5af 100644
--- a/packages/sql/src/load/create.js
+++ b/packages/sql/src/load/create.js
@@ -1,6 +1,6 @@
export function create(name, query, {
replace = false,
- temp = true,
+ temp = false,
view = false
} = {}) {
return 'CREATE'
diff --git a/packages/sql/test/load.test.js b/packages/sql/test/load.test.js
index 79581aa2..04080c31 100644
--- a/packages/sql/test/load.test.js
+++ b/packages/sql/test/load.test.js
@@ -8,13 +8,12 @@ describe('loadCSV', () => {
where: 'colX > 5'
};
expect(loadCSV('table', 'data.csv', base)).toBe(
- `CREATE TEMP TABLE IF NOT EXISTS table AS SELECT colA, colB FROM read_csv('data.csv', auto_detect=true, sample_size=-1) WHERE colX > 5`
+ `CREATE TABLE IF NOT EXISTS table AS SELECT colA, colB FROM read_csv('data.csv', auto_detect=true, sample_size=-1) WHERE colX > 5`
);
const ext = {
...base,
view: true,
- temp: false,
replace: true
};
expect(loadCSV('table', 'data.csv', ext)).toBe(
@@ -33,7 +32,7 @@ describe('loadCSV', () => {
skip: 2
};
expect(loadCSV('table', 'data.csv', opt)).toBe(
- `CREATE TEMP TABLE IF NOT EXISTS table AS SELECT * FROM read_csv('data.csv', auto_detect=false, sample_size=-1, all_varchar=true, columns={'line': 'VARCHAR'}, force_not_null=['line'], new_line='\\n', header=false, skip=2)`
+ `CREATE TABLE IF NOT EXISTS table AS SELECT * FROM read_csv('data.csv', auto_detect=false, sample_size=-1, all_varchar=true, columns={'line': 'VARCHAR'}, force_not_null=['line'], new_line='\\n', header=false, skip=2)`
);
});
});
diff --git a/specs/esm/airline-travelers.js b/specs/esm/airline-travelers.js
index de6cd565..170db40a 100644
--- a/specs/esm/airline-travelers.js
+++ b/specs/esm/airline-travelers.js
@@ -2,7 +2,7 @@ import * as vg from "@uwdata/vgplot";
await vg.coordinator().exec([
vg.loadParquet("travelers", "data/travelers.parquet"),
- `CREATE TEMP TABLE IF NOT EXISTS endpoint AS SELECT * FROM travelers ORDER BY date DESC LIMIT 1`
+ `CREATE TABLE IF NOT EXISTS endpoint AS SELECT * FROM travelers ORDER BY date DESC LIMIT 1`
]);
export default vg.plot(
diff --git a/specs/esm/flights-10m.js b/specs/esm/flights-10m.js
index e596e3b0..4d1c531c 100644
--- a/specs/esm/flights-10m.js
+++ b/specs/esm/flights-10m.js
@@ -1,7 +1,7 @@
import * as vg from "@uwdata/vgplot";
await vg.coordinator().exec([
- `CREATE TEMP TABLE IF NOT EXISTS flights10m AS SELECT GREATEST(-60, LEAST(ARR_DELAY, 180))::DOUBLE AS delay, DISTANCE AS distance, DEP_TIME AS time FROM 'https://idl.uw.edu/mosaic-datasets/data/flights-10m.parquet'`
+ `CREATE TABLE IF NOT EXISTS flights10m AS SELECT GREATEST(-60, LEAST(ARR_DELAY, 180))::DOUBLE AS delay, DISTANCE AS distance, DEP_TIME AS time FROM 'https://idl.uw.edu/mosaic-datasets/data/flights-10m.parquet'`
]);
const $brush = vg.Selection.crossfilter();
diff --git a/specs/esm/gaia.js b/specs/esm/gaia.js
index a08b8852..6e61eb29 100644
--- a/specs/esm/gaia.js
+++ b/specs/esm/gaia.js
@@ -1,7 +1,7 @@
import * as vg from "@uwdata/vgplot";
await vg.coordinator().exec([
- `CREATE TEMP TABLE IF NOT EXISTS gaia AS -- compute u and v with natural earth projection
+ `CREATE TABLE IF NOT EXISTS gaia AS -- compute u and v with natural earth projection
WITH prep AS (
SELECT
radians((-l + 540) % 360 - 180) AS lambda,
diff --git a/specs/esm/linear-regression-10m.js b/specs/esm/linear-regression-10m.js
index b4457a0c..2a9f6c70 100644
--- a/specs/esm/linear-regression-10m.js
+++ b/specs/esm/linear-regression-10m.js
@@ -1,7 +1,7 @@
import * as vg from "@uwdata/vgplot";
await vg.coordinator().exec([
- `CREATE TEMP TABLE IF NOT EXISTS flights10m AS SELECT GREATEST(-60, LEAST(ARR_DELAY, 180))::DOUBLE AS delay, DISTANCE AS distance, DEP_TIME AS time FROM 'https://idl.uw.edu/mosaic-datasets/data/flights-10m.parquet'`
+ `CREATE TABLE IF NOT EXISTS flights10m AS SELECT GREATEST(-60, LEAST(ARR_DELAY, 180))::DOUBLE AS delay, DISTANCE AS distance, DEP_TIME AS time FROM 'https://idl.uw.edu/mosaic-datasets/data/flights-10m.parquet'`
]);
const $query = vg.Selection.intersect();
diff --git a/specs/esm/normalize.js b/specs/esm/normalize.js
index 59d7f7f3..555953ab 100644
--- a/specs/esm/normalize.js
+++ b/specs/esm/normalize.js
@@ -2,7 +2,7 @@ import * as vg from "@uwdata/vgplot";
await vg.coordinator().exec([
vg.loadParquet("stocks", "data/stocks.parquet"),
- `CREATE TEMP TABLE IF NOT EXISTS labels AS SELECT MAX(Date) as Date, ARGMAX(Close, Date) AS Close, Symbol FROM stocks GROUP BY Symbol`
+ `CREATE TABLE IF NOT EXISTS labels AS SELECT MAX(Date) as Date, ARGMAX(Close, Date) AS Close, Symbol FROM stocks GROUP BY Symbol`
]);
const $point = vg.Param.value(new Date("2013-05-13"));
diff --git a/specs/esm/nyc-taxi-rides.js b/specs/esm/nyc-taxi-rides.js
index baf6823a..44f1d45e 100644
--- a/specs/esm/nyc-taxi-rides.js
+++ b/specs/esm/nyc-taxi-rides.js
@@ -9,7 +9,7 @@ await vg.coordinator().exec([
"ST_Transform(ST_Point(dropoff_latitude, dropoff_longitude), 'EPSG:4326', 'ESRI:102718') AS drop"
]
}),
- `CREATE TEMP TABLE IF NOT EXISTS trips AS SELECT
+ `CREATE TABLE IF NOT EXISTS trips AS SELECT
(HOUR(datetime) + MINUTE(datetime)/60) AS time,
ST_X(pick) AS px, ST_Y(pick) AS py,
ST_X(drop) AS dx, ST_Y(drop) AS dy
diff --git a/specs/esm/unemployment.js b/specs/esm/unemployment.js
index ffff627a..fb327ead 100644
--- a/specs/esm/unemployment.js
+++ b/specs/esm/unemployment.js
@@ -4,7 +4,7 @@ await vg.coordinator().exec([
vg.loadExtension("spatial"),
vg.loadSpatial("counties", "data/us-counties-10m.json", {layer: "counties"}),
vg.loadParquet("rates", "data/us-county-unemployment.parquet"),
- `CREATE TEMP TABLE IF NOT EXISTS combined AS SELECT a.geom AS geom, b.rate AS rate FROM counties AS a, rates AS b WHERE a.id = b.id`
+ `CREATE TABLE IF NOT EXISTS combined AS SELECT a.geom AS geom, b.rate AS rate FROM counties AS a, rates AS b WHERE a.id = b.id`
]);
export default vg.vconcat(
diff --git a/specs/json/weather.json b/specs/json/weather.json
index 74121dc6..e5c1caf0 100644
--- a/specs/json/weather.json
+++ b/specs/json/weather.json
@@ -1,7 +1,7 @@
{
"meta": {
"title": "Seattle Weather",
- "description": "An interactive view of Seattle’s weather, including maximum temperature, amount of precipitation, and type of weather. By dragging on the scatter plot, you can see the proportion of days in that range that have sun, fog, drizzle, rain, or snow.\n",
+ "description": "An interactive view of Seattle's weather, including maximum temperature, amount of precipitation, and type of weather. By dragging on the scatter plot, you can see the proportion of days in that range that have sun, fog, drizzle, rain, or snow.\n",
"credit": "Based on a [Vega-Lite/Altair example](https://vega.github.io/vega-lite/examples/interactive_seattle_weather.html) by Jake Vanderplas."
},
"data": {
diff --git a/specs/ts/weather.ts b/specs/ts/weather.ts
index 5f01f802..66998ab8 100644
--- a/specs/ts/weather.ts
+++ b/specs/ts/weather.ts
@@ -3,7 +3,7 @@ import { Spec } from '@uwdata/mosaic-spec';
export const spec : Spec = {
"meta": {
"title": "Seattle Weather",
- "description": "An interactive view of Seattle’s weather, including maximum temperature, amount of precipitation, and type of weather. By dragging on the scatter plot, you can see the proportion of days in that range that have sun, fog, drizzle, rain, or snow.\n",
+ "description": "An interactive view of Seattle's weather, including maximum temperature, amount of precipitation, and type of weather. By dragging on the scatter plot, you can see the proportion of days in that range that have sun, fog, drizzle, rain, or snow.\n",
"credit": "Based on a [Vega-Lite/Altair example](https://vega.github.io/vega-lite/examples/interactive_seattle_weather.html) by Jake Vanderplas."
},
"data": {
diff --git a/specs/yaml/weather.yaml b/specs/yaml/weather.yaml
index 73321aec..a98f1d58 100644
--- a/specs/yaml/weather.yaml
+++ b/specs/yaml/weather.yaml
@@ -1,7 +1,7 @@
meta:
title: Seattle Weather
description: >
- An interactive view of Seattle’s weather, including maximum temperature, amount of precipitation, and type of weather.
+ An interactive view of Seattle's weather, including maximum temperature, amount of precipitation, and type of weather.
By dragging on the scatter plot, you can see the proportion of days in that range that have sun, fog, drizzle, rain, or snow.
credit: Based on a [Vega-Lite/Altair example](https://vega.github.io/vega-lite/examples/interactive_seattle_weather.html) by Jake Vanderplas.
data: