===============================================================================
The core component of Apache Trafodion uses several BSD-like, MIT-like and PostgreSQL licenses:

+++++++++++++++++++++++++++++

BSD-3 clause for files:
   trafodion/core/sql/common/swsprintf.cpp
   trafodion/core/sql/common/swscanf.cpp

Copyright (c) 1990, 1993
   The Regents of the University of California.  All rights reserved.

 This code is derived from software contributed to Berkeley by
 Chris Torek.

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.
 3. Neither the name of the University nor the names of its contributors
    may be used to endorse or promote products derived from this software
    without specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 SUCH DAMAGE.

+++++++++++++++++++++++++++++

BSD-3 clause for file trafodion/core/sql/parser/ulexer.h

 Copyright (c) 1993 The Regents of the University of California.

 This code is derived from software contributed to Berkeley by
  Kent Williams and Tom Epperly.

 Redistribution and use in source and binary forms with or without
 modification are permitted provided that: (1) source distributions retain
 this entire copyright notice and comment, and (2) distributions including
 binaries display the following acknowledgement:  ``This product includes
 software developed by the University of California, Berkeley and its
 contributors'' in the documentation or other materials provided with the
 distribution and in all advertising materials mentioning features or use
 of this software.  Neither the name of the University nor the names of
 its contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.

+++++++++++++++++++++++++++++

MIT-Expat for files in: trafodion/core/sql/qmscommon/expat

 Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
                                and Clark Cooper
 Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
 Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
 Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
 Copyright 2000, Clark Cooper

 For details see trafodion/core/sql/qmscommon/expat/COPYING

+++++++++++++++++++++++++++++

===============================================================================
The DCS subcomponent of Apache Trafodion bundles source with BSD-like and
MIT-like licenses:

+++++++++++++++++++++++++++++

BSD-3 clause for files in:  
   trafodion/dcs/src/main/resources/dcs-webapps/master/datatables

 Copyright 2009 Allan Jardine. All Rights Reserved
 Copyright 2008-2012 Allan Jardine, all rights reserved.

For details see:
  trafodion/dcs/src/main/resources/dcs-webapps/master/datatables/license-bsd.txt

+++++++++++++++++++++++++++++

MIT-Expat for files in: 
   trafodion/dcs/src/main/resources/dcs-webapps/master/js/lib/jit.js

 Copyright (c) 2011 Sencha Inc. - Author: Nicolas Garcia Belmonte (http://philogb.github.com/)
 Copyright (c) 2006-2010 Valerio Proietti

 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.

+++++++++++++++++++++++++++++

MIT-Expat for files in:
   trafodion/dcs/src/main/resources/dcs-webapps/master/jquery-ui
   trafodion/dcs/src/main/resources/dcs-webapps/master/js/lib/jquery-1.11.0.js

 Copyright 2014 jQuery Foundation and other contributors
 (c) 2005, 2014 jQuery Foundation, Inc.

 Permission is hereby granted, free of charge, to any person obtaining a copy of
 this software and associated documentation files (the "Software"), to deal in the
 Software without restriction, including without limitation the rights to use, copy,
 modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
 and to permit persons to whom the Software is furnished to do so, subject to the
 following conditions:

 The above copyright notice and this permission notice shall be included in all copies
 or substantial portions of the Software.

 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
 FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 DEALINGS IN THE SOFTWARE.

++++++++++++++++++++++++++++++

The PostgreSQL Licence (PostgreSQL) for files in:
	trafodion/core/sql/common/ComJSON.cpp
	trafodion/core/sql/common/ComJSON.h
	trafodion/core/sql/common/ComJSONFuncs.cpp
	trafodion/core/sql/common/ComJSONStringInfo.cpp
	trafodion/core/sql/common/ComJSONStringInfo.h
	
PostgreSQL License is a liberal Open Source license, similar to the BSD or MIT licenses.

Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
Portions Copyright (c) 1994, Regents of the University of California

Permission to use, copy, modify, and distribute this software and its documentation for 
any purpose, without fee, and without a written agreement is hereby granted, provided that 
the above copyright notice and this paragraph and the following two paragraphs appear 
in all copies.

IN NO EVENT SHALL $ORGANISATION BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, 
INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF 
THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF $ORGANISATION HAS BEEN ADVISED OF THE POSSIBILITY 
OF SUCH DAMAGE.

$ORGANISATION SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED 
HEREUNDER IS ON AN "AS IS" BASIS, AND $ORGANISATION HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, 
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
++++++++++++++++++++++++++++++
