Project

General

Profile

Statistics
| Revision:

# Date Author Comment
13103 04/10/2014 06:38 AM Aaron Marcuse-Kubitza

removed old version validation/aggregating/plots/SALVIAS/bien3_validations_salvias_db_original.sql. use validation/aggregating/plots/SALVIAS/_archive/bien3_validations_salvias_db_original.sql instead.

13102 04/10/2014 06:19 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: updated to inputs/NY/validations.sql

13101 04/10/2014 06:17 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: updated to DB

13087 04/10/2014 02:07 AM Aaron Marcuse-Kubitza

bugfix: schemas/vegbien.sql, inputs/NY/validations.sql, validation/aggregating/specimens/qualitative_validations_specimens.sql: _specimens_12_distinct_collector_name_collect_num_date_w_count: dateCollected: cast this to text rather than date because some values for this field are not valid dates and will throw an error if cast to date

13085 04/09/2014 06:23 PM Aaron Marcuse-Kubitza

validation/aggregating/pipeline/aggregating_validations_pipeline.odg: show that the staging table(s) are denormalized before running the input queries on them. clarified that what is compared are the input and output query results, not the queries themselves.

13083 04/09/2014 02:48 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: removed `public.` prefix to avoid cluttering up the SQL

13082 04/09/2014 02:46 PM Aaron Marcuse-Kubitza

bugfix: schemas/vegbien.sql, validation/aggregating/specimens/qualitative_validations_specimens.sql: _specimens_10_count_number_of_records_by_institution: need to dereference specimenreplicate.duplicate_institutions_sourcelist_id to the corresponding sourcelist.name

13080 04/09/2014 02:25 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: synced to schemas/vegbien.sql so that it can be diffed with it to sync qualitative_validations_specimens.sql to the DB

13074 04/08/2014 02:55 PM Aaron Marcuse-Kubitza

validation/aggregating/pipeline/validations_on_sparse_datasources.odg: not applicable "✓": increased font size so the size of the character matches the surrounding text

13073 04/08/2014 02:52 PM Aaron Marcuse-Kubitza

validation/aggregating/pipeline/validations_on_sparse_datasources.odg: removed = lines for each input query, because they clutter up the diagram and the "same, so don't need to rewrite" message now shows this as well

13072 04/08/2014 02:50 PM Aaron Marcuse-Kubitza

validation/aggregating/pipeline/validations_on_sparse_datasources.odg: added the denormalized VegCore schema approach for comparison, as requested by Mark

13064 04/07/2014 06:09 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: removed DDL statements, using the steps at wiki.vegpath.org/Aggregating_validations_refactoring#remove-DDL-statements

13062 04/07/2014 05:51 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: parameterize queries by datasource

13061 04/07/2014 05:35 PM Aaron Marcuse-Kubitza

validation/aggregating/**.sql output queries: use `SET join_collapse_limit = 1;` to match public_validations.rematerialize_out_view()

13059 04/07/2014 04:35 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: _specimens_12_distinct_collector_name_collect_num_date_w_count: turn off join_collapse_limit instead of enable_mergejoin/enable_hashjoin, because join_collapse_limit is something that we will eventually want to turn off for all queries, which would avoid this query needing special handling. (on the other hand, enable_mergejoin/enable_hashjoin may be necessary for some queries and we probably won't turn them off for all queries.)

13054 04/03/2014 07:31 PM Aaron Marcuse-Kubitza

added validation/aggregating/pipeline/validations_on_sparse_datasources.odg

13049 04/03/2014 08:53 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_14_count_of_all_invalid_verbatim_lat_long

13048 04/03/2014 08:35 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_12_distinct_collector_name_collect_num_date_w_count

13047 04/03/2014 08:04 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: _specimens_13_count_of_all_verbatim_and_decimal_lat_long: fixed whitespace

13046 04/03/2014 07:32 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: removed trailing whitespace

13045 04/03/2014 07:31 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_13_count_of_all_verbatim_and_decimal_lat_long

13044 04/02/2014 05:55 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_11_list_of_three_standard_political_divisions

13043 04/02/2014 05:36 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: *_of_species_binomials: switched back to the old queries that use the split-apart ranks instead of the concatenated taxon name. note that these will not work on all specimens datasources, but now that #6,7 were selected to use the concatenated taxon name, this isn't a problem.

13042 04/02/2014 05:21 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql, NY/qualitative_validations_source_db_NYBG.VegCore.sql, inputs/NY/validations.sql: *_of_species_binomials: renamed columns to species_binomial to reflect reverted query name

13041 04/02/2014 05:16 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql, NY/qualitative_validations_source_db_NYBG.VegCore.sql, inputs/NY/validations.sql: *_of_verbatim_species_excluding_author: renamed to *_species_binomials for clarity

13040 04/02/2014 05:14 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql, NY/qualitative_validations_source_db_NYBG.VegCore.sql, inputs/NY/validations.sql: _specimens_04_count_of_unique_verbatim_species_with_author, _specimens_05_list_of_unique_verbatim_species_with_author: switched back to original names because #6,7 now do the same thing as #4,5, so we should include the differing result set of #4,5 for datasources that provide it

13039 04/02/2014 05:01 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_10_count_number_of_records_by_institution

13038 04/02/2014 04:38 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql, NY/qualitative_validations_source_db_NYBG.VegCore.sql, inputs/NY/validations.sql: use taxon_name*_with_author everywhere instead of custom column names, for consistency

13037 04/02/2014 04:09 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql, NY/qualitative_validations_source_db_NYBG.VegCore.sql, inputs/NY/validations.sql: *_of_verbatim_subspecific_taxa_without_author, etc.: renamed to *_with_author because these now use the concatenated name, rather than the without-author name that only some specimens datasources provide

13036 04/02/2014 04:03 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_06_count_of_unique_verb_subsp_taxa_without_author, _specimens_07_list_of_verbatim_subspecific_taxa_without_author

13035 04/02/2014 03:54 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql, NY/qualitative_validations_source_db_NYBG.VegCore.sql, inputs/NY/validations.sql: *_verbatim_species_without_author, etc.: renamed to *_with_author because these now use the concatenated name, rather than the without-author name that only some specimens datasources provide

13034 04/02/2014 03:14 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: removed extra ; at ends of queries

13033 04/02/2014 03:13 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: use the concatenated taxon name instead of concatenating the ranks, as decided in the 2014-03-27 conference call (wiki.vegpath.org/2014-03-27_conference_call#aggregating-validations)

13032 04/02/2014 03:05 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: use the concatenated taxon name instead of concatenating the ranks, as decided in the 2014-03-27 conference call (wiki.vegpath.org/2014-03-27_conference_call#aggregating-validations)

12965 03/28/2014 07:10 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: use taxonoccurrence instead of location as the table that all specimens should have, as decided in the 2014-03-27 conference call (wiki.vegpath.org/2014-03-27_conference_call#aggregating-validations)

12945 03/27/2014 10:29 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: stage I: clarified that the database input is intended to be a normalized input, and its corresonding output is intended to be denormalized

12944 03/27/2014 09:02 AM Aaron Marcuse-Kubitza

bugfix: validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: _specimens_16_list_distinct_specimen_descriptions: should use DISTINCT

12943 03/27/2014 09:01 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_16_list_distinct_specimen_descriptions

12942 03/27/2014 09:00 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_16_list_distinct_specimen_descriptions

12941 03/27/2014 08:53 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_15_list_distinct_locality_descriptions

12940 03/27/2014 08:48 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_09_list_of_unique_verbatim_author_taxa_with_genus

12939 03/27/2014 08:47 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_08_count_of_unique_verbatim_author_taxa_with_genus

12938 03/27/2014 08:36 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_05_list_of_verbatim_species_excluding_author

12937 03/27/2014 08:35 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_04_count_of_unique_verbatim_species_without_author

12936 03/27/2014 08:23 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_03_list_of_verbatim_families

12935 03/27/2014 08:18 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_02_count_of_unique_verbatim_families

12932 03/27/2014 07:35 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: implemented _specimens_01_count_of_total_records_specimens_in_source_db

12931 03/27/2014 07:34 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: added config statements for datasource and query planner

12926 03/27/2014 04:13 AM Aaron Marcuse-Kubitza

fix: validation/aggregating/specimens/qualitative_validations_specimens.sql: use pg_dump's formatting for COMMENT ON to facilitate diffing against a pg_dump export of the DDL statements

12925 03/27/2014 04:07 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: removed DDL statements so that running the query file does not alter the database, using the steps at wiki.vegpath.org/Aggregating_validations_refactoring#remove-DDL-statements

12924 03/27/2014 04:01 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: updated to DB, which pg_dump-formats the views

12923 03/27/2014 03:57 AM Aaron Marcuse-Kubitza

validation/**.sql: replaced CREATE OR REPLACE VIEW with CREATE VIEW to match pg_dump output for diffing

12921 03/27/2014 03:34 AM Aaron Marcuse-Kubitza

fix: validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: use pg_dump's formatting for COMMENT ON to facilitate diffing against a pg_dump export of the DDL statements

12918 03/26/2014 09:34 PM Aaron Marcuse-Kubitza

fix: validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: decimalLatitude/decimalLongitude: need to cast to double precision for numeric comparisons

12917 03/26/2014 09:33 PM Aaron Marcuse-Kubitza

fix: validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: CollectedDate: updated for refreshed NY data

12916 03/26/2014 09:30 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: fixed typos in column aliases

12915 03/26/2014 09:23 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: translated column names to VegCore, using `bin/in_place validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql env text=1 bin/repl inputs/NY/Ecatalog_all/map.csv` from the steps at wiki.vegpath.org/Aggregating_validations_refactoring#translate-to-Postgres

12913 03/26/2014 07:16 PM Aaron Marcuse-Kubitza

bugfix: validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: need to enclose additional mixed-case identifiers in "", using the steps at wiki.vegpath.org/Aggregating_validations_refactoring#translate-to-Postgres

12912 03/26/2014 07:15 PM Aaron Marcuse-Kubitza

bugfix: validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: need to enclose additional mixed-case identifiers in "", using the steps at wiki.vegpath.org/Aggregating_validations_refactoring#translate-to-Postgres

12911 03/26/2014 06:09 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql, NY/qualitative_validations_source_db_NYBG.VegCore.sql: abbreviated view names longer than 63 chars to prevent them from being truncated

12910 03/26/2014 06:07 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: escape any ' inside '...' by doubling them

12909 03/26/2014 06:04 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: translated SQL to Postgres

12908 03/26/2014 05:32 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql, NY/qualitative_validations_source_db_NYBG.VegCore.sql: changed /* */ comments to COMMENT ON comments, using the steps at wiki.vegpath.org/Aggregating_validations_refactoring#prepend-CREATE-VIEW

12907 03/26/2014 04:58 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql, NY/qualitative_validations_source_db_NYBG.VegCore.sql: removed no longer needed -- comments containing the query name, using the steps at wiki.vegpath.org/Aggregating_validations_refactoring#prepend-CREATE-VIEW

12906 03/26/2014 03:47 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: moved notes to comments to after the query

12905 03/26/2014 03:46 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: moved notes to comments to after the query

12904 03/26/2014 03:44 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: moved "Check" comments to after the query, using the steps at wiki.vegpath.org/Aggregating_validations_refactoring#translate-to-Postgres

12903 03/26/2014 03:22 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: removed "Check: should return [#] rows" comments because these only apply to the NY results, not to all specimens datasources

12902 03/26/2014 03:16 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: prepended CREATE VIEW, using the steps at wiki.vegpath.org/Aggregating_validations_refactoring#prepend-CREATE-VIEW and the same abbreviations as the output queries (validation/aggregating/specimens/qualitative_validations_specimens.sql)

12901 03/26/2014 03:01 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: synced "Check" comments to output queries validation/aggregating/specimens/qualitative_validations_specimens.sql

12900 03/26/2014 02:49 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: enclosed mixed-case identifiers in "" using the steps at wiki.vegpath.org/Aggregating_validations_refactoring#translate-to-Postgres

12899 03/26/2014 02:37 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: translated column names to VegCore, using `bin/in_place validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql env text=1 bin/repl inputs/NY/Ecatalog_all/map.csv` from the steps at wiki.vegpath.org/Aggregating_validations_refactoring#translate-to-Postgres

12898 03/26/2014 02:29 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: updated to use column names for refreshed NY data

12896 03/26/2014 12:02 AM Aaron Marcuse-Kubitza

validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql: use our staging tables instead of the BIEN2 MySQL staging tables

12895 03/25/2014 11:52 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/**.sql: removed trailing whitespace, using the steps at wiki.vegpath.org/Aggregating_validations_refactoring#translate-to-Postgres

12894 03/25/2014 11:39 PM Aaron Marcuse-Kubitza

archived validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.sql

12893 03/25/2014 11:39 PM Aaron Marcuse-Kubitza

added validation/aggregating/specimens/NY/qualitative_validations_source_db_NYBG.VegCore.sql, copied from qualitative_validations_source_db_NYBG.sql

12892 03/25/2014 11:33 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: added ; at end of `CREATE OR REPLACE VIEW` statements

12890 03/24/2014 06:22 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: removed input-query-specific comments

12889 03/24/2014 06:21 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: reworded rowcount check comments to apply to the output queries

12888 03/24/2014 06:18 PM Aaron Marcuse-Kubitza

validation/aggregating/specimens/qualitative_validations_specimens.sql: shortened view names to fit within the 63-char limit without truncation

12884 03/24/2014 05:22 PM Aaron Marcuse-Kubitza

fix: validation/aggregating/specimens/qualitative_validations_specimens.sql: changed "Full inner join" to "Full outer join" because a FULL JOIN is a type of outer join, not inner join

12682 03/13/2014 05:14 PM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: updated to DB

12681 03/13/2014 05:13 PM Aaron Marcuse-Kubitza

fix: validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: removed `public.` qualifier

12678 03/13/2014 09:08 AM Aaron Marcuse-Kubitza

validation/aggregating/plots/FIA/bien3_validations_fia_input.sql: _plots_19_count_of_inventories_per_plot_in_each_project: renamed to _plots_19_count_of_censuses_per_plot_in_each_project for clarity

12677 03/13/2014 09:00 AM Aaron Marcuse-Kubitza

validation/aggregating/plots/FIA/bien3_validations_fia_input.sql*: updated from Brad's latest e-mail

12650 03/12/2014 01:11 PM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: updated to DB

12646 03/12/2014 03:44 AM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: updated to DB

12645 03/12/2014 03:44 AM Aaron Marcuse-Kubitza

fix: validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: removed `public.` qualifier

12641 03/12/2014 12:04 AM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: updated to DB

12639 03/11/2014 09:57 PM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: updated to DB

12634 03/07/2014 09:53 PM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: updated to DB

12628 03/07/2014 05:51 AM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: added `SET enable_seqscan = off;` to match what is done by rematerialize_out_view() to run the queries properly

12627 03/07/2014 05:42 AM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: updated to DB

12612 03/06/2014 11:06 AM Aaron Marcuse-Kubitza

bugfix: validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: need to escape the quotes in \set ... 'SALVIAS'

12611 03/06/2014 11:04 AM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: removed `SET search_path TO public;` since this is the default

12610 03/06/2014 11:03 AM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: search_path: removed public_validations since we are not creating views

12609 03/06/2014 11:02 AM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: use psql var :datasource instead of current_schema() so that the queries are runnable without special configuration of the search_path

12608 03/06/2014 10:59 AM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: removed `CREATE OR REPLACE VIEW` so the validations views are not unintentionally replaced when running this file

12607 03/06/2014 10:57 AM Aaron Marcuse-Kubitza

validation/aggregating/plots/bien3_validations_salvias_vegbien.sql: updated from DB