text:
From PostgreSQL wiki
(→Vacuum: Add: |Improve setting of visibility map bits for read-only and insert-only workloads)
(→SQL Commands: Add: |IS NULL testing of nested ROW() values is inconsistent)
|Line 962:
|Line 962:
|Fix nested CASE-WHEN constructs
|Fix nested CASE-WHEN constructs
* http://firstname.lastname@example.com
* http://firstname.lastname@example.com
Revision as of 14:57, 7 September 2013
This list contains known PostgreSQL bugs and feature requests and we hope it is complete. If you would like to work on an item, please read the Developer FAQ first. There is also a development information page.
- - marks ordinary, incomplete items
- [E] - marks items that are easier to implement
- [D] - marks changes that are done, and will appear in the PostgreSQL 9.4 release.
For help on editing this list, please see Talk:Todo. Please do not add items here without discussion on the mailing list.
For Developers: Unfortunately this list does not contain all the information necessary for someone to start coding a feature. Some of these items might have become unnecessary since they were added --- others might be desirable but the implementation might be unclear. When selecting items listed below, be prepared to first discuss the value of the feature. Do not assume that you can select one, code it and then expect it to be committed. Always discuss design on Hackers list before starting to code. The flow should be:
Desirability -> Design -> Implement -> Test -> Review -> Commit
- Allow administrators to cancel multi-statement idle transactions
- This allows locks to be released, but it is complex to report the cancellation back to the client.
- Check for unreferenced table files created by transactions that were in-progress when the server terminated abruptly
- Set proper permissions on non-system schemas during db creation
- Currently all schemas are owned by the super-user because they are copied from the template1 database. However, since all objects are inherited from the template database, it is not clear that setting schemas to the db owner is correct.
- Allow log_min_messages to be specified on a per-module basis
- This would allow administrators to see more detailed information from specific sections of the backend, e.g. checkpoints, autovacuum, etc. Another idea is to allow separate configuration files for each module, or allow arbitrary SET commands to be passed to them. See also Logging Brainstorm.
- Simplify creation of partitioned tables
- This would allow creation of partitioned tables without requiring creation of triggers or rules for INSERT/UPDATE/DELETE, and constraints for rapid partition selection. Options could include range and hash partition selection. See also Table partitioning
- Allow custom variables to appear in pg_settings()
- Have custom variables be transaction-safe
- Implement the SQL-standard mechanism whereby REVOKE ROLE revokes only the privilege granted by the invoking role, and not those granted by other roles
- Prevent query cancel packets from being replayed by an attacker, especially when using SSL
- Provide a way to query the log collector subprocess to determine the name of the currently active log file
- Allow simpler reporting of the unix domain socket directory and allow easier configuration of its default location
- Allow custom daemons to be automatically stopped/started along with the postmaster
- This allows easier administration of daemons like user job schedulers or replication-related daemons.
- Improve logging of prepared transactions recovered during startup
Configuration files
- Allow postgresql.conf file values to be changed via an SQL API, perhaps using SET GLOBAL
- Consider normalizing fractions in postgresql.conf, perhaps using '%'
- Allow Kerberos to disable stripping of realms so we can check the username@realm against multiple realms
- Improve LDAP authentication configuration options
- Add external tool to auto-tune some postgresql.conf parameters
- Add 'hostgss' pg_hba.conf option to allow GSS link-level encryption
- Process pg_hba.conf keywords as case-insensitive
- Create utility to compute accurate random_page_cost value
- Allow configuration files to be independently validated
- Allow postgresql.conf settings to be accepted by backends even if some settings are invalid for those backends
- Allow all backends to receive postgresql.conf setting changes at the same time
- Allow synchronous_standby_names to be disabled after communication failure with all synchronous standby servers exceeds some timeout
- This also requires successful execution of a synchronous notification command.
- Allow a database in tablespace t1 with tables created in tablespace t2 to be used as a template for a new database created with default tablespace t2
- Currently all objects in the default database tablespace must have default tablespace specifications. This is because new databases are created by copying directories. If you mix default tablespace tables and tablespace-specified tables in the same directory, creating a new database from such a mixed directory would create a new database with tables that had incorrect explicit tablespaces. To fix this would require modifying pg_class in the newly copied database, which we don't currently do.
- Allow reporting of which objects are in which tablespaces
- This item is difficult because a tablespace can contain objects from multiple databases. There is a server-side function that returns the databases which use a specific tablespace, so this requires a tool that will call that function and connect to each database to find the objects in each database for that tablespace.
- Allow WAL replay of CREATE TABLESPACE to work when the directory structure on the recovery computer is different from the original
- Allow tablespaces on RAM-based partitions for unlogged tables
- Allow toast tables to be moved to a different tablespace
Statistics Collector
- Allow statistics last vacuum/analyze execution times to be displayed without requiring track_counts to be enabled
- Clear table counters on TRUNCATE
- Allow SSL authentication/encryption over unix domain sockets
- Allow SSL key file permission checks to be optionally disabled when sharing SSL keys with other applications
- Allow SSL CRL files to be re-read during configuration file reload, rather than requiring a server restart
Unlike SSL CRT files, CRL (Certificate Revocation List) files are updated frequently
Alternatively or additionally supporting OCSP (online certificate security protocol) would provide real-time revocation discovery without reloading
- Allow automatic selection of SSL client certificates from a certificate store
- Send the full certificate server chain to the client
Point-In-Time Recovery (PITR)
- Allow archive_mode to be changed without server restart?
- Consider avoiding WAL switching via archive_timeout if there has been no database activity
- Allow base backup from standby to continue when the standby is promoted.
- Add recovery target option to stop as soon as consistency is reached.
Standby server mode
- Allow pg_xlogfile_name() to be used in recovery mode
- Prevent variables inherited from the server environment from begin used for making streaming replication connections.
- Change walsender so that it applies per-role settings
- Restructure configuration parameters for standby mode
- Add a new "eager" synchronous mode that starts out synchronous but reverts to asynchronous after a failure timeout period
- This would require some type of command to be executed to alert administrators of this change.
Data Types
- Fix data types where equality comparison is not intuitive, e.g. box
- Add support for public SYNONYMs
- Add support for SQL-standard GENERATED/IDENTITY columns
- Consider placing all sequences in a single table, or create a system view
- Consider a special data type for regular expressions
- Reduce BIT data type overhead using short varlena headers
- Support scoped IPv6 addresses in the inet type
- Considering improving performance of computing CHAR() value lengths
- Add overlaps geometric operators that ignore point overlaps
- Remove or improve rounding in geometric comparison operators
- Add IMMUTABLE column attribute
- Allow functions defined as casts to domains to be called during casting
- Allow values to be cast to domain types
- Make domains work better with polymorphic functions
Dates and Times
- Allow infinite intervals just like infinite timestamps
- Determine how to represent date/time field extraction on infinite timestamps
- Allow TIMESTAMP WITH TIME ZONE to store the original timezone information, either zone name or offset from UTC
- If the TIMESTAMP value is stored with a time zone name, interval computations should adjust based on the time zone rules.
- Have timestamp subtraction not call justify_hours()?
- Improve TIMESTAMP WITH TIME ZONE subtraction to be DST-aware
- Currently subtracting one date from another that crosses a daylight savings time adjustment can return '1 day 1 hour', but adding that back to the first date returns a time one hour in the future. This is caused by the adjustment of '25 hours' to '1 day 1 hour', and '1 day' is the same time the next day, even if daylight savings adjustments are involved.
- Add function to allow the creation of timestamps using parameters
- Allow a comma to denote fractional seconds in ISO-8601-compliant times (and timestamps)
- Add support for arrays of domains
- Add function to detect if an array is empty
- Improve handling of empty arrays
- Improve handling of NULLs in arrays
Binary Data
- Allow read/write into TOAST values like large objects
- Writing might require the TOAST column to be stored EXTERNAL.
MONEY Data Type
- Add locale-aware MONEY type, and support multiple currencies
Text Search
- Allow dictionaries to change the token that is passed on to later dictionaries
- Exact phrase search,
- Consider a function-based API for '@@' searches
- Improve text search error messages
- Consider changing error to warning for strings larger than one megabyte
- tsearch and tsdicts regression tests fail in Turkish locale on glibc
- tsquery negator operator treated as part of lexeme
- Improve handling of dash and plus signs in email address user names, and perhaps improve URL parsing
- Improve default parser, to more easily allow adding new tokens
- Add additional support functions
- Allow XML arrays to be cast to other data types
- Allow reliable XML operation non-UTF8 server encodings (xpath(), in particular, is known to not work)
- Move XSLT from contrib/xml2 to a more reasonable location
- Report errors returned by the XSLT library
- Improve the XSLT parameter passing API
- XML Canonical: Convert XML documents to canonical form to compare them. libxml2 has support for this.
- Add pretty-printed XML output option
- Parse a document and serialize it back in some indented form. libxml2 might support this.
- Allow XML sthredding
- In some cases shredding could be better option (if there is no need to keep XML docs entirely, e.g. if we have already developed tools that understand only relational data. This would be a separate module that implements annotated schema decomposition technique, similar to DB2 and SQL Server functionality.
- xpath_table needs to be implemented/implementable to get rid of contrib/xml2 [10]
- xpath_table is pretty broken anyway [11]
- Improve handling of PIs and DTDs in xmlconcat() [14]
- Restructure XML and /contrib/xml2 functionality
- Add an INET overlaps operator, for use by exclusion constraints
- Enforce typmod for function inputs, function results and parameters for spi_prepare'd statements called from PLs
- Fix IS OF so it matches the ISO specification, and add documentation
- Implement Boyer-Moore searching in LIKE queries
- Prevent malicious functions from being executed with the permissions of unsuspecting users
- Index functions are safe, so VACUUM and ANALYZE are safe too. Triggers, CHECK and DEFAULT expressions, and rules are still vulnerable.
- Reduce memory usage of aggregates in set returning functions
- Fix /contrib/ltree operator
- Fix /contrib/btree_gist's implementation of inet indexing
- Fix inconsistent precedence of =, >, and < compared to <>, >=, and <=
- Fix regular expression bug when using complex back-references
- Have /contrib/dblink reuse unnamed connections
- Improve formatting of pg_get_viewdef() output
- Add function to dump pg_depend information cleanly
- Add function to allow easier transaction id comparisons
Character Formatting
- Add missing parameter handling in to_char()
- Throw an error from to_char() instead of printing a string of "#" when a number doesn't fit in the desired output format.
- discussed in "to_char, support for EEEE format"
- Allow to_char() on interval values to accumulate the highest unit requested
Some special format flag would be required to request such accumulation. Such functionality could also be added to EXTRACT. Prevent accumulation that crosses the month/day boundary because of the uneven number of days in a month.
- to_char(INTERVAL '1 hour 5 minutes', 'MI') => 65
- to_char(INTERVAL '43 hours 20 minutes', 'MI' ) => 2600
- to_char(INTERVAL '43 hours 20 minutes', 'WK:DD:HR:MI') => 0:1:19:20
- to_char(INTERVAL '3 years 5 months','MM') => 41
- Fix to_number() handling for values not matching the format string
Multi-Language Support
- Add a cares-about-collation column to pg_proc, so that unresolved-collation errors can be thrown at parse time
- Integrate collations with text search configurations
- Integrate collations with to_char() and related functions
- Support collation-sensitive equality and hashing functions
- Add a LOCALE option to CREATE DATABASE, as a shorthand
- Add URL to more complete multi-byte regression tests
- Fix contrib/fuzzystrmatch to work with multibyte encodings
- Change memory allocation for multi-byte functions so memory is allocated inside conversion functions
- Currently we preallocate memory based on worst-case usage.
- Add ability to use case-insensitive regular expressions on multi-byte characters
- Currently it works for UTF-8, but not other multi-byte encodings
- Improve encoding of connection startup messages sent to the client
- Currently some authentication error messages are sent in the server encoding
- More sensible support for Unicode combining characters, normal forms
Views and Rules
- Allow VIEW/RULE recompilation when the underlying tables change
- This is both difficult and controversial.
- Make it possible to use RETURNING together with conditional DO INSTEAD rules, such as for partitioning setups
- Improve ability to modify views via ALTER TABLE
SQL Commands
- Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT
- Improve type determination of unknown (NULL or quoted literal) result columns for UNION/INTERSECT/EXCEPT
- Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY
- Allow prepared transactions with temporary tables created and dropped in the same transaction, and when an ON COMMIT DELETE ROWS temporary table is accessed
- Add SQL-standard MERGE/REPLACE/UPSERT command
- MERGE is typically used to merge two tables. REPLACE or UPSERT command does UPDATE, or on failure, INSERT. See SQL MERGE for notes on the implementation details.
- Add NOVICE output level for helpful messages
- For example, have it warn about unjoined tables. This could also control automatic sequence/index creation messages.
- Allow the count returned by SELECT, etc to be represented as an int64 to allow a higher range of values
- Add support for WITH RECURSIVE ... CYCLE
- Add DEFAULT .. AS OWNER so permission checks are done as the table owner
- This would be useful for SERIAL nextval() calls and CHECK constraints.
- Add comments on system tables/columns using the information in catalogs.sgml
- Ideally the information would be pulled from the SGML file automatically.
- Prevent the specification of conflicting transaction read/write options
- Allow DELETE and UPDATE to be used with LIMIT and ORDER BY
- Have DISCARD PLANS discard plans cached by functions
- DISCARD all should do the same.
- Avoid multiple-evaluation of BETWEEN and IN arguments containing volatile expressions
- Fix nested CASE-WHEN constructs
- IS NULL testing of nested ROW() values is inconsistent
- Have WITH CONSTRAINTS also create constraint indexes
- Move NOT NULL constraint information to pg_constraint
- Currently NOT NULL constraints are stored in pg_attribute without any designation of their origins, e.g. primary keys. One manifest problem is that dropping a PRIMARY KEY constraint does not remove the NOT NULL constraint designation. Another issue is that we should probably force NOT NULL to be propagated from parent tables to children, just as CHECK constraints are. (But then does dropping PRIMARY KEY affect children?)
- Prevent concurrent CREATE TABLE from sometimes returning a cryptic error message
- Fix CREATE OR REPLACE FUNCTION to not leave objects depending on the function in inconsistent state
- Allow temporary tables to exist as empty by default in all sessions
- Allow the creation of "distinct" types
- Consider analyzing temporary tables when they are first used in a query
- Autovacuum cannot analyze or vacuum temporary tables.
- Allow an unlogged table to be changed to logged
- Allow UPDATE tab SET ROW (col, ...) = (SELECT...)
- Research self-referential UPDATEs that see inconsistent row versions in read-committed mode
- Improve performance of EvalPlanQual mechanism that rechecks already-updated rows
- This is related to the previous item, which questions whether it even has the right semantics
- Have ALTER TABLE RENAME of a SERIAL column rename the sequence
- Have ALTER SEQUENCE RENAME rename the sequence name stored in the sequence table
- Allow moving system tables to other tablespaces, where possible
- Currently non-global system tables must be in the default database tablespace. Global system tables can never be moved.
- Allow column display reordering by recording a display, storage, and permanent id for every column?
- Allow deactivating (and reactivating) indexes via ALTER TABLE
- Add ALTER OPERATOR ... RENAME
- needs to consider effects of changing operator precedence
- Automatically maintain clustering on a table
- This might require some background daemon to maintain clustering during periods of low usage. It might also require tables to be only partially filled for easier reorganization. Another idea would be to create a merged heap/index data file so an index lookup would automatically access the heap data too. A third idea would be to store heap rows in hashed groups, perhaps using a user-supplied hash function.
- Allow CLUSTER to be used on a partial index
- Allow COPY to report error lines and continue
- This requires the use of a savepoint before each COPY line is processed, with ROLLBACK on COPY failure.
- Allow COPY FROM to create index entries in bulk
- Allow COPY in CSV mode to control whether a quoted zero-length string is treated as NULL
- Currently this is always treated as a zero-length string, which generates an error when loading into an integer column
- Improve COPY performance
- Allow COPY to report errors sooner
- Allow COPY to handle other number formats
- E.g. the German notation. Best would be something like WITH DECIMAL ','.
- Allow a stalled COPY to exit if the backend is terminated
- Allow COPY "text" format to output a header
- Allow dropping of a role that has connection rights
- Provide some guarantees about the behavior of cursors that invoke volatile functions
- Rationalize the discrepancy between settings that use values in bytes and SHOW that returns the object count
- Have EXPLAIN ANALYZE issue NOTICE messages when the estimated and actual row counts differ by a specified percentage
- Have EXPLAIN ANALYZE report rows as floating-point numbers
- Improve how ANALYZE computes in-doubt tuples
Window Functions
See TODO items for window functions.
- Support creation of user-defined window functions
- We have the ability to create new window functions written in C. Is it worth the effort to create an API that would let them be written in PL/pgsql, etc?
- Implement full support for window framing clauses
In addition to done clauses described in the latest doc, these clauses are not implemented yet.
- Investigate tuplestore performance issues
- The tuplestore_in_memory() thing is just a band-aid, we ought to try to solve it properly. tuplestore_advance seems like a weak spot as well.
- Teach planner to evaluate multiple windows in the optimal order
- Currently windows are always evaluated in the query-specified order.
Integrity Constraints
Referential Integrity
- Change foreign key constraint for array -> element to mean element in array?
- Fix problem when cascading referential triggers make changes on cascaded tables, seeing the tables in an intermediate state
- Are ri_KeysEqual checks in the RI enforcement triggers still necessary?
Check Constraints
- Run check constraints only when affected columns are changed
Server-Side Languages
- Add more fine-grained specification of functions taking arbitrary data types
- Implement stored procedures
- This might involve the control of transaction state and the return of multiple result sets
SQL-Language Functions
- Rethink query plan caching and timing of parse analysis within SQL-language functions
- They should work more like plpgsql functions do ...
- Allow listing of record column names, and access to record columns via variables, e.g. columns := r.(*), tval2 := r.(colname)
- Allow row and record variables to be set to NULL constants, and allow NULL tests on such variables
- Because a row is not scalar, do not allow assignment from NULL-valued scalars.
- Consider keeping separate cached copies when search_path changes
- Improve handling of NULL row values vs. NULL rows
- Improve PERFORM handling of WITH queries or document limitation
- Create a new restricted execution class that will allow passing function arguments in as locals. Passing them as globals means functions cannot be called recursively.
- Add a DB-API compliant interface on top of the SPI interface
- For functions returning a setof record with a composite type, cache the I/O functions for the composite type
- Add a function like pg_get_indexdef() that report more detailed index information
- Split out pg_resetxlog output into pre- and post-sections
- Improve pg_ctl's detection of running postmasters
- Add additional shutdown modes, and change the default?
- Have psql \ds show all sequences and their settings
- Move psql backslash database information into the backend, use mnemonic commands?
- This would allow non-psql clients to pull the same information out of the database as psql.
- Make psql's \d commands more consistent in their handling of schemas
- Make psql's \d commands distinguish default privileges from no privileges
- ACL displays were visibly different for the two cases before we "improved" them by using array_to_string.
- [E] \s without arguments (display history) fails with libedit, doesn't use pager either
- Add a \set variable to control whether \s displays line numbers
- Another option is to add \# which lists line numbers, and allows command execution.
- Include the symbolic SQLSTATE name in verbose error reports
- Add prompt escape to display the client and server versions
- Add option to wrap column values at whitespace boundaries, rather than chopping them at a fixed width.
- Currently, "wrapped" format chops values into fixed widths. Perhaps the word wrapping could use the same algorithm documented in the W3C specification.
- Support the ReST table output format
- Details about the ReST format: http://docutils.sourceforge.net/rst.html#reference-documentation
- Add option to print advice for people familiar with other databases
- Add ability to edit views with \ev
- Fix FETCH_COUNT to handle SELECT ... INTO and WITH queries
- Prevent psql from sending remaining single-line multi-statement queries after reconnecting
- [E] Add \i option to bring in the specified file as a quoted literal
- This would be useful for creating functions and other areas. Details still need to be worked out.
- Allow processing of multiple -f (file) options
- Improve line drawing characters
- Consider improving the continuation prompt
- Improve speed of tab completion by using LIKE
pg_dump / pg_restore
- [E] Add full object name to the tag field. eg. for operators we need '=(integer, integer)', instead of just '='.
- [E] Modify pg_dump to create skeleton views for reload (which are then updated via CREATE OR REPLACE VIEW) when views have circular dependencies. This should eliminate the need for the CREATE RULE "_RETURN" hack currently used to address this issue. Thread and additional information here:
- Add pg_dumpall custom format dumps?
- Avoid using platform-dependent locale names in pg_dumpall output
- Using native locale names puts roadblocks in the way of porting a dump to another platform. One possible solution is to get CREATE DATABASE to accept some agreed-on set of locale names and fix them up to meet the platform's requirements.
- Allow pg_dump --clean to drop roles that own objects or have privileges
- tgl says: if this is about pg_dumpall, it's done as of 8.4. If it's really about pg_dump, what does it mean? pg_dump has no business dropping roles.
- Remove support for dumping from pre-7.3 servers
- In 7.3 and later, we can get accurate dependency information from the server. pg_dump still contains a lot of crufty code to try to deal with the lack of dependency info in older servers, but the usefulness of maintaining that code grows small.
- Refactor handling of database attributes between pg_dump and pg_dumpall
- Currently only pg_dumpall emits database attributes, such as ALTER DATABASE SET commands and database-level GRANTs. Many people wish that pg_dump would do that. One proposal is to let pg_dump issue such commands if the -C switch was used, but it's unclear whether that will satisfy the demand.
- Change pg_dump so that a comment on the dumped database is applied to the loaded database, even if the database has a different name.
- This will require new backend syntax, perhaps COMMENT ON CURRENT DATABASE. This is related to the previous item.
- Allow parallel restore of tar dumps
- Preserve sparse storage of large objects over dump/restore
- Docs
- Document differences between ecpg and the SQL standard and information about the Informix-compatibility module.
- Provide a way to specify size of a bytea parameter
- [E] Fix small memory leaks in ecpg
- Memory leaks in a short running application like ecpg are not really a problem, but make debugging more complicated
- Allow reuse of cursor name variables
- Prevent PQfnumber() from lowercasing unquoted column names
- PQfnumber() should never have been doing lowercasing, but historically it has so we need a way to prevent it
- Consider disallowing multiple queries in PQexec() as an additional barrier to SQL injection attacks
- Add PQexecf() that allows complex parameter substitution
- Add SQLSTATE and severity to errors generated within libpq itself
- Add support for interface/ipaddress binding to libpq
- Allow access to the database via HTTP
- See HTTP_API
- Improve storage of deferred trigger queue
- Right now all deferred trigger information is stored in backend memory. This could exhaust memory for very large trigger queues. This item involves dumping large queues into files, or doing some kind of join to process all the triggers, some bulk operation, or a bitmap.
- Allow triggers to be disabled in only the current session.
- This is currently possible by starting a multi-statement transaction, modifying the system tables, performing the desired SQL, restoring the system tables, and committing the transaction. ALTER TABLE ... TRIGGER requires a table lock so it is not ideal for this usage.
- With disabled triggers, allow pg_dump to use ALTER TABLE ADD FOREIGN KEY
- If the dump is known to be valid, allow foreign keys to be added without revalidating the data.
- When statement-level triggers are defined on a parent table, have them fire only on the parent table, and fire child table triggers only where appropriate
- Tighten trigger permission checks
- Allow BEFORE INSERT triggers on views
- Add database and transaction-level triggers
- Reduce locking requirements for creating a trigger
- Avoid requirement for "AFTER" trigger functions to return a value
- Allow creation of inline triggers
- Allow inherited tables to inherit indexes, UNIQUE constraints, and primary/foreign keys
- Honor UNIQUE INDEX on base column in INSERTs/UPDATEs on inherited table, e.g. INSERT INTO inherit_table (unique_index_col) VALUES (dup) should fail
- The main difficulty with this item is the problem of creating an index that can span multiple tables.
- Determine whether ALTER TABLE / SET SCHEMA should work on inheritance hierarchies (and thus support ONLY). If yes, implement it.
- ALTER TABLE variants sometimes support recursion and sometimes not, but this is poorly/not documented, and the ONLY marker would then be silently ignored. Clarify the documentation, and reject ONLY if it is not supported.
- Prevent index uniqueness checks when UPDATE does not modify the column
- Uniqueness (index) checks are done when updating a column even if the column is not modified by the UPDATE. However, HOT already short-circuits this in common cases, so more work might not be helpful.
- Allow the creation of on-disk bitmap indexes which can be quickly combined with other bitmap indexes
Such indexes could be more compact if there are only a few distinct values. Such indexes can also be compressed. Keeping such indexes updated can be costly.
- Re: Bitmap index AM
- Bitmap index thoughts
- Stream bitmaps
- Re: Bitmapscan changes - Requesting further feedback
- Updated bitmap index patch
- Reviewing new index types (was Re: [PATCHES] Updated bitmap indexpatch)
- Bitmap Indexes: request for feedback
- http://email@example.com
- Allow accurate statistics to be collected on indexes with more than one column or expression indexes, perhaps using per-index statistics
- Re: Simple join optimized badly?
- Stats for multi-column indexes
- Cross-column statistics revisited
- Multi-Dimensional Histograms
- http://archives.postgresql.org/pgsql-hackers/2010-12/msg00913.php
- http://archives.postgresql.org/pgsql-hackers/2010-12/msg02179.php
- http://archives.postgresql.org/pgsql-hackers/2011-01/msg00459.php
- http://archives.postgresql.org/pgsql-hackers/2011-02/msg02054.php
- http://archives.postgresql.org/pgsql-hackers/2011-04/msg01731.php
- http://archives.postgresql.org/pgsql-hackers/2011-03/msg00894.php
- http://archives.postgresql.org/pgsql-hackers/2011-09/msg00679.php
- Consider smaller indexes that record a range of values per heap page, rather than having one index entry for every heap row
- This is useful if the heap is clustered by the indexed values.
- Add REINDEX CONCURRENTLY, like CREATE INDEX CONCURRENTLY
- This is difficult because you must upgrade to an exclusive table lock to replace the existing index file. CREATE INDEX CONCURRENTLY does not have this complication. This would allow index compaction without downtime.
- Allow multiple indexes to be created concurrently, ideally via a single heap scan
- pg_restore allows parallel index builds, but it is done via subprocesses, and there is no SQL interface for this. Cluster could definitely benefit from this.
- Consider sorting entries before inserting into btree index
- Allow creation of an index that can do comparisons to test if a value is between two column values
- Consider using "effective_io_concurrency" for index scans
- Currently only bitmap scans use this, which might be fine because most multi-row index scans use bitmap scans.
- Fix problem with btree page splits during checkpoints
- Allow "loose" or "skip" scans on btree indexes in which the first column has low cardinality
- Make the planner's "special index operator" mechanism extensible
- Fix performance issues in contrib/seg and contrib/cube GiST support
- Add hash WAL logging for crash recovery
- Consider whether duplicate keys should be sorted by block/offset
- Consider being smarter about memory and external files used during sorts
- [D] Allow sorts to use more available memory
- Allow sorts of skinny tuples to use even more available memory.
- Now that it is not limited by MaxAllocSize, don't limit by INT_MAX either.
- http://email@example.com
- Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options and whether fsync does anything
- Ideally this requires a separate test program like /contrib/pg_test_fsync that can be run at initdb time or optionally later.
- Consider sorting writes during checkpoint
Cache Usage
- Provide a way to calculate an "estimated COUNT(*)"
- Perhaps by using the optimizer's cardinality estimates or random sampling.
- Consider automatic caching of statements at various levels:
- Parsed query tree
- Query execute plan
- Query results
- Consider increasing internal areas (NUM_CLOG_BUFFERS) when shared buffers is increased
- Consider decreasing the amount of memory used by PrivateRefCount
- Consider allowing higher priority queries to have referenced buffer cache pages stay in memory longer
- Improve cache lookup speed for sessions accessing many relations
- Auto-fill the free space map by scanning the buffer cache or by checking pages written by the background writer
- Allow concurrent inserts to use recently created pages rather than creating new ones
- Consider having single-page pruning update the visibility map
- https://commitfest.postgresql.org/action/patch_view?id=75
- Re: visibility maps and heap_prune
- Improve tracking of total relation tuple counts now that vacuum doesn't always scan the whole heap
- Bias FSM towards returning free space near the beginning of the heap file, in hopes that empty pages at the end can be truncated by VACUUM
- Consider a more compact data representation for dead tuple locations within VACUUM
- Provide more information in order to improve user-side estimates of dead space bloat in relations
- Improve locking behaviour of vacuum during trailing page truncation
- Reduce the number of table scans performed by vacuum
- Vacuum Gin indexes in physically order rather than logical order
- Avoid creation of the free space map for small tables
- Prevent long-lived temporary tables from causing frozen-xid advancement starvation
- The problem is that autovacuum cannot vacuum them to set frozen xids; only the session that created them can do that.
- Prevent autovacuum from running if an old transaction is still running from the last vacuum
- Have autoanalyze of parent tables occur when child tables are modified
- Allow visibility map all-visible bits to be set even when an auto-ANALYZE is running
- Allow parallel cores to be used by vacuumdb
- Improve autovacuum tuning
- Improve setting of visibility map bits for read-only and insert-only workloads
- Fix priority ordering of read and write light-weight locks
- Fix problem when multiple subtransactions of the same outer transaction hold different types of locks, and one subtransaction aborts
- Allow UPDATEs on only non-referential integrity columns not to conflict with referential integrity locks
- Improve deadlock detection when a page cleaning lock conflicts with a shared buffer that is pinned
- Detect deadlocks involving LockBufferForCleanup()
- Allow finer control over who is cancelled in a deadlock
Startup Time Improvements
- Experiment with multi-threaded backend for backend creation
- This would prevent the overhead associated with process creation. Most operating systems have trivial process creation time compared to database startup overhead, but a few operating systems (Win32, Solaris) might benefit from threading. Also explore the idea of a single session using multiple threads to execute a statement faster.
- Allow backends to change their database without restart
- This allows for faster server startup.
Write-Ahead Log
- Eliminate need to write full pages to WAL before page modification
Currently, to protect against partial disk page writes, we write full page images to WAL before they are modified so we can correct any partial page writes during recovery. These pages can also be eliminated from point-in-time archive files.
- Re: Index Scans become Seq Scans after VACUUM ANALYSE
- http://archives.postgresql.org/pgsql-hackers/2011-05/msg01191.php
- WIP double writes
- double writes
- Double-write with Fast Checksums
- double writes using "double-write buffer" approach
- http://archives.postgresql.org/pgsql-hackers/2012-10/msg01463.php
- When full page writes are off, write CRC to WAL and check file system blocks on recovery
- If CRC check fails during recovery, remember the page in case a later CRC for that page properly matches. The difficulty is that hint bits are not WAL logged, meaning a valid page might not match the earlier CRC.
- Write full pages during file system write and not when the page is modified in the buffer cache
- This allows most full page writes to happen in the background writer. It might cause problems for applying WAL on recovery into a partially-written page, but later the full page will be replaced from WAL.
- Reduce WAL traffic so only modified values are written rather than entire rows
- Allow WAL information to recover corrupted pg_controldata
- Find a way to reduce rotational delay when repeatedly writing last WAL page
- Currently fsync of WAL requires the disk platter to perform a full rotation to fsync again. One idea is to write the WAL to different offsets that might reduce the rotational delay.
- Speed WAL recovery by allowing more than one page to be prefetched
- This should be done utilizing the same infrastructure used for prefetching in general to avoid introducing complex error-prone code in WAL replay.
- Improve WAL concurrency by increasing lock granularity
- Be more aggressive about creating WAL files
- Have resource managers report the duration of their status changes
- Close deleted WAL files held open in *nix by long-lived read-only backends
Optimizer / Executor
- Consider increasing the default values of from_collapse_limit, join_collapse_limit, and/or geqo_threshold
- Improve ability to display optimizer analysis using OPTIMIZER_DEBUG
- Log statements where the optimizer row estimates were dramatically different from the number of rows actually found?
- Consider compressed annealing to search for query plans
- This might replace GEQO.
- Improve use of expression indexes for ORDER BY
- Modify the planner to better estimate caching effects
- Allow shared buffer cache contents to affect index cost computations
- Allow the CTE (Common Table Expression) optimization fence to be optionally disabled
- Consider using a hash for joining to a large IN (VALUES ...) list
- Allow single batch hash joins to preserve outer pathkeys
- "lazy" hash tables - look up only the tuples that are actually requested
- Avoid building the same hash table more than once during the same query
- Avoid hashing for distinct and then re-hashing for hash join
Background Writer
- Consider having the background writer update the transaction status hint bits before writing out the page
- Implementing this requires the background writer to have access to system catalogs and the transaction status log.
- Consider adding buffers the background writer finds reusable to the free list
- Automatically tune bgwriter_delay based on activity rather then using a fixed interval
- Consider whether increasing BM_MAX_USAGE_COUNT improves performance
- Test to see if calling PreallocXlogFiles() from the background writer will help with WAL segment creation latency
Concurrent Use of Resources
- Do async I/O for faster random read-ahead of data
Async I/O allows multiple I/O requests to be sent to the disk with results coming back asynchronously.
- Asynchronous I/O Support
- Re: random_page_costs - are defaults of 4.0 realistic for SCSI RAID 1
- There's random access and then there's random access
- Bitmap index scan preread using posix_fadvise (Was: There's random access and then there's random access)
The above patch is already applied as of 8.4, but it still remains to figure out how to handle plain indexscans effectively.
- Experiment with multi-threaded backend for better I/O utilization
- This would allow a single query to make use of multiple I/O channels simultaneously. One idea is to create a background reader that can pre-fetch sequential and index scan pages needed by other backends. This could be expanded to allow concurrent reads from multiple devices in a partitioned table.
- Experiment with multi-threaded backend for better CPU utilization
- This would allow several CPUs to be used for a single query, such as for sorting or query execution.
- SMP scalability improvements
- Allow user configuration of TOAST thresholds
- Reduce unnecessary cases of deTOASTing
- Reduce costs of repeat de-TOASTing of values
- Expand pg_stat_activity for easier integration with monitoring tools
- Add column to pg_stat_activity that shows the progress of long-running commands like CREATE INDEX and VACUUM
- EXPLAIN progress info
- The CLUSTER/VACUUM FULL implementation would also be useful to track this way
- Have pg_stat_activity display query strings in the correct client encoding
- [E] Expose pg_controldata via an SQL interface
- Helpful for monitoring replicated databases
- Add entry creation timestamp column to pg_stat_replication
- Allow reporting of stalls due to wal_buffer wrap-around
- Restructure pg_stat_database columns tup_returned and tup_fetched to return meaningful values
Miscellaneous Performance
- Use mmap() rather than shared memory for shared buffers?
- This would remove the requirement for SYSV SHM but would introduce portability issues. Anonymous mmap (or mmap to /dev/zero) is required to prevent I/O overhead. We could also consider mmap() for writing WAL.
- Rather than consider mmap()-ing in 8k pages, consider mmap()'ing entire files into a backend?
- Doing I/O to large tables would consume a lot of address space or require frequent mapping/unmapping. Extending the file also causes mapping problems that might require mapping only individual pages, leading to thousands of mappings. Another problem is that there is no way to _prevent_ I/O to disk from the dirty shared buffers so changes could hit disk before WAL is written.
- Consider ways of storing rows more compactly on disk:
- Reduce the row header size?
- Consider reducing on-disk varlena length from four bytes to two because a heap row cannot be more than 64k in length
- Consider transaction start/end performance improvements
- Allow configuration of backend priorities via the operating system
- Though backend priorities make priority inversion during lock waits possible, research shows that this is not a huge problem.
- Consider increasing the minimum allowed number of shared buffers
- Consider if CommandCounterIncrement() can avoid its AcceptInvalidationMessages() call
- Consider Cartesian joins when both relations are needed to form an indexscan qualification for a third relation
- Consider not storing a NULL bitmap on disk if all the NULLs are trailing
- Sort large UPDATE/DELETEs so it is done in heap order
- Consider decreasing the I/O caused by updating tuple hint bits
- Hint Bits and Write I/O
- Re: [HACKERS] Hint Bits and Write I/O
- http://archives.postgresql.org/pgsql-hackers/2010-10/msg00695.php
- http://archives.postgresql.org/pgsql-hackers/2010-11/msg00792.php
- http://archives.postgresql.org/pgsql-hackers/2011-01/msg01063.php
- http://archives.postgresql.org/pgsql-hackers/2011-03/msg01408.php
- http://archives.postgresql.org/pgsql-hackers/2011-03/msg01453.php
- Avoid the requirement of freezing pages that are infrequently modified
If all rows on a page are visible, it is possible to set a bit in the visibility map (once the visibility map is 100% reliable) and not need to freeze the page, avoiding a page rewrite
- http://firstname.lastname@example.com
- http://archives.postgresql.org/pgsql-hackers/2010-06/msg00082.php
- http://firstname.lastname@example.com
- http://email@example.com
- http://firstname.lastname@example.com
- Avoid reading in b-tree pages when replaying vacuum records in hot standby mode
- Restructure truncation logic to be more resistant to failure
- This also involves not writing dirty buffers for a truncated or dropped relation
- Consider adding logic to increase large tables by more than 8k
- This would reduce file system fragmentation
Miscellaneous Other
- Deal with encoding issues for filenames in the server filesystem
- Deal with encoding issues in the output of localeconv()
- Provide schema name and other fields available from SQL GET DIAGNOSTICS in error reports
- Add 64-bit support to /contrib/pgbench
Source Code
- Consider a faster CRC32 algorithm
- Allow creation of universal binaries for Darwin
- Consider GnuTLS if OpenSSL license becomes a problem
- Research use of signals and sleep wake ups
- Allow C++ code to more easily access backend code
- Consider simplifying how memory context resets handle child contexts
- Create three versions of libpgport to simplify client code
- Improve detection of shared memory segments being used by others by checking the SysV shared memory field 'nattch'
- Implement the non-threaded Avahi service discovery protocol
- Reduce data row alignment requirements on some 64-bit systems
- Restructure TOAST internal storage format for greater flexibility
- Add regression tests for pg_dump/restore
- Research different memory allocation methods for lists
- Consider removing the attribute options cache
- Restructure /contrib section
- Consider adding explicit huge page support
- Handle large object comments
- This is difficult to do because the large object doesn't exist when --schema-only is loaded.
- Migrate pg_statistic by dumping it out as a flat file, so analyze is not necessary
- pg_class.oid is not preserved so schema.tablename must be used.
- Improve testing, perhaps using the buildfarm
- The buildfarm has access to multiple versions of PostgreSQL.
- Create machine-readable output of pg_controldata
- This would avoid parsing its output. The problem is we need pg_controldata output from both the old and new clusters so we would need to support both formats.
- Find cleaner way to start/stop dedicated servers for upgrades
- Consider a way to run pg_upgrade on standby servers
- Improve signal handling
- Convert MSVC build system to remove most batch files
- Fix MSVC NLS support, like for to_char()
- Find a correct rint() substitute on Windows
- Fix global namespace issues when using multiple terminal server sessions
- Change from the current autoconf/gmake build system to cmake
- Improve consistency of path separator usage
- Fix cross-compiling on Windows
- Reduce file statistics overhead on directory reads
Wire Protocol Changes
- Let the client indicate character encoding of database names, user names, and passwords
- Mark result columns as known-not-null when possible
- Use compression
- If SSL is used, hopefully avoid the overhead of key negotiation and encryption
- Update clients to use data types, typmod, schema.table.column names of result sets using new statement protocol
- Set protocol for wire format negotiation
- Make sure upgrading to a 4.1 protocol version will actually work smoothly
- Allow multi-state authentication
- Identify the affected object in CommandComplete message?
- [E] Add contrib functions to the index
- Add the functions and GUCs in the contrib modules to the documentation index: per list discussion
- Convert single quotes to apostrophes in the PDF documentation
- Provide a manpage for postgresql.conf
- Change the manpage-generating toolchain to use the new XML-based docbook2x tools
- Consider changing documentation format from SGML to XML
- Document support for N' ' national character string literals, if it matches the SQL standard
- Add diagrams to the documentation
Exotic Features
- Add pre-parsing phase that converts non-ISO syntax to supported syntax
- This could allow SQL written for other databases to run without modification.
- Add features of Oracle-style packages
- A package would be a schema with session-local variables, public/private functions, and initialization functions. It is also possible to implement these capabilities in any schema and not use a separate "packages" syntax at all.
- Consider allowing control of upper/lower case folding of unquoted identifiers
- Add autonomous transactions
- Give query progress indication
- Rethink our type system
Features We Do Not Want
The following features have been discussed ad nauseum on the PostgreSQL mailing lists and the consensus has been that the project is not interested in them. As such, if you are going to bring them up as potential features, you will want to be familiar with all of the arguments against these features which have been previously made over the years. If you decide to work on such features anyway, you should be aware that you face a higher-than-normal barrier to get the Project to accept them.
- All backends running as threads in a single process (not wanted)
- This eliminates the process protection we get from the current setup. Thread creation is usually the same overhead as process creation on modern systems, so it seems unwise to use a pure threaded model, and MySQL and DB2 have demonstrated that threads introduce as many issues as they solve. Threading specific operations such as I/O, seq scans, and connection management has been discussed and will probably be implemented to enable specific performance features. Moving to a threaded engine would also require halting all other work on PostgreSQL for one to two years.
- "Oracle-style" optimizer hints (not wanted)
- Optimizer hints, as implemented in Oracle and other RDBMSes, are used to work around problems in the optimizer and introduce upgrade and maintenance issues. We would rather have such problems reported and fixed. We have discussed a more sophisticated system of per-class cost adjustment instead, but a specification remains to be developed. See Optimizer Hints Discussion for further information.
- Embedded server (not wanted)
- While PostgreSQL clients runs fine in limited-resource environments, the server requires multiple processes and a stable pool of resources to run reliably and efficiently. Stripping down the PostgreSQL server to run in the same process address space as the client application would add too much complexity and failure cases. Besides, there are several very mature embedded SQL databases already available.
- Obfuscated function source code (not wanted)
- Obfuscating function source code has minimal protective benefits because anyone with super-user access can find a way to view the code. At the same time, it would greatly complicate backups and other administrative tasks. To prevent non-super-users from viewing function source code, remove SELECT permission on pg_proc.
- Indeterminate behavior for the GROUP BY clause (not wanted)
- At least one other database product allows specification of a subset of the result columns which GROUP BY would need to be able to provide predictable results; the server is free to return any value from the group. This is not viewed as a desirable feature. PostgreSQL 9.1 allows result columns that are not referenced by GROUP BY if a primary key for the same table is referenced in GROUP BY.


text:
Home > California > Calistoga
Calistoga Pet-Friendly Lodgings
For more information about California
- California
- PO Box 1499
- Sacramento, CA 95812
- In State # (916) 322-2881
- Toll Free # (800) 462-2543
- Internet: http://gocalif.ca.gov
Thank you for submitting your feedback. Your comments are very helpful to other travelers and their pets. We will post your review shortly.
There was an error submitting your review. Please make sure you've entered your name and email address and resubmit.
You comment has already been submitted and is under review.
Thanks! We very much appreciate your help in keeping the policies reliable and accurate for other traveling pet owners and their pets. This policy will be updated upon a final verification.
There was an error saving the information you submitted. Please make sure you filled out all fields and resubmit. If the issue persists, please email us at [email protected].
© 2016 petswelcome.com, Inc. Conditions of Use. Please read before using this site.

subset: commoncrawl


text:
3M Tapes & 3M Adhesives > Specialty Products > Splicing Tape
Splicing Tape
Narrow by:
Adhesive Type
Backing Material
Thickness (Metric)
Splicing Tape
Repulpable and Non-Repulpable Splicing Tapes for paper mills, converters, newspapers and web printersFrom core starting to roll closing or tabbing, and all the splices in-between, 3M™ Splicing Tapes offers choices and dependability to keep production at full speed. Backings and adhesives are engineered for optimum strength on every type of splice, flying, overlap, butt, and general purpose.
Learn about Splittable Flying Splice Tapes...
Flying with greater success, less cost, less work.3M™ Splittable Flying Splice Systems help lower overall production cost with less labor, waste and number of splicing products. These unique splittable tape laminates provide fast and easy application for flying splices in paper manufacturing, converting and printing operations.
• High shear strength provides reliable splices with paper, polyethylene, polypropylene, foil and more.
• Fiber-free eases contamination worries for inks, plates and felt/blankets
• Consistent opening force keeps the work flowing
• Freedom from sticky surfaces once splice is made ensures easy unroll
• All-in-one double coated system features tabbing side, splicing side and low release split liner
3M™ Non-Repulpable Splicing Tapes Flyer
3M™ Repulpable Splicing System Get on a Roll Brochure
Repulpable Flying Splice Systems R9992 and R9993 Data Sheet
Repulpable Splittable Flying Splice Systems Application Bulletin
Splittable Flying Splice System R9990 Data Sheet
Let's Work Together
Contact us if you need product, technical or application advice or want to collaborate with a 3M Technical Specialist.
Brochures and Guides
Featured Products


text:
this wiki
Most significant projects.
- January 2013: Solar Circle shares insights they have learned in Tanzania - The NGO Solar Circle has learned many things from their solar cooking program in Masasi, southern Tanzania. People will use solar cookers if they are efficient and affordable, which is often a problem for subsistence farmers who are most in need of the cookers even when the cookers are heavily subsidized. However, they have also learned that people will work hard to earn a solar cooker. The group has created a bartering system with community leaders. The community chooses a service project and the beneficiaries organize and oversee the effort. Participants earn an solar oven for their involvement. So far, the program has distributed more than 3000 solar ovens, and built 40 houses for people who are sick, elderly, widowed, or disabled. Because the community chooses the project and beneficiary, there's an eagerness to work together. Surrounding villages have heard of the cookers and the program, so spreading the word has been easy. They cannot keep up with demand. The barter program relies on external help with finances, but community service represents the same effort that of money earned in outside employment. Solar Circle values that effort, and raises what money it can from friends to expand the program.
- See other Most significant solar cooking projects worldwide.
News and Recent Developments
- January 2013: Macedonia Ministry provides solar and fireless cookers for widows - Widows in Tanzania live with an unjustified stigma, that can often include abuse. Despite the government's efforts to help educate the public, prejudice still exists. Unfortunately, due in some part to AIDS, the number of single parent households are on the rise. In 2010 and 2011 the Macedonia Ministry in collaboration with the nonprofit, Kyoto Twist, provided more than seventy-five widows with solar box cookers and fireless cookers in the city of Moshi, within the Kilimanjaro Region. These cookers have helped save the environment as fewer trees are cut for fuelwood. The income incentive program has allowed the women to pay the fees to send their children to school, and be able to get them medical attention. They are happy and want this project continued.
- May 2012: Association - The Japan Solar Cooking Association participated in "Jambo! Kiyosato Tanzania Village" held May 3rd through the 5th, and hosted by the Educational Experiment Project in Kiyosato, Yamanashi Pref. The event introduced nature and culture of Tanzania with movies and craft shops. Since we have been promoting solar cookers in Tanzania for several years, we exhibited solar cookers and demonstrated solar cooking in the village.
- October 2011: Two members of Japan Solar Cooking Association, Yasuko Torii and Toyoko Nishikawa visited 5 villages around Kitulo National Park located in the south western part of Tanzania to promote solar cooking. This was the fourth visit since January 2008. They exhibited parabolic cookers, handmade box and panel type cookers and demonstrated cooking at October Mpeto Festival 2011 held on October 2 in Matamba town. Many visitors watched and enjoyed tasting solar baked cakes and popcorn.
- August 2011: Family energy project reaches 400 households in Tanzania - This Summer Childreach International launched its very own East African Family Energy Project as part of its climate change initiative. This innovative project aims to provide no less than one million rural East African households with access to renewable energy services. The initiative, the first of its kind, addresses issues of education, the health of women and children, environmental degradation as well as climate change. Working closely with local communities, the Family Energy Project offers four technologies to help people in their daily lives, including a solar cooker (winner of the Financial Times Climate Change Challenge), a renewable biomass stove (for when the sun is not shining), a solar lighting system and a solar water purification system. These technologies prevent people from having to collect or buy firewood, and remove the health issues caused by smoke, keeping children in school and reducing carbon emissions. July of 2011 saw the project launched in the first 400 households in the Kilimanjaro region.Women in these communities in particular were victims of lung and eye diseases as a result of cooking toxic woods indoors while children often spent up to three hours a day collecting firewood, time they would usually have spent in school. An ongoing study is being conducted in these villages to measure how the project is contributing to the achievement of the Millennium Development Goals. Read more...]
- January 2011: Global Resource Alliance received a generous grant from the Ferguson Foundation to offer 50 solar cooking workshops in the Mara Region of Tanzania and over 1,000 subsidized Solar CooKits. This, in addition to a grant from WeForest and Deliotte Belgium to plant 130,000 trees over the next two years, will help restore this heavily deforested area and prevent many health problems and deaths related to smoke inhalation.
- November 2010: Stellaris Ministries led solar cooking trainings in the community of Singida this past summer. They are making a documentary film about the solar cooking needs of the people of Tanzania. A preview clip of the film is available for comment.
- August 2010: A two-week exhibition to promote science education is currently taking place at the Alliance Francaise in Dar es Salaam. It's an interactive and educative exhibition under the theme 'The earth's future is in our hands'. The event, organised by the French embassy in collaboration with the Alliance Francaise and the International Institute of Tropical Agriculture, will be held for two weeks. It started August 24, and will end September 6. This year's event is meant to provide students and the public with alternatives to energy, says Abel Shuma, an official of the Alliance Francaise. The students are able perform a number of experiments, including solar cooking. Exhibition promotes science education -The Citizen
- August 2010: Global Resource Alliance won the first place regional award and second place national award at "Nane Nane," Tanzania's largest farming and agriculture expo for their presentation on solar cooking. Every year over ten thousand people gather for the three day Nane Nane (8/8) celebration. GRA was invited by the Tanzanian government to present permaculture, solar cooking and rammed earth block construction. The exhibit was received by over 1,000 attendees who were treated to samples of solar cooked meat and sweet potatoes. GRA's staff educated people on the many benefits of solar cooking from smokeless cooking to preventing deforestation to easy water pasteurization. On the final day, GRA presented a solar cooked cake to the Guest of Honor and other government officials.
- July 2010: Primary school pupils in four districts in Tanzania will benefit from the use of solar cookers distributed by an institution called Solar Oven Society (SOS) Africa. A total of 240 solar cookers will be distributed to primary schools in the four districts. The use of the cookers will reduce unscrupulous tree felling. Schools to get solar cookers
- February 2010: Sol Suffit is working to bring its super-clean and super-simple solar cooker to developing nations, to replace the environmentally-devastating traditional cooking methods that rely on firewood and charcoal. The project started in the Djoudj National Bird Park, a World Heritage site in Senegal, and now has also set up shop in Pikine, a suburb of Dakar, across the continent in Tanzania, and is currently working to establish a presence in Cameroon with a partner organization. Project leader Axel Vanderhaeghen said, based on "the response from everyone who gets to know the project, we're very certain it won't stop in Cameroon. Also, we found a way to introduce bigger solar cookers now, thanks to microcredits." They are looking for partner organizations to help with their efforts. Read more at: Solar Cookers Taking Hold in Africa: Want to Help?
- November 2008: Solar Cookers International (SCI) recently collaborated with the upstart solar organization TanzSolar to provide a comprehensive solar presentation to 20 local professionals in Musoma. Founded by Marianne Walpert of California, USA, TanzSolar provides affordable photovoltaic solar panels to rural internet companies, individuals and small businesses in northern Tanzania, and is interested in working with SCI to spread solar cooking and solar water pasteurization in northern Tanzania. SCI's eastern Africa staff members are currently planning a five-day solar cooking and water treatment workshop at the TanzSolar facilities in Musoma, as well as future collaborations in the region. In addition, TanzSolar has become a distributor of solar lanterns that SCI hopes to utilize in some of its project areas in the future.
- September 2008: Karyn Ellis of Solar Cookers International (SCI) writes: "I traveled to Musoma, Tanzania to pursue collaborations between SCI and TanzSolar ~ a newly established nonprofit that will provide affordable solar panels to local internet organizations, health clinics, schools, small businesses and individuals throughout Tanzania. While TanzSolar specializes in photovoltaic (PV) systems, they are interested in expanding their solar reach and open to working with SCI to bring simple solar cooking and water pasteurization techniques to the area as well. Marianne Walpert and her sons showed me great hospitality while I was in Musoma, treating me like family and taking time from their busy schedules to help with a solar demo and introduce me to some active and influential business people in the community; like Sergio Velasquez of Mano a Mano, and Robi Machaba of JuaSun, a local internet company that works closely with Marianne and TanzSolar. With their help we rounded up a good group of locally active individuals interested in improving their environment by providing alternative methods of cooking, treating water and generating income in their community. Together we organized a very successful day of informational presentations on solar cooking and water pasteurization ideologies, processes and techniques, generating a great deal of participation and interest. With the help of those listed above and SCI's East Africa Office, SCI and TanzSolar will plan to host a 5-day integrated solar workshop on the TanzSolar grounds later in the year." See the Photo Blog here: http://www.solarcookers.org/news/2008/06/tanzania-and-tanzsolar.html
- March 2008: The Okemos, Michigan (USA) nonprofit organization Solar Circle continues its efforts to make solar cooking an option for women in Tanzania. Solar Circle works with local artisans to manufacture solar box cookers from Cyprus wood, aluminum printing plates, glass, used rubber, and other materials available in Tanzania. However, these cookers cost $70 or more to build, and are heavily subsidized to be affordable. Solar Circle has partnered with engineering students at Michigan State University (MSU) to design lighter, less expensive models that can still be made with local materials. Last year, professor Craig Somerton took nine of the students to Masasi, Tanzania to work with Brother Yohannes Mango and his team of artisans at the Benedictine Abbey in Ndanda. According to the Solar Circle Web site, the "students came armed with sound scientific theories on the behavior of light and heat, and met up with artisans experienced in constructing solar ovens. They worked together to test and improve the ovens. The artisans learned some theory, the students learned some practicalities of building without power tools and computer enhancements." The students also spent time teaching the local population how to use the solar cookers. The on-line journal MSU Today International reported that, while the students were in Masasi, professor Brian Thompson spent time in Dar es Salaam and Morogoro working "to make the use of solar ovens a nationwide reality by networking with numerous agencies before formulating a broad initiative" involving businesses, governmental entities, and schools. The Shell foundation, for example, has since funded a solar cooking workshop in Morogoro at Sokoine University. As noted on the Solar Circle Web site, many agency representatives, entrepreneurs and policy makers attended and "gathered to learn about solar cooking and brainstorm best ways to promulgate solar cooking in Tanzania." A number of solar cookers were on display, including models from South Africa, Netherlands, and the United States.
- 2008: Moto uko wapi? "Where is the fire?" This is the question asked by people experiencing solar cooking and solar cooked foods for the very first time. Dieter Aneca, from Belgium, and Calvin Chikawe assisted by two local women are causing a stir solar cooking in Morogoro. Deiter writes; "In 2007 I finished my studies in Belgium in the environmental sector. Before coming to Tazmania, I came in contact with Sol Suffit, who have solar cooking projects in Senegal. They gave me two cookers to use in Tazmania, to test solar cooking myself. Following up with Sol Suffit, we decided to start a project here and named it Sola Sufuria. In this project we plan to make solar cookers available in and outside of the Morogoro region. Solar Cookers International (EA) has assisted us in sourcing for reflective aluminum foil papers and plastic cooking bags as well as leading us to a supplier for the correct glue. We are grateful to SCI (EA) and will continue to work with them as we plan for a permanent production center to meet the growing demand.
- Spring 2007: The Baptist mission is busy spreading solar cooking knowledge and skills in Dodoma. Having bought four CooKits initially, they made more from carton and glue and recently requested 24 more. (Source: the Appropriate Technology Development Resource Center in Dodoma, Tanzania)
- April 2007: The Web site of Solar Circle tells an inspiring story of how a few people can make a big difference by working together. Solar Circle is a US-based nonprofit organization made up of a network of friends, mostly women. A few years ago, Solar Circle took two dozen American-made Global Sun Ovens® to Masasi, Tanzania, where they were enthusiastically received. However, people quickly saw the impossibility of importing enough ovens to overcome high purchase and transport costs. Consequently, Solar Circle has started a small industry in Tanzania to build solar box cookers. Several Tanzanian craftspeople have joined in the effort. They make the outer box from cypress wood, which is treated with cashew nut oil to repel insects. Reflective surfaces are made by collecting and cleaning discarded lithographic plates, and crafting them into the proper shapes. Gaskets are made from used tires or shoe leather. Students from the Mechanical Engineering Design Program at Michigan State University (USA) are collaborating to develop a model that is lighter, cheaper and more efficient, using only domestic Tanzanian materials and manufacturing processes. Mlelwa, one Tanzanian who built a solar oven, coined a new proverb: "People say 'Jua kali,' but we know 'Jua ni mali.'" ("People say the sun is hot today, but we know the hot sun is wealth"). Contact: Solar Circle
- June 2006: Solar Household Energy, Inc.'s Director of Programs for Latin America and East Africa, Camille McCarthy, traveled to Kenya and Tanzania to meet with governmental agencies, NGOs, and private sector representatives to explore the feasibility of cooperative solar cooking ventures. Many groups expressed interest in SHE pilot solar cooking projects. SHE expects to conduct initial solar cooking training, marketing and sales projects in Kenya and Tanzania in early 2007.
- March 2006: Sperancea Gabone recently held a solar cooker exhibition at Mawenzi primary school in Moshi, Tanzania. Over 20 people gathered to learn about solar cooking and to taste solar-cooked food, including ugali, meat, beans and rice. Rolf Behringer, of the International Solar Energy Society (ISES), led a solar box cooker construction workshop at nearby Karanga Technical School, and joined Ms. Gabone at the exhibition. In addition to solar box cookers, retained-heat cookers were also used. (A retained-heat cooker, also known as a fireless cooker or "hay box," is an insulated enclosure in which is set a pot of food that has been brought to a boil, allowing it to continue to cook after being removed from its heat source.) Contact: Sperancea Gabone
- July 2005: AltEner Energy Technologies presented a 3-square-meter Scheffler reflector for observation at the 19th Mara Development Forum in Mugumu, Serengeti District, Tanzania. Scheffler reflectors are large parabolic dishes that are often used to heat a cooking medium (such as water to make steam) that is circulated to one or more indoor cooking stations. This is a smaller version. Mr. Charles Onyango-Oloo of AltEner says the new design is user friendly since "the port is mounted on one side and not in the middle of the reflector dish." AltEner is currently developing a 1.5-square-meter, manually tracked Scheffler cooker.
The History of Solar Cooking in Tanzania
Wide ranges of projects are found in Tanzania, many located in schools, missions, or local training centers. Solarafrica, a Zanzibar organization, has promoted both basketry and solar ovens on the island of Zanzibar for many years, sponsored by the Esperanto Club of Lund, Sweden. Early in the development of connections between the two areas, the shortages of fuel for cooking were noted. Swedish participants have developed a number of simple technologies that can be locally made, such as parabolics of cardboard lined with foil, and another formed from a large flat basket. (Solar Cooker Review, Sept '02).
Yet another project on Zanibar, sponsored by a German group, Mama Earth, uses both parabolic cookers and boxes, preferring to cook some food in the slower box and the parabolic for "speed cooking" rice, and also for dying plaited palm leaves for craft use.
In addition, the group is experimenting with the use of flattened beer cans as reflectors in a frame of wood or metal for homemade cookers.
The GEF Small Grants Programme funded a project by the Kagera Community Development Trust, Bukoba - KADET in 1999 that produced 40 solar box cookers. Progress reports showed that the technology was replicated in various parts of Kagera region.
Another German group, Solar Cooking Zanzibar, is also located on the large island offshore from the mainland of Tanzania. The focus of this group is craft and artisan development; they have used solar cookers to dye fabrics and basketry material for craftwork. Some of the profits have enabled members to purchase solar cookers for their own household use (Solar Cooker Review, Aug, '02). The German electric utility, Bayernwerke, has made possible the provision of parabolic cookers for a local fishing village, as well, and a number of sponsoring organizations have made possible the building of a workshop and solar powered kitchen. (Solar Cooker Review, Aug '00).
On mainland Tanzania, a religiously affiliated group, EAG (T)Church - MJIMWEMA in Kigoma produces locally made parabolic or "bowl" type cookers. The Evangelical Lutheran Church of Tanzania in Morogoro Province has conducted research on fuelwood use, and then began using parabolic cookers, sent from Germany, for cooking, pasteurizing water, and firing clay bricks. The Kilimanjaro Biolgas and Solar Centre sponsors many types of renewable energy and has been active in solar cooking promotion for many years. (SCI Rev Dec 00). Many of the devices promoted by Anna Pearce (see "multiple-nation" promoters section above) are in use in Tanzania, particularly the "Anahat" cooker/hatbox combination. Other organizations working in Tanzania are the Ilemi Secondary School of Mbeya, Net-Score of Malinyi, and Solar Innovations of Tanzania.
In the summers of 2001, 2002 and 2003, Project AHEAD, an American NGO, demonstrated the use of solar cookers for water pasteurization in two areas of Tanzania, first in Shinyanga District, in the northwest of the country, and the second in Kisarawe, near Dar es Salaam. National and district health officers have attended workshops on the technologies of water testing for contamination, followed by demonstration of the use of solar cookers for water pasteurization. In the summer of 2003, household surveys were conducted in both districts to serve as baseline data and an evaluation tool for a large project to be mounted in the period, 2004-2006, funds permitting. This will be the first major demonstration project focused on the use of solar cookers for this purpose. Because of the innovative nature of this project, a case study on this topic is included with this report.
[Information for this section was taken originally from State of the Art of Solar Cooking by Dr. Barbara Knudson]
Climate, Culture, and Special Considerations
Solar Cookers International has rated Tanzania as the #9 country in the world in terms of solar cooking potential (See: The 25 countries with the most solar cooking potential). The estimated number of people in Tanzania in sunny areas of the country but with fuel scarcity in 2020 is 7,500,000.
Tanzania is experiencing a demographic and an environmental crisis. Tanzania has a population of around 37 million. It has a fertility rate of almost five children per woman. This rapidly growing populace places extreme pressure on the environment. For example, forests are being diminished rapidly in significant part by demand for fuel wood. A case in point: between 1960 and 1980, the Amani forest in Tanzania was reduced by 50%. For every 28 trees cut in Africa today, only one is planted.
As forests around communities are degraded, women and children must forage for fuel wood further and further from home. In some places, women must camp overnight in the bush. When the distances become too great, some families must pay 25% to 50% of their income to buy cooking fuel.
See also
- Discussion of eastern Africa's suitability for solar cooking
- Solar cooker dissemination and cultural variables
Possible funders of solar cooking projects in Tanzania
- Sero Lease and Finance Ltd. (SELFINA)
- Youth Self Employment Foundation (YOSEFO)
- GEF Small Grants Programme
- See also general guidance on raising funds through grants and donations
- July 2008: East Africa Report - Karyn Ellis
Articles in the media
- 'August 2010: Statements from Global Resource Alliance Tanzania training officer, Christopher Gamba, with video Solar cooking reaches northern Tanzania - Africa News
- July 2010: Schools to get solar cookers- The Citizen Reporter, Dodoma
- October 2007: Purdue students build solar oven for use in Tanzania - Purdue University News
- December 2006: Student sows seeds of community-helping technology in Africa
External links
Audio and video
Solar cooking in Zanzibar
Manufacturers and vendors
Government agencies
Educational institutions
See also